From 161f87da751432068e180c2128e76f5abb179c5a Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 3 Aug 2025 18:51:27 +0500 Subject: [PATCH] Initial spawn delay --- .../gui/plant_pick/seedpacket_generator.gd | 4 +-- scripts/gui/seedpacket/seedpacket.gd | 33 +++++++++++++++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/scripts/gui/plant_pick/seedpacket_generator.gd b/scripts/gui/plant_pick/seedpacket_generator.gd index e6cf221..bd370c7 100644 --- a/scripts/gui/plant_pick/seedpacket_generator.gd +++ b/scripts/gui/plant_pick/seedpacket_generator.gd @@ -1,12 +1,10 @@ extends Node -const SEEDPACKET_SCENE := preload("res://scenes/gui/seedpacket.tscn") - func _ready() -> void: var plants = GameRegistry.load_resources("res://resources/") for plant in plants: - var seedpacket = SEEDPACKET_SCENE.instantiate() + var seedpacket = Seedpacket.PACKED_SCENE.instantiate() seedpacket.held_resource = plant add_child(seedpacket) diff --git a/scripts/gui/seedpacket/seedpacket.gd b/scripts/gui/seedpacket/seedpacket.gd index 1409530..2ade2f9 100644 --- a/scripts/gui/seedpacket/seedpacket.gd +++ b/scripts/gui/seedpacket/seedpacket.gd @@ -4,6 +4,8 @@ extends AspectRatioContainer class_name Seedpacket +const PACKED_SCENE := preload("uid://bi4c34ii72y46") + @onready var button : TextureButton = $TextureButton @onready var cost_label : Label = $TextureButton/Cost @onready var preview_texture : TextureRect = $TextureButton/PreviewContainer/Preview @@ -15,18 +17,22 @@ class_name Seedpacket var held_resource : SeedpacketResource var handler : SeedpacketHandler - + +#region Virtuals + func _ready() -> void: focus_exited.connect(on_focus_exited) + LevelEventBus.state_changed.connect(on_level_state_changed) func _process(_delta: float) -> void: button.disabled = recharge_timer.time_left > 0 or handler.is_avaiable() == false -func on_pressed(): - LevelEventBus.packet_selected.emit(held_resource) - if LevelEventBus.packet_placed.is_connected(on_packet_placed) == false: - LevelEventBus.packet_placed.connect(on_packet_placed) - focus_exited.connect(disconnect_placement) +#endregion + +func set_resource(to : SeedpacketResource): + held_resource = to + + recharge_timer.wait_time = held_resource.recharge_time func set_handler(to : SeedpacketHandler): if handler: @@ -40,6 +46,14 @@ func update_contents(): availability.visible = handler.is_avaiable() == false handler.on_updated_contents() +#region Signal recievers + +func on_pressed(): + LevelEventBus.packet_selected.emit(held_resource) + if LevelEventBus.packet_placed.is_connected(on_packet_placed) == false: + LevelEventBus.packet_placed.connect(on_packet_placed) + focus_exited.connect(disconnect_placement) + func on_packet_placed(packet : SeedpacketResource): if held_resource != packet: return recharge_timer.start() @@ -51,3 +65,10 @@ func disconnect_placement(): func on_focus_exited(): LevelEventBus.packet_deselected.emit(held_resource) + +func on_level_state_changed(state : LevelData.LevelStates): + if state == LevelData.LevelStates.Game: + # Recharge with set wait time + recharge_timer.start(held_resource.recharge_time * held_resource.initial_recharge_percent) + recharge_timer.wait_time = held_resource.recharge_time +#endregion