61 lines
1.8 KiB
GDScript
61 lines
1.8 KiB
GDScript
extends AspectRatioContainer
|
|
|
|
@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 forbidden : bool = false
|
|
var locked : bool = false
|
|
var hotbar : bool = false
|
|
var disabled : bool = false
|
|
|
|
#region Godot methods
|
|
func _ready() -> void:
|
|
LevelEventBus.entity_placed.connect(on_entity_placed)
|
|
LevelEventBus.sun_count_updated.connect(on_sun_count_updated)
|
|
LevelEventBus.state_changed.connect(on_level_state_changed)
|
|
|
|
func _process(_delta: float) -> void:
|
|
button.disabled = recharge_timer.time_left > 0 or forbidden or locked or disabled
|
|
update_contents()
|
|
#endregion
|
|
|
|
#region Signal methods
|
|
func on_pressed():
|
|
LevelEventBus.packet_selected.emit(held_resource)
|
|
if LevelData.state == LevelData.LevelStates.Game:
|
|
LevelEventBus.packet_selected_during_game.emit(held_resource)
|
|
|
|
func on_entity_placed(entity : SeedpacketResource):
|
|
if entity == held_resource:
|
|
recharge_timer.start()
|
|
#endregion
|
|
|
|
func set_resource(to : SeedpacketResource):
|
|
held_resource = to
|
|
update_contents()
|
|
|
|
func update_contents():
|
|
cost.text = str(held_resource.cost)
|
|
preview.texture = held_resource.preview
|
|
avaibility.visible = forbidden or locked or disabled
|
|
locked_rect.visible = locked
|
|
forbidden_rect.visible = forbidden
|
|
|
|
func on_sun_count_updated(to : float):
|
|
if hotbar:
|
|
disabled = held_resource.cost < to
|
|
|
|
func on_level_state_changed(state : LevelData.LevelStates):
|
|
match state:
|
|
LevelData.LevelStates.Game:
|
|
disabled = held_resource.cost < LevelData.sun_count
|
|
LevelData.LevelStates.PlantPick:
|
|
disabled = false
|
|
_:
|
|
disabled = true
|