extends AspectRatioContainer ## Class that allows player to choose SeedpacketResource class_name Seedpacket @onready var button : TextureButton = $TextureButton @onready var cost_label : Label = $TextureButton/Cost @onready var preview_texture : TextureRect = $TextureButton/PreviewContainer/Preview @onready var availability : ColorRect = $TextureButton/Availability @onready var forbidden : TextureRect = $TextureButton/Forbidden @onready var locked : TextureRect = $TextureButton/Locked @onready var recharge_timer : Timer = $RechargeTimer 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_label.text = str(int(held_resource.cost)) preview_texture.texture = held_resource.preview availability.visible = handler.is_avaiable() == false handler.on_updated_contents() func on_packet_placed(packet : SeedpacketResource): if held_resource != packet: return recharge_timer.start() disconnect_placement() func disconnect_placement(): LevelEventBus.packet_placed.disconnect(on_packet_placed) focus_exited.disconnect(disconnect_placement)