newlon/scripts/gui/seedpacket/seedpacket.gd
2025-08-02 23:32:32 +05:00

45 lines
1.4 KiB
GDScript

extends AspectRatioContainer
## Class that allows player to choose SeedpacketResource
class_name Seedpacket
@onready var button := $TextureButton
@onready var preview :=$TextureButton/PreviewContainer/Preview
@onready var cost := $TextureButton/Cost
@onready var avaibility := $TextureButton/AvaiabilityRect
@onready var recharge_timer := $RechargeTimer
@onready var forbidden_rect := $TextureButton/Forbidden
@onready var locked_rect := $TextureButton/Locked
var held_resource : SeedpacketResource
var handler : SeedpacketHandler
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)
func set_handler(to : SeedpacketHandler):
if handler:
handler.exit()
handler = to
update_contents()
func update_contents():
cost.text = str(held_resource.cost)
preview.texture = held_resource.preview
avaibility.visible = handler.is_avaiable() == false
handler.on_updated_contents()
func on_packet_placed(packet : SeedpacketResource):
if held_resource != packet: return
disconnect_placement()
func disconnect_placement():
LevelEventBus.packet_placed.disconnect(on_packet_placed)
focus_exited.disconnect(disconnect_placement)