From 7e03a236fae70e9cf8610970d14f216113515e49 Mon Sep 17 00:00:00 2001 From: hheik <4469778+hheik@users.noreply.github.com> Date: Sat, 13 Sep 2025 01:35:31 +0300 Subject: [PATCH] Added simple day-night system and regrowing gatherables --- godot/nodes/sprite_daytime_toggler.gd | 14 ++++++++++++++ godot/nodes/sprite_daytime_toggler.gd.uid | 1 + godot/prefabs/player/player.tscn | 16 ++++++++++++++-- godot/prefabs/player/player_input.gd | 1 - godot/prefabs/tiles/berry_grower.gd | 13 +++++++++++++ godot/prefabs/tiles/berry_grower.gd.uid | 1 + godot/prefabs/tiles/blueberry.tscn | 19 +++++++++++++------ godot/prefabs/tiles/cowberry.tscn | 19 +++++++++++++------ godot/prefabs/ui/ui.tscn | 10 +++++++++- godot/scenes/overworld.tscn | 13 +++++++++---- godot/sprites/sheet.aseprite | Bin 3273 -> 3444 bytes godot/sprites/sheet.png | Bin 4235 -> 4484 bytes rust/src/game_manager.rs | 15 ++++++++++++++- rust/src/turn.rs | 14 +++++++++++++- 14 files changed, 114 insertions(+), 22 deletions(-) create mode 100644 godot/nodes/sprite_daytime_toggler.gd create mode 100644 godot/nodes/sprite_daytime_toggler.gd.uid create mode 100644 godot/prefabs/tiles/berry_grower.gd create mode 100644 godot/prefabs/tiles/berry_grower.gd.uid diff --git a/godot/nodes/sprite_daytime_toggler.gd b/godot/nodes/sprite_daytime_toggler.gd new file mode 100644 index 0000000..b13da0f --- /dev/null +++ b/godot/nodes/sprite_daytime_toggler.gd @@ -0,0 +1,14 @@ +extends Node + +@export var day_sprite: CanvasItem +@export var night_sprite: CanvasItem + +func on_day_start(): + show_sprite(true) + +func on_day_end(): + show_sprite(false) + +func show_sprite(is_day: bool): + day_sprite.visible = is_day + night_sprite.visible = !is_day diff --git a/godot/nodes/sprite_daytime_toggler.gd.uid b/godot/nodes/sprite_daytime_toggler.gd.uid new file mode 100644 index 0000000..7e9cdbf --- /dev/null +++ b/godot/nodes/sprite_daytime_toggler.gd.uid @@ -0,0 +1 @@ +uid://cguia25bxah4j diff --git a/godot/prefabs/player/player.tscn b/godot/prefabs/player/player.tscn index 47a777b..8ec7dfa 100644 --- a/godot/prefabs/player/player.tscn +++ b/godot/prefabs/player/player.tscn @@ -1,17 +1,18 @@ -[gd_scene load_steps=6 format=3 uid="uid://drs6h7ks4r2ta"] +[gd_scene load_steps=7 format=3 uid="uid://drs6h7ks4r2ta"] [ext_resource type="Texture2D" uid="uid://doscvutq8uqmd" path="res://sprites/sheet.png" id="1_72ieh"] [ext_resource type="Script" uid="uid://cvviym6gdlod8" path="res://prefabs/player/player.gd" id="1_wv1mm"] [ext_resource type="Script" uid="uid://sxo578w2yds2" path="res://prefabs/player/player_input.gd" id="2_rdx4y"] [ext_resource type="Script" uid="uid://swwas6oe75sc" path="res://nodes/mover_sprite_flipper.gd" id="3_klv5p"] [ext_resource type="Inventory" uid="uid://dm71wjetr4e52" path="res://prefabs/player/player_inventory.tres" id="4_binfn"] +[ext_resource type="Script" uid="uid://cguia25bxah4j" path="res://nodes/sprite_daytime_toggler.gd" id="4_iylwk"] [node name="Player" type="GridPosition" node_paths=PackedStringArray("gatherer", "entity_inventory")] script = ExtResource("1_wv1mm") gatherer = NodePath("Gatherer") entity_inventory = NodePath("EntityInventory") -[node name="Sprite2D" type="Sprite2D" parent="." node_paths=PackedStringArray("mover")] +[node name="Day Sprite" type="Sprite2D" parent="." node_paths=PackedStringArray("mover")] texture = ExtResource("1_72ieh") hframes = 8 vframes = 8 @@ -19,12 +20,23 @@ frame = 1 script = ExtResource("3_klv5p") mover = NodePath("../Mover") +[node name="Night Sprite" type="Sprite2D" parent="." node_paths=PackedStringArray("day_sprite", "night_sprite")] +visible = false +texture = ExtResource("1_72ieh") +hframes = 8 +vframes = 8 +frame = 2 +script = ExtResource("4_iylwk") +day_sprite = NodePath("../Day Sprite") +night_sprite = NodePath(".") + [node name="Camera2D" type="Camera2D" parent="."] zoom = Vector2(2, 2) [node name="Gatherer" type="Gatherer" parent="."] [node name="Mover" type="Mover" parent="."] +movement_speed = 20.0 [node name="TurnActor" type="TurnActor" parent="."] diff --git a/godot/prefabs/player/player_input.gd b/godot/prefabs/player/player_input.gd index ad8527c..cdf790c 100644 --- a/godot/prefabs/player/player_input.gd +++ b/godot/prefabs/player/player_input.gd @@ -22,7 +22,6 @@ func _input(event: InputEvent) -> void: if event.is_pressed(): match event.keycode: KEY_SPACE: - print("skip turn!") if try_perform(SkipAction.new()): return diff --git a/godot/prefabs/tiles/berry_grower.gd b/godot/prefabs/tiles/berry_grower.gd new file mode 100644 index 0000000..f4aa3b2 --- /dev/null +++ b/godot/prefabs/tiles/berry_grower.gd @@ -0,0 +1,13 @@ +extends Node + +@export var gatherable: Gatherable +@export var days_to_grow = 1 + +var days_grown = 0 + +func on_day_start(): + if gatherable.get_is_picked(): + days_grown += 1 + if days_grown >= days_to_grow: + gatherable.set_is_picked(false) + days_grown = 0 diff --git a/godot/prefabs/tiles/berry_grower.gd.uid b/godot/prefabs/tiles/berry_grower.gd.uid new file mode 100644 index 0000000..8274da2 --- /dev/null +++ b/godot/prefabs/tiles/berry_grower.gd.uid @@ -0,0 +1 @@ +uid://u5cupgv1dx71 diff --git a/godot/prefabs/tiles/blueberry.tscn b/godot/prefabs/tiles/blueberry.tscn index 36606d1..2bb5ca5 100644 --- a/godot/prefabs/tiles/blueberry.tscn +++ b/godot/prefabs/tiles/blueberry.tscn @@ -1,14 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://8xuvjmyjkpeo"] +[gd_scene load_steps=5 format=3 uid="uid://8xuvjmyjkpeo"] [ext_resource type="Script" uid="uid://jd6ce3f7e1bh" path="res://prefabs/tiles/gatherable_animation.gd" id="1_jqgth"] [ext_resource type="Texture2D" uid="uid://noksw27wlt1y" path="res://sprites/blueberry_plant.png" id="2_c8jpc"] [ext_resource type="Texture2D" uid="uid://1udkm2j25i8o" path="res://sprites/generic_picked.png" id="3_c8jpc"] +[ext_resource type="Script" uid="uid://u5cupgv1dx71" path="res://prefabs/tiles/berry_grower.gd" id="4_17ku8"] -[node name="Blueberry" type="GridPosition" node_paths=PackedStringArray("gatherable", "picked", "not_picked")] -script = ExtResource("1_jqgth") -gatherable = NodePath("Gatherable") -picked = NodePath("Picked") -not_picked = NodePath("Not Picked") +[node name="Blueberry" type="GridPosition"] [node name="Not Picked" type="Sprite2D" parent="."] texture = ExtResource("2_c8jpc") @@ -19,3 +16,13 @@ texture = ExtResource("3_c8jpc") [node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")] grid = NodePath("..") + +[node name="Sprite Swapper" type="Node" parent="." node_paths=PackedStringArray("gatherable", "picked", "not_picked")] +script = ExtResource("1_jqgth") +gatherable = NodePath("../Gatherable") +picked = NodePath("../Picked") +not_picked = NodePath("../Not Picked") + +[node name="Grow" type="Node" parent="." node_paths=PackedStringArray("gatherable")] +script = ExtResource("4_17ku8") +gatherable = NodePath("../Gatherable") diff --git a/godot/prefabs/tiles/cowberry.tscn b/godot/prefabs/tiles/cowberry.tscn index f79bf9f..2cf1767 100644 --- a/godot/prefabs/tiles/cowberry.tscn +++ b/godot/prefabs/tiles/cowberry.tscn @@ -1,14 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://l72f05nek0y4"] +[gd_scene load_steps=5 format=3 uid="uid://l72f05nek0y4"] [ext_resource type="Texture2D" uid="uid://c3td3bhrbd0kp" path="res://sprites/cowberry_plant.png" id="2_ihdej"] [ext_resource type="Script" uid="uid://jd6ce3f7e1bh" path="res://prefabs/tiles/gatherable_animation.gd" id="2_kod7n"] [ext_resource type="Texture2D" uid="uid://1udkm2j25i8o" path="res://sprites/generic_picked.png" id="3_ihdej"] +[ext_resource type="Script" uid="uid://u5cupgv1dx71" path="res://prefabs/tiles/berry_grower.gd" id="4_y3wpw"] -[node name="Blueberry" type="GridPosition" node_paths=PackedStringArray("gatherable", "picked", "not_picked")] -script = ExtResource("2_kod7n") -gatherable = NodePath("Gatherable") -picked = NodePath("Picked") -not_picked = NodePath("Not Picked") +[node name="Blueberry" type="GridPosition"] [node name="Not Picked" type="Sprite2D" parent="."] texture = ExtResource("2_ihdej") @@ -20,3 +17,13 @@ texture = ExtResource("3_ihdej") [node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")] grid = NodePath("..") item = "Cowberry" + +[node name="Sprite Swapper" type="Node" parent="." node_paths=PackedStringArray("gatherable", "picked", "not_picked")] +script = ExtResource("2_kod7n") +gatherable = NodePath("../Gatherable") +picked = NodePath("../Picked") +not_picked = NodePath("../Not Picked") + +[node name="Grow" type="Node" parent="." node_paths=PackedStringArray("gatherable")] +script = ExtResource("4_y3wpw") +gatherable = NodePath("../Gatherable") diff --git a/godot/prefabs/ui/ui.tscn b/godot/prefabs/ui/ui.tscn index 2327db5..cf8e623 100644 --- a/godot/prefabs/ui/ui.tscn +++ b/godot/prefabs/ui/ui.tscn @@ -8,7 +8,7 @@ [ext_resource type="Texture2D" uid="uid://ct5u214yridak" path="res://sprites/clock_hand.png" id="6_lntee"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mbf2n"] -bg_color = Color(0.192157, 0.121569, 0.0313726, 0.231373) +bg_color = Color(0.199373, 0.219407, 0.233619, 0.85098) [node name="UI" type="Control"] layout_mode = 3 @@ -42,6 +42,10 @@ texture = ExtResource("2_htiv7") layout_mode = 2 text = "0" +[node name="Padding" type="Control" parent="PanelContainer/Inventory/Blueberry"] +custom_minimum_size = Vector2(8, 0) +layout_mode = 2 + [node name="Cowberry" type="HBoxContainer" parent="PanelContainer/Inventory"] layout_mode = 2 @@ -53,6 +57,10 @@ texture = ExtResource("3_gxjsb") layout_mode = 2 text = "0" +[node name="Padding" type="Control" parent="PanelContainer/Inventory/Cowberry"] +custom_minimum_size = Vector2(8, 0) +layout_mode = 2 + [node name="Time" type="Control" parent="."] layout_mode = 1 anchors_preset = 1 diff --git a/godot/scenes/overworld.tscn b/godot/scenes/overworld.tscn index aa834cf..08c6229 100644 --- a/godot/scenes/overworld.tscn +++ b/godot/scenes/overworld.tscn @@ -9,20 +9,25 @@ _time_manager = NodePath("TimeManager") _turn_manager = NodePath("TurnManager") -[node name="TimeManager" type="TimeManager" parent="."] +[node name="TimeManager" type="TimeManager" parent="." node_paths=PackedStringArray("night_timer")] +night_timer = NodePath("Night Timer") -[node name="TurnManager" type="TurnManager" parent="."] +[node name="Night Timer" type="Timer" parent="TimeManager"] +one_shot = true + +[node name="TurnManager" type="TurnManager" parent="." node_paths=PackedStringArray("time_manager")] +time_manager = NodePath("../TimeManager") [node name="World" type="Level" parent="." node_paths=PackedStringArray("background", "foreground")] background = NodePath("Background") foreground = NodePath("Foreground") [node name="Background" type="TileMapLayer" parent="World"] -tile_map_data = PackedByteArray("AAD8//z/AQAAAAQAAAD8//3/AQAAAAQAAAD8//7/AQAAAAQAAAD8////AQAAAAQAAAD9//z/AQAAAAQAAAD9//3/AQAAAAQAAAD9//7/AQAAAAQAAAD9////AQAAAAQAAAD+//z/AQAAAAQAAAD+//3/AQAAAAQAAAD+//7/AQAAAAQAAAD+////AQAAAAQAAAD///z/AQAAAAQAAAD///3/AQAAAAQAAAD///7/AQAAAAQAAAD/////AQAAAAQAAAD8/wAAAQAAAAQAAAD8/wEAAQAAAAQAAAD8/wIAAQAAAAQAAAD8/wMAAQAAAAQAAAD9/wAAAQAAAAQAAAD9/wEAAQAAAAQAAAD9/wIAAQAAAAQAAAD9/wMAAQAAAAQAAAD+/wAAAQAAAAQAAAD+/wEAAQAAAAQAAAD+/wIAAQAAAAQAAAD+/wMAAQAAAAQAAAD//wAAAQAAAAQAAAD//wEAAQAAAAQAAAD//wIAAQAAAAQAAAD//wMAAQAAAAQAAAAAAPz/AQAAAAQAAAAAAP3/AQAAAAQAAAAAAP7/AQAAAAQAAAAAAP//AQAAAAQAAAAAAAAAAQAAAAQAAAAAAAEAAQAAAAQAAAAAAAIAAQAAAAQAAAAAAAMAAQAAAAQAAAABAPz/AQAAAAQAAAABAP3/AQAAAAQAAAABAP7/AQAAAAQAAAABAP//AQAAAAQAAAABAAAAAQAAAAQAAAABAAEAAQAAAAQAAAABAAIAAQAAAAQAAAABAAMAAQAAAAQAAAACAPz/AQAAAAQAAAACAP3/AQAAAAQAAAACAP7/AQAAAAQAAAACAP//AQAAAAQAAAACAAAAAQAAAAQAAAACAAEAAQAAAAQAAAACAAIAAQAAAAQAAAACAAMAAQAAAAQAAAADAPz/AQAAAAQAAAADAP3/AQAAAAQAAAADAP7/AQAAAAQAAAADAP//AQAAAAQAAAADAAAAAQAAAAQAAAADAAEAAQAAAAQAAAADAAIAAQAAAAQAAAADAAMAAQAAAAQAAAD6//v/AQAAAAQAAAD6//z/AQAAAAQAAAD6//3/AQAAAAQAAAD6//7/AQAAAAQAAAD6////AQAAAAQAAAD6/wAAAQAAAAQAAAD6/wEAAQAAAAQAAAD6/wIAAQAAAAQAAAD6/wMAAQAAAAQAAAD6/wQAAQAAAAQAAAD6/wUAAQAAAAQAAAD7//v/AQAAAAQAAAD7//z/AQAAAAQAAAD7//3/AQAAAAQAAAD7//7/AQAAAAQAAAD7////AQAAAAQAAAD7/wAAAQAAAAQAAAD7/wEAAQAAAAQAAAD7/wIAAQAAAAQAAAD7/wMAAQAAAAQAAAD7/wQAAQAAAAQAAAD7/wUAAQAAAAQAAAD8//v/AQAAAAQAAAD8/wQAAQAAAAQAAAD8/wUAAQAAAAQAAAD9//v/AQAAAAQAAAD9/wQAAQAAAAQAAAD9/wUAAQAAAAQAAAD+//v/AQAAAAQAAAD+/wQAAQAAAAQAAAD+/wUAAQAAAAQAAAD///v/AQAAAAQAAAD//wQAAQAAAAQAAAD//wUAAQAAAAQAAAAAAPv/AQAAAAQAAAAAAAQAAQAAAAQAAAAAAAUAAQAAAAQAAAABAPv/AQAAAAQAAAABAAQAAQAAAAQAAAABAAUAAQAAAAQAAAACAPv/AQAAAAQAAAACAAQAAQAAAAQAAAACAAUAAQAAAAQAAAADAPr/AQABAAQAAAADAPv/AQAAAAQAAAADAAQAAQAAAAQAAAADAAUAAQAAAAQAAAAEAPr/AQABAAQAAAAEAPv/AQABAAQAAAAEAPz/AQABAAQAAAAEAP3/AQABAAQAAAAEAP7/AQAAAAQAAAAEAP//AQAAAAQAAAAEAAAAAQAAAAQAAAAEAAEAAQAAAAQAAAAEAAIAAQAAAAQAAAAEAAMAAQAAAAQAAAAEAAQAAQAAAAQAAAAEAAUAAQAAAAQAAAAFAPr/AQABAAQAAAAFAPv/AQABAAQAAAAFAPz/AQABAAQAAAAFAP3/AQABAAQAAAAFAP7/AQAAAAQAAAAFAP//AQAAAAQAAAAFAAAAAQAAAAQAAAAFAAEAAQAAAAQAAAAFAAIAAQAAAAQAAAAFAAMAAQAAAAQAAAAFAAQAAQAAAAQAAAAFAAUAAQAAAAQAAAAGAPj/AQABAAQAAAAGAPn/AQABAAQAAAAGAPr/AQABAAQAAAAGAPv/AQABAAQAAAAGAPz/AQABAAQAAAAHAPj/AQABAAQAAAAHAPn/AQABAAQAAAAHAPr/AQABAAQAAAAHAPv/AQABAAQAAAAHAPz/AQABAAQAAAAIAPj/AQABAAQAAAAIAPn/AQABAAQAAAAIAPr/AQABAAQAAAAIAPv/AQABAAQAAAAIAPz/AQABAAQAAAAJAPj/AQABAAQAAAAJAPn/AQABAAQAAAAJAPr/AQABAAQAAAAJAPv/AQABAAQAAAAJAPz/AQABAAQAAAAKAPj/AQABAAQAAAAKAPn/AQABAAQAAAAKAPr/AQABAAQAAAAKAPv/AQABAAQAAAAKAPz/AQABAAQAAAAEAPn/AQABAAQAAAAGAP3/AQABAAQAAAAHAP3/AQABAAQAAAAIAP3/AQABAAQAAAAIAP7/AQABAAQAAAAHAP7/AQABAAQAAAAEAPj/AQABAAQAAAAEAPf/AQABAAQAAAAFAPf/AQABAAQAAAAFAPj/AQABAAQAAAAFAPn/AQABAAQAAAAHAPf/AQABAAQAAAAGAPf/AQABAAQAAAAIAPf/AQABAAQAAAAJAPf/AQABAAQAAAAKAPf/AQABAAQAAAALAPn/AQABAAQAAAALAPr/AQABAAQAAAALAPv/AQABAAQAAAAKAP3/AQABAAQAAAAJAP3/AQABAAQAAAD3//v/AQAAAAQAAAD3//z/AQAAAAQAAAD3//3/AQAAAAQAAAD3//7/AQAAAAQAAAD3////AQAAAAQAAAD3/wAAAQAAAAQAAAD3/wEAAQAAAAQAAAD3/wIAAQAAAAQAAAD3/wMAAQAAAAQAAAD3/wQAAQAAAAQAAAD3/wUAAQAAAAQAAAD4//v/AQAAAAQAAAD4//z/AQAAAAQAAAD4//3/AQAAAAQAAAD4//7/AQAAAAQAAAD4////AQAAAAQAAAD4/wAAAQAAAAQAAAD4/wEAAQAAAAQAAAD4/wIAAQAAAAQAAAD4/wMAAQAAAAQAAAD4/wQAAQAAAAQAAAD4/wUAAQAAAAQAAAD5//v/AQAAAAQAAAD5//z/AQAAAAQAAAD5//3/AQAAAAQAAAD5//7/AQAAAAQAAAD5////AQAAAAQAAAD5/wAAAQAAAAQAAAD5/wEAAQAAAAQAAAD5/wIAAQAAAAQAAAD5/wMAAQAAAAQAAAD5/wQAAQAAAAQAAAD5/wUAAQAAAAQAAAAGAP//AQAAAAQAAAAGAAAAAQAAAAQAAAAGAAEAAQAAAAQAAAAGAAIAAQAAAAQAAAAGAAMAAQAAAAQAAAAGAAQAAQAAAAQAAAAGAAUAAQAAAAQAAAAHAP//AQAAAAQAAAAHAAAAAQAAAAQAAAAHAAEAAQAAAAQAAAAHAAIAAQAAAAQAAAAHAAMAAQAAAAQAAAAHAAQAAQAAAAQAAAAHAAUAAQAAAAQAAAAIAP//AQAAAAQAAAAIAAAAAQAAAAQAAAAIAAEAAQAAAAQAAAAIAAIAAQAAAAQAAAAIAAMAAQAAAAQAAAAIAAQAAQAAAAQAAAAIAAUAAQAAAAQAAAAJAP//AQAAAAQAAAAJAAAAAQAAAAQAAAAJAAEAAQAAAAQAAAAJAAIAAQAAAAQAAAAJAAMAAQAAAAQAAAAJAAQAAQAAAAQAAAAJAAUAAQAAAAQAAAAJAP7/AQABAAQAAAAGAP7/AQABAAQAAAA=") +tile_map_data = PackedByteArray("AAD8//z/AQAAAAQAAAD8//3/AQAAAAQAAAD8//7/AQAAAAQAAAD8////AQAAAAQAAAD9//z/AQAAAAQAAAD9//3/AQAAAAQAAAD9//7/AQAAAAQAAAD9////AQAAAAQAAAD+//z/AQAAAAQAAAD+//3/AQAAAAQAAAD+//7/AQAAAAQAAAD+////AQAAAAQAAAD///z/AQAAAAQAAAD///3/AQAAAAQAAAD///7/AQAAAAQAAAD/////AQAAAAQAAAD8/wAAAQAAAAQAAAD8/wEAAQAAAAQAAAD8/wIAAQAAAAQAAAD8/wMAAQAAAAQAAAD9/wAAAQAAAAQAAAD9/wEAAQAAAAQAAAD9/wIAAQAAAAQAAAD9/wMAAQAAAAQAAAD+/wAAAQAAAAQAAAD+/wEAAQAAAAQAAAD+/wIAAQAAAAQAAAD+/wMAAQAAAAQAAAD//wAAAQAAAAQAAAD//wEAAQAAAAQAAAD//wIAAQAAAAQAAAD//wMAAQAAAAQAAAAAAPz/AQAAAAQAAAAAAP3/AQAAAAQAAAAAAP7/AQAAAAQAAAAAAP//AQAAAAQAAAAAAAAAAQAAAAQAAAAAAAEAAQAAAAQAAAAAAAIAAQAAAAQAAAAAAAMAAQAAAAQAAAABAPz/AQAAAAQAAAABAP3/AQAAAAQAAAABAP7/AQAAAAQAAAABAP//AQAAAAQAAAABAAAAAQAAAAQAAAABAAEAAQAAAAQAAAABAAIAAQAAAAQAAAABAAMAAQAAAAQAAAACAPz/AQAAAAQAAAACAP3/AQAAAAQAAAACAP7/AQAAAAQAAAACAP//AQAAAAQAAAACAAAAAQAAAAQAAAACAAEAAQAAAAQAAAACAAIAAQAAAAQAAAACAAMAAQAAAAQAAAADAPz/AQAAAAQAAAADAP3/AQAAAAQAAAADAP7/AQAAAAQAAAADAP//AQAAAAQAAAADAAAAAQAAAAQAAAADAAEAAQAAAAQAAAADAAIAAQAAAAQAAAADAAMAAQAAAAQAAAD6//z/AQAAAAQAAAD6//3/AQAAAAQAAAD6//7/AQAAAAQAAAD6////AQAAAAQAAAD6/wAAAQAAAAQAAAD6/wEAAQAAAAQAAAD6/wIAAQAAAAQAAAD6/wMAAQAAAAQAAAD7//z/AQAAAAQAAAD7//3/AQAAAAQAAAD7//7/AQAAAAQAAAD7////AQAAAAQAAAD7/wAAAQAAAAQAAAD7/wEAAQAAAAQAAAD7/wIAAQAAAAQAAAD7/wMAAQAAAAQAAAD7/wQAAQAAAAQAAAD8//v/AQAAAAQAAAD8/wQAAQAAAAQAAAD9//v/AQAAAAQAAAD9/wQAAQAAAAQAAAD9/wUAAQAAAAQAAAD+//v/AQAAAAQAAAD+/wQAAQAAAAQAAAD+/wUAAQAAAAQAAAD///v/AQAAAAQAAAD//wQAAQAAAAQAAAD//wUAAQAAAAQAAAAAAPv/AQAAAAQAAAAAAAQAAQAAAAQAAAAAAAUAAQAAAAQAAAABAPv/AQAAAAQAAAABAAQAAQAAAAQAAAABAAUAAQAAAAQAAAACAPv/AQAAAAQAAAACAAQAAQAAAAQAAAACAAUAAQAAAAQAAAADAPr/AQABAAQAAAADAPv/AQAAAAQAAAADAAQAAQAAAAQAAAAEAPr/AQABAAQAAAAEAPv/AQABAAQAAAAEAPz/AQABAAQAAAAEAP3/AQABAAQAAAAEAP7/AQAAAAQAAAAEAP//AQAAAAQAAAAEAAAAAQAAAAQAAAAEAAEAAQAAAAQAAAAEAAIAAQAAAAQAAAAEAAMAAQAAAAQAAAAEAAQAAQAAAAQAAAAFAPr/AQABAAQAAAAFAPv/AQABAAQAAAAFAPz/AQABAAQAAAAFAP3/AQABAAQAAAAFAP7/AQAAAAQAAAAFAP//AQAAAAQAAAAFAAAAAQAAAAQAAAAFAAEAAQAAAAQAAAAFAAIAAQAAAAQAAAAFAAMAAQAAAAQAAAAFAAQAAQAAAAQAAAAGAPj/AQABAAQAAAAGAPn/AQABAAQAAAAGAPr/AQABAAQAAAAGAPv/AQABAAQAAAAGAPz/AQABAAQAAAAHAPj/AQABAAQAAAAHAPn/AQABAAQAAAAHAPr/AQABAAQAAAAHAPv/AQABAAQAAAAHAPz/AQABAAQAAAAIAPj/AQABAAQAAAAIAPn/AQABAAQAAAAIAPr/AQABAAQAAAAIAPv/AQABAAQAAAAIAPz/AQABAAQAAAAJAPj/AQABAAQAAAAJAPn/AQABAAQAAAAJAPr/AQABAAQAAAAJAPv/AQABAAQAAAAJAPz/AQABAAQAAAAKAPj/AQABAAQAAAAKAPn/AQABAAQAAAAKAPr/AQABAAQAAAAKAPv/AQABAAQAAAAKAPz/AQABAAQAAAAEAPn/AQABAAQAAAAGAP3/AQABAAQAAAAHAP3/AQABAAQAAAAIAP3/AQABAAQAAAAIAP7/AQABAAQAAAAHAP7/AQABAAQAAAAEAPj/AQABAAQAAAAEAPf/AQABAAQAAAAFAPf/AQABAAQAAAAFAPj/AQABAAQAAAAFAPn/AQABAAQAAAAHAPf/AQABAAQAAAAGAPf/AQABAAQAAAAIAPf/AQABAAQAAAAJAPf/AQABAAQAAAAKAPf/AQABAAQAAAALAPn/AQABAAQAAAALAPr/AQABAAQAAAALAPv/AQABAAQAAAAKAP3/AQABAAQAAAAJAP3/AQABAAQAAAD4//3/AQAAAAQAAAD4//7/AQAAAAQAAAD4////AQAAAAQAAAD4/wAAAQAAAAQAAAD5//3/AQAAAAQAAAD5//7/AQAAAAQAAAD5////AQAAAAQAAAD5/wAAAQAAAAQAAAD5/wEAAQAAAAQAAAD5/wIAAQAAAAQAAAD5/wMAAQAAAAQAAAD5/wQAAQAAAAQAAAAGAP//AQAAAAQAAAAGAAAAAQAAAAQAAAAGAAEAAQAAAAQAAAAGAAIAAQAAAAQAAAAGAAMAAQAAAAQAAAAHAP//AQAAAAQAAAAHAAAAAQAAAAQAAAAHAAEAAQAAAAQAAAAIAP//AQAAAAQAAAAIAAAAAQAAAAQAAAAJAP//AQAAAAQAAAAJAP7/AQABAAQAAAAGAP7/AQABAAQAAAD6/wQAAQAAAAQAAAD4/wEAAQAAAAQAAAD4/wIAAQAAAAQAAAD4/wMAAQAAAAQAAAD4/wQAAQAAAAQAAAD5/wUAAQAAAAQAAAD6/wUAAQAAAAQAAAD4/wUAAQAAAAQAAAD7/wUAAQAAAAQAAAD7/wYAAQAAAAQAAAD8/wYAAQAAAAQAAAD8/wUAAQAAAAQAAAD3/wIAAQAAAAQAAAD3/wEAAQAAAAQAAAD3/wAAAQAAAAQAAAD3////AQAAAAQAAAD3//7/AQAAAAQAAAD3//3/AQAAAAQAAAD3//z/AQAAAAQAAAD4//z/AQAAAAQAAAD5//z/AQAAAAQAAAD5//v/AQAAAAQAAAD4//v/AQAAAAQAAAD6//v/AQAAAAQAAAD7//v/AQAAAAQAAAD9/wYAAQAAAAQAAAD+/wYAAQAAAAQAAAD//wYAAQAAAAQAAAD7//r/AQAAAAQAAAD8//r/AQAAAAQAAAD9//r/AQAAAAQAAAD+//r/AQAAAAQAAAD///r/AQAAAAQAAAAAAPr/AQAAAAQAAAABAPr/AQAAAAQAAAACAPr/AQAAAAQAAAD+//n/AQAAAAQAAAD///n/AQAAAAQAAAAAAPn/AQAAAAQAAAABAPn/AQAAAAQAAAACAPn/AQAAAAQAAAADAPn/AQAAAAQAAAA=") tile_set = ExtResource("1_m1b5j") [node name="Foreground" type="TileMapLayer" parent="World"] -tile_map_data = PackedByteArray("AAD/////AQAAAAMAAAD8//3/AQABAAMAAAD9//3/AQABAAMAAAD9//7/AQABAAMAAAD9/wAAAQABAAMAAAD9/wEAAQABAAMAAAD8/wEAAQABAAMAAAAEAPv/AQACAAMAAAAGAP3/AQACAAMAAAAHAP7/AQACAAMAAAAIAP7/AQACAAMAAAAJAP7/AQACAAMAAAAGAPn/AQACAAMAAAAGAPr/AQACAAMAAAAGAPv/AQACAAMAAAAHAPv/AQACAAMAAAAIAPv/AQACAAMAAAAIAPz/AQACAAMAAAAJAPz/AQACAAMAAAAKAPz/AQACAAMAAAAKAPv/AQACAAMAAAAJAPv/AQACAAMAAAAIAPr/AQACAAMAAAAHAPr/AQACAAMAAAAHAPn/AQACAAMAAAD3//v/AQABAAMAAAD3//z/AQABAAMAAAD3//3/AQABAAMAAAD3//7/AQABAAMAAAD3////AQABAAMAAAD3/wAAAQABAAMAAAD3/wEAAQABAAMAAAD3/wIAAQABAAMAAAD4//v/AQABAAMAAAD4//z/AQABAAMAAAD4//3/AQABAAMAAAD4//7/AQABAAMAAAD4////AQABAAMAAAD4/wAAAQABAAMAAAD4/wEAAQABAAMAAAD4/wIAAQABAAMAAAD3/wMAAQABAAMAAAD3/wQAAQABAAMAAAD3/wUAAQABAAMAAAD4/wMAAQABAAMAAAD4/wQAAQABAAMAAAD4/wUAAQABAAMAAAD5/wUAAQABAAMAAAD6/wUAAQABAAMAAAD7/wUAAQABAAMAAAD8/wUAAQABAAMAAAD9/wUAAQABAAMAAAD+/wUAAQABAAMAAAD//wUAAQABAAMAAAAAAAUAAQABAAMAAAABAAUAAQABAAMAAAACAAUAAQABAAMAAAADAAUAAQABAAMAAAAEAAUAAQABAAMAAAAFAAUAAQABAAMAAAAGAAUAAQABAAMAAAAHAAUAAQABAAMAAAAIAAUAAQABAAMAAAAJAAUAAQABAAMAAAD5//v/AQABAAMAAAD6//v/AQABAAMAAAD7//v/AQABAAMAAAD8//v/AQABAAMAAAD9//v/AQABAAMAAAD+//v/AQABAAMAAAD///v/AQABAAMAAAAAAPv/AQABAAMAAAABAPv/AQABAAMAAAACAPv/AQABAAMAAAADAPv/AQABAAMAAAAJAP//AQABAAMAAAAJAAAAAQABAAMAAAAJAAEAAQABAAMAAAAJAAIAAQABAAMAAAAJAAMAAQABAAMAAAAJAAQAAQABAAMAAAD7/wEAAQABAAMAAAD7//3/AQABAAMAAAD6//3/AQABAAMAAAD6/wEAAQABAAMAAAD6//7/AQABAAMAAAD6/wAAAQABAAMAAAD6/wQAAAAAAAAAAgD5/wQAAAAAAAAAAgD5/wMAAAAAAAAAAgAEAAEAAAAAAAAAAQADAAEAAAAAAAAAAQADAAIAAAAAAAAAAQADAAMAAAAAAAAAAQACAAMAAAAAAAAAAQAEAAMAAAAAAAAAAQAFAAMAAAAAAAAAAQAFAAIAAAAAAAAAAQAFAAEAAAAAAAAAAQAEAAIAAAAAAAAAAwD7//7/AAAAAAAAAwA=") +tile_map_data = PackedByteArray("AAD/////AQAAAAMAAAD8//3/AQABAAMAAAD9//3/AQABAAMAAAD9//7/AQABAAMAAAD9/wAAAQABAAMAAAD9/wEAAQABAAMAAAD8/wEAAQABAAMAAAAEAPv/AQACAAMAAAAGAP3/AQACAAMAAAAHAP7/AQACAAMAAAAIAP7/AQACAAMAAAAJAP7/AQACAAMAAAAGAPn/AQACAAMAAAAGAPr/AQACAAMAAAAGAPv/AQACAAMAAAAHAPv/AQACAAMAAAAIAPv/AQACAAMAAAAIAPz/AQACAAMAAAAJAPz/AQACAAMAAAAKAPz/AQACAAMAAAAKAPv/AQACAAMAAAAJAPv/AQACAAMAAAAIAPr/AQACAAMAAAAHAPr/AQACAAMAAAAHAPn/AQACAAMAAAD7/wEAAQABAAMAAAD7//3/AQABAAMAAAD6//3/AQABAAMAAAD6/wEAAQABAAMAAAD6//7/AQABAAMAAAD6/wAAAQABAAMAAAD6/wQAAAAAAAAAAgD5/wQAAAAAAAAAAgD5/wMAAAAAAAAAAgAEAAEAAAAAAAAAAQD7//7/AAAAAAAAAwD3//z/AQABAAMAAAD3//3/AQABAAMAAAD3//7/AQABAAMAAAD3////AQABAAMAAAD3/wAAAQABAAMAAAD3/wEAAQABAAMAAAD3/wIAAQABAAMAAAD4/wIAAQABAAMAAAD4/wMAAQABAAMAAAD4/wQAAQABAAMAAAD4/wUAAQABAAMAAAD5/wUAAQABAAMAAAD6/wUAAQABAAMAAAD7/wUAAQABAAMAAAD7/wYAAQABAAMAAAD8/wYAAQABAAMAAAD9/wYAAQABAAMAAAD+/wYAAQABAAMAAAD//wYAAQABAAMAAAD//wUAAQABAAMAAAAAAAUAAQABAAMAAAABAAUAAQABAAMAAAACAAUAAQABAAMAAAACAAQAAQABAAMAAAADAAQAAQABAAMAAAAEAAQAAQABAAMAAAAFAAQAAQABAAMAAAAFAAMAAQABAAMAAAAGAAMAAQABAAMAAAAGAAEAAQABAAMAAAAGAAIAAQABAAMAAAAHAAAAAQABAAMAAAAHAAEAAQABAAMAAAAIAP//AQABAAMAAAAIAAAAAQABAAMAAAAJAP//AQABAAMAAAD4//v/AQABAAMAAAD4//z/AQABAAMAAAD5//v/AQABAAMAAAD6//v/AQABAAMAAAD7//v/AQABAAMAAAD7//r/AQABAAMAAAD8//r/AQABAAMAAAD9//r/AQABAAMAAAD+//r/AQABAAMAAAD+//n/AQABAAMAAAD///n/AQABAAMAAAAAAPn/AQABAAMAAAABAPn/AQABAAMAAAACAPn/AQABAAMAAAADAPn/AQABAAMAAAACAPr/AQABAAMAAAACAPv/AQABAAMAAAADAPv/AQABAAMAAAAFAP//AQABAAMAAAAGAP//AQABAAMAAAAHAP//AQABAAMAAAAGAAAAAQABAAMAAAAFAP7/AQABAAMAAAAFAAEAAAAAAAAAAQAFAAIAAAAAAAAAAQAEAAIAAAAAAAAAAQAEAAMAAAAAAAAAAQAEAPn/AQACAAMAAAAEAPj/AQACAAMAAAAEAPf/AQACAAMAAAAFAPf/AQACAAMAAAAGAPf/AQACAAMAAAAHAPf/AQACAAMAAAAIAPf/AQACAAMAAAAJAPf/AQACAAMAAAAKAPf/AQACAAMAAAAKAPj/AQACAAMAAAAKAPn/AQACAAMAAAALAPn/AQACAAMAAAALAPr/AQACAAMAAAALAPv/AQACAAMAAAAKAP3/AQACAAMAAAAJAP3/AQACAAMAAAAGAP7/AQACAAMAAAA=") tile_set = ExtResource("2_u2ss0") [node name="Player" parent="World" instance=ExtResource("3_u2ss0")] diff --git a/godot/sprites/sheet.aseprite b/godot/sprites/sheet.aseprite index 9ec94e79a4647b4a856e664717507de2badbfab8..81bab678eb9ebf532779315addc120c2784fa202 100644 GIT binary patch delta 2983 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 delta 2810 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 diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index f300dce..90d7d67 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -52,6 +52,8 @@ pub struct TimeManager { #[export] #[init(val = 40)] day_length: i32, + #[export] + night_timer: Option>, #[var(get, set = set_time_of_day)] #[init(val = -1)] @@ -64,7 +66,17 @@ pub struct TimeManager { } #[godot_api] -impl INode for TimeManager {} +impl INode for TimeManager { + fn ready(&mut self) { + self.night_timer + .clone() + .unwrap() + .signals() + .timeout() + .connect_other(self, Self::start_new_day); + self.start_new_day(); + } +} #[godot_api] impl TimeManager { @@ -92,6 +104,7 @@ impl TimeManager { self.set_time_of_day(self.time_of_day + amount); if self.is_day_over() { GameManager::get(self.to_gd()).propagate_call(calls::ON_DAY_END); + self.night_timer.as_mut().unwrap().start(); } } diff --git a/rust/src/turn.rs b/rust/src/turn.rs index a1eb0c7..2f5b73a 100644 --- a/rust/src/turn.rs +++ b/rust/src/turn.rs @@ -10,6 +10,9 @@ use crate::prelude::*; #[derive(Debug, GodotClass)] #[class(init, base=Node)] pub struct TurnManager { + #[export] + time_manager: Option>, + registered_actors: HashSet>, round_queue: Array>, current_actor: Option>, @@ -25,7 +28,7 @@ impl INode for TurnManager { self.start_next_turn(); } } - if self.current_actor.is_none() && self.round_queue.is_empty() { + if self.can_start_round() && self.current_actor.is_none() && self.round_queue.is_empty() { self.start_round(); } } @@ -46,6 +49,15 @@ impl TurnManager { .retain(|actor| actor.is_instance_valid() && !actor.is_queued_for_deletion()); } + fn can_start_round(&self) -> bool { + !self + .time_manager + .clone() + .expect("Getting TimeManager for TurnManager") + .bind() + .is_day_over() + } + fn new_round(&self) -> Array> { let mut actors: Array> = self.registered_actors.iter().cloned().collect(); actors.sort_unstable_by(|a, b| a.instance_id().cmp(&b.instance_id()));