69 lines
2.5 KiB
GDScript
69 lines
2.5 KiB
GDScript
extends PanelContainer
|
|
|
|
@onready var player: CharacterBody2D = get_node("../../../PlayerShip")
|
|
@onready var level_label: Label = $Contents/Header/Level
|
|
@onready var xp_label: Label = $Contents/XPLabel
|
|
@onready var xp_bar: ProgressBar = $Contents/XPBar
|
|
@onready var credits_label: Label = $Contents/Wallet/Credits
|
|
|
|
var _captain: CaptainProgress
|
|
|
|
func _ready() -> void:
|
|
_build_portrait()
|
|
_captain = GameState.captain
|
|
_captain.normalize_skill_ranks()
|
|
_captain.changed.connect(_refresh)
|
|
player.get_node("ShipInventory").connect("inventory_changed", _refresh)
|
|
_refresh()
|
|
|
|
func _refresh() -> void:
|
|
level_label.text = "POZ. %d" % _captain.level
|
|
xp_label.text = "XP %d / %d" % [_captain.experience, _captain.get_xp_required()]
|
|
xp_bar.max_value = _captain.get_xp_required()
|
|
xp_bar.value = _captain.experience
|
|
credits_label.text = "Kredyty: %d" % _captain.credits
|
|
|
|
func _build_portrait() -> void:
|
|
custom_minimum_size = Vector2(320, 0)
|
|
var style := StyleBoxFlat.new()
|
|
style.bg_color = Color(0.025, 0.042, 0.064, 0.96)
|
|
style.border_color = Color("376779")
|
|
style.set_border_width_all(1)
|
|
style.set_corner_radius_all(8)
|
|
style.set_content_margin_all(10)
|
|
add_theme_stylebox_override("panel", style)
|
|
var row := HBoxContainer.new()
|
|
row.name = "PortraitRow"
|
|
row.add_theme_constant_override("separation", 10)
|
|
$Contents.add_child(row)
|
|
$Contents.move_child(row, 1)
|
|
var frame := PanelContainer.new()
|
|
frame.name = "AvatarFrame"
|
|
var portrait_style := style.duplicate() as StyleBoxFlat
|
|
portrait_style.set_content_margin_all(2)
|
|
portrait_style.border_color = Color("daa85d")
|
|
frame.add_theme_stylebox_override("panel", portrait_style)
|
|
row.add_child(frame)
|
|
var portrait := TextureRect.new()
|
|
portrait.name = "CaptainAvatar"
|
|
portrait.custom_minimum_size = Vector2(76, 76)
|
|
portrait.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
|
portrait.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_COVERED
|
|
portrait.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
if ResourceLoader.exists("res://assets/avatars/captain.png"):
|
|
portrait.texture = load("res://assets/avatars/captain.png")
|
|
frame.add_child(portrait)
|
|
var info := VBoxContainer.new()
|
|
info.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
info.alignment = BoxContainer.ALIGNMENT_CENTER
|
|
row.add_child(info)
|
|
var designation := Label.new()
|
|
designation.text = "DOWÓDCA STATKU"
|
|
designation.add_theme_font_size_override("font_size", 11)
|
|
designation.add_theme_color_override("font_color", Color("91dbea"))
|
|
info.add_child(designation)
|
|
xp_label.reparent(info, false)
|
|
xp_bar.reparent(info, false)
|
|
xp_bar.custom_minimum_size.y = 5
|
|
|