Added simple day-night system and regrowing gatherables

master
hheik 2025-09-13 01:35:31 +03:00
parent e5b39e4bf5
commit 7e03a236fa
14 changed files with 114 additions and 22 deletions

View File

@ -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

View File

@ -0,0 +1 @@
uid://cguia25bxah4j

View File

@ -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="."]

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
uid://u5cupgv1dx71

View File

@ -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")

View File

@ -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")

View File

@ -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

View File

@ -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")]

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -52,6 +52,8 @@ pub struct TimeManager {
#[export]
#[init(val = 40)]
day_length: i32,
#[export]
night_timer: Option<Gd<Timer>>,
#[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();
}
}

View File

@ -10,6 +10,9 @@ use crate::prelude::*;
#[derive(Debug, GodotClass)]
#[class(init, base=Node)]
pub struct TurnManager {
#[export]
time_manager: Option<Gd<TimeManager>>,
registered_actors: HashSet<Gd<TurnActor>>,
round_queue: Array<Gd<TurnActor>>,
current_actor: Option<Gd<TurnActor>>,
@ -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<Gd<TurnActor>> {
let mut actors: Array<Gd<TurnActor>> = self.registered_actors.iter().cloned().collect();
actors.sort_unstable_by(|a, b| a.instance_id().cmp(&b.instance_id()));