Files
idle/generator_buff_tile.gd

49 lines
1.3 KiB
GDScript

class_name GeneratorBuffTile
extends HBoxContainer
signal buy_pressed(buff_id: StringName)
@onready var _icon: TextureRect = $Icon
@onready var _text_label: Label = $TextLabel
@onready var _level_label: Label = $LevelLabel
@onready var _effect_label: Label = $EffectLabel
@onready var _cost_label: Label = $CostLabel
@onready var _buy_button: Button = $BuyButton
var _buff_id: StringName = &""
func set_buff(buff: GeneratorBuffData) -> void:
if buff == null:
_buff_id = &""
_icon.texture = null
_icon.visible = false
_text_label.text = "Unknown Buff"
return
var buff_id_text: String = String(buff.id).strip_edges()
_buff_id = StringName(buff_id_text)
_icon.texture = buff.icon
_icon.visible = buff.icon != null
_text_label.text = buff.text if not buff.text.strip_edges().is_empty() else buff_id_text
func set_runtime(level: int, effect_text: String, cost_text: String, can_buy: bool, is_maxed: bool) -> void:
_level_label.text = "Lv %d" % maxi(level, 0)
_effect_label.text = effect_text
if is_maxed:
_cost_label.text = "Max level"
_buy_button.text = "Max"
_buy_button.disabled = true
return
_cost_label.text = cost_text
_buy_button.text = "Buy"
_buy_button.disabled = not can_buy
func _on_buy_button_pressed() -> void:
if _buff_id == &"":
return
buy_pressed.emit(_buff_id)