# CharacterPanel.gd # Zeigt Charakterinfos: Klasse, Level, Stats und Equipment extends CanvasLayer var panel_visible = false @onready var panel = $Panel @onready var class_label = $Panel/HBoxContainer/StatsColumn/ClassLabel @onready var level_label = $Panel/HBoxContainer/StatsColumn/LevelLabel @onready var stats_container = $Panel/HBoxContainer/StatsColumn/StatsContainer @onready var str_label = $Panel/HBoxContainer/StatsColumn/StatsContainer/StrLabel @onready var agi_label = $Panel/HBoxContainer/StatsColumn/StatsContainer/AgiLabel @onready var int_label = $Panel/HBoxContainer/StatsColumn/StatsContainer/IntLabel @onready var sta_label = $Panel/HBoxContainer/StatsColumn/StatsContainer/StaLabel @onready var armor_label = $Panel/HBoxContainer/StatsColumn/StatsContainer/ArmorLabel @onready var hp_label = $Panel/HBoxContainer/StatsColumn/HPLabel @onready var damage_label = $Panel/HBoxContainer/EquipmentColumn/DamageLabel @onready var dps_label = $Panel/HBoxContainer/EquipmentColumn/DPSLabel # Equipment Slots @onready var head_slot = $Panel/HBoxContainer/EquipmentColumn/EquipmentContainer/HeadSlot @onready var chest_slot = $Panel/HBoxContainer/EquipmentColumn/EquipmentContainer/ChestSlot @onready var hands_slot = $Panel/HBoxContainer/EquipmentColumn/EquipmentContainer/HandsSlot @onready var legs_slot = $Panel/HBoxContainer/EquipmentColumn/EquipmentContainer/LegsSlot @onready var feet_slot = $Panel/HBoxContainer/EquipmentColumn/EquipmentContainer/FeetSlot @onready var weapon_slot = $Panel/HBoxContainer/EquipmentColumn/WeaponSlot @onready var offhand_slot = $Panel/HBoxContainer/EquipmentColumn/OffhandSlot func _ready(): panel.visible = false func toggle(): panel_visible = !panel_visible panel.visible = panel_visible func update_stats(player): if player.character_class: var main_stat_name = "" match player.character_class.main_stat: CharacterClass.MainStat.STRENGTH: main_stat_name = "STR" CharacterClass.MainStat.AGILITY: main_stat_name = "AGI" CharacterClass.MainStat.INTELLIGENCE: main_stat_name = "INT" class_label.text = player.character_class.class_name_de + " (Haupt: " + main_stat_name + ")" else: class_label.text = "Keine Klasse" level_label.text = "Level " + str(player.level) + " (" + str(player.current_xp) + "/" + str(player.xp_to_next_level) + " XP)" str_label.text = "Stärke: " + str(player.strength) agi_label.text = "Beweglichkeit: " + str(player.agility) int_label.text = "Intelligenz: " + str(player.intelligence) sta_label.text = "Ausdauer: " + str(player.stamina) armor_label.text = "Rüstung: " + str(player.armor) hp_label.text = "HP: " + str(player.current_hp) + " / " + str(player.max_hp) # Waffen-Stats (jetzt in Equipment-Spalte) var weapon = player.get_equipped_weapon() if weapon: damage_label.text = "Schaden: " + str(weapon.min_damage) + "-" + str(weapon.max_damage) + " (%.1fs)" % weapon.attack_speed else: # Unbewaffnet: klassenabhängiger Schaden if player.character_class: var min_dmg = player.character_class.unarmed_min_damage var max_dmg = player.character_class.unarmed_max_damage var atk_spd = player.character_class.unarmed_attack_speed damage_label.text = "Unbewaffnet: " + str(min_dmg) + "-" + str(max_dmg) + " (%.1fs)" % atk_spd else: damage_label.text = "Unbewaffnet: 1-2 (2.0s)" dps_label.text = "DPS: %.1f" % player.get_dps() # Main-Stat hervorheben str_label.modulate = Color(1, 1, 1) agi_label.modulate = Color(1, 1, 1) int_label.modulate = Color(1, 1, 1) if player.character_class: match player.character_class.main_stat: CharacterClass.MainStat.STRENGTH: str_label.modulate = Color(1, 0.8, 0.2) CharacterClass.MainStat.AGILITY: agi_label.modulate = Color(1, 0.8, 0.2) CharacterClass.MainStat.INTELLIGENCE: int_label.modulate = Color(1, 0.8, 0.2) # Equipment aktualisieren _update_equipment_slot(head_slot, "Kopf", player.equipment[Equipment.Slot.HEAD]) _update_equipment_slot(chest_slot, "Brust", player.equipment[Equipment.Slot.CHEST]) _update_equipment_slot(hands_slot, "Hände", player.equipment[Equipment.Slot.HANDS]) _update_equipment_slot(legs_slot, "Beine", player.equipment[Equipment.Slot.LEGS]) _update_equipment_slot(feet_slot, "Füße", player.equipment[Equipment.Slot.FEET]) _update_equipment_slot(weapon_slot, "Waffe", player.equipment[Equipment.Slot.WEAPON]) _update_equipment_slot(offhand_slot, "Nebenhand", player.equipment[Equipment.Slot.OFFHAND]) func _update_equipment_slot(label: Label, slot_name: String, item: Equipment): if item == null: label.text = slot_name + ": -" label.modulate = Color(0.6, 0.6, 0.6) else: label.text = slot_name + ": " + item.item_name label.modulate = Equipment.get_rarity_color(item.rarity)