69 lines
2.1 KiB
GDScript
69 lines
2.1 KiB
GDScript
class_name GameMenuPartyTab extends Control
|
|
|
|
func refresh() -> void:
|
|
var list = $ScrollContainer/MemberList
|
|
for child in list.get_children():
|
|
child.queue_free()
|
|
for member in PARTY.getFullParty():
|
|
list.add_child(_makeMemberCard(member))
|
|
|
|
func _makeMemberCard(member:PartyMember) -> Control:
|
|
var panel = PanelContainer.new()
|
|
var margin = MarginContainer.new()
|
|
panel.add_child(margin)
|
|
margin.add_theme_constant_override("margin_left", 8)
|
|
margin.add_theme_constant_override("margin_right", 8)
|
|
margin.add_theme_constant_override("margin_top", 6)
|
|
margin.add_theme_constant_override("margin_bottom", 6)
|
|
|
|
var vbox = VBoxContainer.new()
|
|
margin.add_child(vbox)
|
|
|
|
# Name + status row
|
|
var headerRow = HBoxContainer.new()
|
|
vbox.add_child(headerRow)
|
|
|
|
var nameLabel = Label.new()
|
|
nameLabel.text = member.name
|
|
nameLabel.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
headerRow.add_child(nameLabel)
|
|
|
|
var statusLabel = Label.new()
|
|
statusLabel.text = "DEAD" if member.status == BattleFighter.Status.DEAD else "OK"
|
|
headerRow.add_child(statusLabel)
|
|
|
|
# HP row
|
|
var hpRow = HBoxContainer.new()
|
|
hpRow.add_theme_constant_override("separation", 6)
|
|
vbox.add_child(hpRow)
|
|
var hpKey = Label.new()
|
|
hpKey.text = "HP"
|
|
hpKey.custom_minimum_size = Vector2(30, 0)
|
|
hpRow.add_child(hpKey)
|
|
var hpVal = Label.new()
|
|
hpVal.text = "%d / %d" % [member.health, member.maxHealth]
|
|
hpRow.add_child(hpVal)
|
|
|
|
# MP row
|
|
var mpRow = HBoxContainer.new()
|
|
mpRow.add_theme_constant_override("separation", 6)
|
|
vbox.add_child(mpRow)
|
|
var mpKey = Label.new()
|
|
mpKey.text = "MP"
|
|
mpKey.custom_minimum_size = Vector2(30, 0)
|
|
mpRow.add_child(mpKey)
|
|
var mpVal = Label.new()
|
|
mpVal.text = "%d / %d" % [member.mp, member.maxMp]
|
|
mpRow.add_child(mpVal)
|
|
|
|
# Stats row
|
|
var statsRow = HBoxContainer.new()
|
|
statsRow.add_theme_constant_override("separation", 14)
|
|
vbox.add_child(statsRow)
|
|
for pair in [["ATK", member.attack], ["DEF", member.defense], ["SPD", member.speed], ["MAG", member.magic], ["LCK", member.luck]]:
|
|
var label = Label.new()
|
|
label.text = "%s %d" % [pair[0], pair[1]]
|
|
statsRow.add_child(label)
|
|
|
|
return panel
|