47 lines
1.5 KiB
GDScript
47 lines
1.5 KiB
GDScript
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)
|