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 9ec94e7..81bab67 100644 Binary files a/godot/sprites/sheet.aseprite and b/godot/sprites/sheet.aseprite differ diff --git a/godot/sprites/sheet.png b/godot/sprites/sheet.png index baae2e4..92a3f72 100644 Binary files a/godot/sprites/sheet.png and b/godot/sprites/sheet.png differ 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()));