49 lines
1.3 KiB
GDScript
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)
|