Added simple day-night system and regrowing gatherables
parent
e5b39e4bf5
commit
7e03a236fa
|
|
@ -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
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cguia25bxah4j
|
||||||
|
|
@ -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="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://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://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="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="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")]
|
[node name="Player" type="GridPosition" node_paths=PackedStringArray("gatherer", "entity_inventory")]
|
||||||
script = ExtResource("1_wv1mm")
|
script = ExtResource("1_wv1mm")
|
||||||
gatherer = NodePath("Gatherer")
|
gatherer = NodePath("Gatherer")
|
||||||
entity_inventory = NodePath("EntityInventory")
|
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")
|
texture = ExtResource("1_72ieh")
|
||||||
hframes = 8
|
hframes = 8
|
||||||
vframes = 8
|
vframes = 8
|
||||||
|
|
@ -19,12 +20,23 @@ frame = 1
|
||||||
script = ExtResource("3_klv5p")
|
script = ExtResource("3_klv5p")
|
||||||
mover = NodePath("../Mover")
|
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="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
zoom = Vector2(2, 2)
|
zoom = Vector2(2, 2)
|
||||||
|
|
||||||
[node name="Gatherer" type="Gatherer" parent="."]
|
[node name="Gatherer" type="Gatherer" parent="."]
|
||||||
|
|
||||||
[node name="Mover" type="Mover" parent="."]
|
[node name="Mover" type="Mover" parent="."]
|
||||||
|
movement_speed = 20.0
|
||||||
|
|
||||||
[node name="TurnActor" type="TurnActor" parent="."]
|
[node name="TurnActor" type="TurnActor" parent="."]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ func _input(event: InputEvent) -> void:
|
||||||
if event.is_pressed():
|
if event.is_pressed():
|
||||||
match event.keycode:
|
match event.keycode:
|
||||||
KEY_SPACE:
|
KEY_SPACE:
|
||||||
print("skip turn!")
|
|
||||||
if try_perform(SkipAction.new()):
|
if try_perform(SkipAction.new()):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://u5cupgv1dx71
|
||||||
|
|
@ -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="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://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="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")]
|
[node name="Blueberry" type="GridPosition"]
|
||||||
script = ExtResource("1_jqgth")
|
|
||||||
gatherable = NodePath("Gatherable")
|
|
||||||
picked = NodePath("Picked")
|
|
||||||
not_picked = NodePath("Not Picked")
|
|
||||||
|
|
||||||
[node name="Not Picked" type="Sprite2D" parent="."]
|
[node name="Not Picked" type="Sprite2D" parent="."]
|
||||||
texture = ExtResource("2_c8jpc")
|
texture = ExtResource("2_c8jpc")
|
||||||
|
|
@ -19,3 +16,13 @@ texture = ExtResource("3_c8jpc")
|
||||||
|
|
||||||
[node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")]
|
[node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")]
|
||||||
grid = NodePath("..")
|
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")
|
||||||
|
|
|
||||||
|
|
@ -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="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="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="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")]
|
[node name="Blueberry" type="GridPosition"]
|
||||||
script = ExtResource("2_kod7n")
|
|
||||||
gatherable = NodePath("Gatherable")
|
|
||||||
picked = NodePath("Picked")
|
|
||||||
not_picked = NodePath("Not Picked")
|
|
||||||
|
|
||||||
[node name="Not Picked" type="Sprite2D" parent="."]
|
[node name="Not Picked" type="Sprite2D" parent="."]
|
||||||
texture = ExtResource("2_ihdej")
|
texture = ExtResource("2_ihdej")
|
||||||
|
|
@ -20,3 +17,13 @@ texture = ExtResource("3_ihdej")
|
||||||
[node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")]
|
[node name="Gatherable" type="Gatherable" parent="." node_paths=PackedStringArray("grid")]
|
||||||
grid = NodePath("..")
|
grid = NodePath("..")
|
||||||
item = "Cowberry"
|
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")
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://ct5u214yridak" path="res://sprites/clock_hand.png" id="6_lntee"]
|
[ext_resource type="Texture2D" uid="uid://ct5u214yridak" path="res://sprites/clock_hand.png" id="6_lntee"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mbf2n"]
|
[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"]
|
[node name="UI" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
|
@ -42,6 +42,10 @@ texture = ExtResource("2_htiv7")
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "0"
|
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"]
|
[node name="Cowberry" type="HBoxContainer" parent="PanelContainer/Inventory"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
|
@ -53,6 +57,10 @@ texture = ExtResource("3_gxjsb")
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "0"
|
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="."]
|
[node name="Time" type="Control" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
|
|
|
||||||
|
|
@ -9,20 +9,25 @@
|
||||||
_time_manager = NodePath("TimeManager")
|
_time_manager = NodePath("TimeManager")
|
||||||
_turn_manager = NodePath("TurnManager")
|
_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")]
|
[node name="World" type="Level" parent="." node_paths=PackedStringArray("background", "foreground")]
|
||||||
background = NodePath("Background")
|
background = NodePath("Background")
|
||||||
foreground = NodePath("Foreground")
|
foreground = NodePath("Foreground")
|
||||||
|
|
||||||
[node name="Background" type="TileMapLayer" parent="World"]
|
[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")
|
tile_set = ExtResource("1_m1b5j")
|
||||||
|
|
||||||
[node name="Foreground" type="TileMapLayer" parent="World"]
|
[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")
|
tile_set = ExtResource("2_u2ss0")
|
||||||
|
|
||||||
[node name="Player" parent="World" instance=ExtResource("3_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 |
|
|
@ -52,6 +52,8 @@ pub struct TimeManager {
|
||||||
#[export]
|
#[export]
|
||||||
#[init(val = 40)]
|
#[init(val = 40)]
|
||||||
day_length: i32,
|
day_length: i32,
|
||||||
|
#[export]
|
||||||
|
night_timer: Option<Gd<Timer>>,
|
||||||
|
|
||||||
#[var(get, set = set_time_of_day)]
|
#[var(get, set = set_time_of_day)]
|
||||||
#[init(val = -1)]
|
#[init(val = -1)]
|
||||||
|
|
@ -64,7 +66,17 @@ pub struct TimeManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[godot_api]
|
#[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]
|
#[godot_api]
|
||||||
impl TimeManager {
|
impl TimeManager {
|
||||||
|
|
@ -92,6 +104,7 @@ impl TimeManager {
|
||||||
self.set_time_of_day(self.time_of_day + amount);
|
self.set_time_of_day(self.time_of_day + amount);
|
||||||
if self.is_day_over() {
|
if self.is_day_over() {
|
||||||
GameManager::get(self.to_gd()).propagate_call(calls::ON_DAY_END);
|
GameManager::get(self.to_gd()).propagate_call(calls::ON_DAY_END);
|
||||||
|
self.night_timer.as_mut().unwrap().start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ use crate::prelude::*;
|
||||||
#[derive(Debug, GodotClass)]
|
#[derive(Debug, GodotClass)]
|
||||||
#[class(init, base=Node)]
|
#[class(init, base=Node)]
|
||||||
pub struct TurnManager {
|
pub struct TurnManager {
|
||||||
|
#[export]
|
||||||
|
time_manager: Option<Gd<TimeManager>>,
|
||||||
|
|
||||||
registered_actors: HashSet<Gd<TurnActor>>,
|
registered_actors: HashSet<Gd<TurnActor>>,
|
||||||
round_queue: Array<Gd<TurnActor>>,
|
round_queue: Array<Gd<TurnActor>>,
|
||||||
current_actor: Option<Gd<TurnActor>>,
|
current_actor: Option<Gd<TurnActor>>,
|
||||||
|
|
@ -25,7 +28,7 @@ impl INode for TurnManager {
|
||||||
self.start_next_turn();
|
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();
|
self.start_round();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -46,6 +49,15 @@ impl TurnManager {
|
||||||
.retain(|actor| actor.is_instance_valid() && !actor.is_queued_for_deletion());
|
.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>> {
|
fn new_round(&self) -> Array<Gd<TurnActor>> {
|
||||||
let mut actors: Array<Gd<TurnActor>> = self.registered_actors.iter().cloned().collect();
|
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()));
|
actors.sort_unstable_by(|a, b| a.instance_id().cmp(&b.instance_id()));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue