using UnityEngine; using UnityEngine.UI; using DamageNumbersPro; using System.Collections; public class CharacterUIController : MonoBehaviour { public Slider hpSlider; public Slider fatigueSlider; public Slider expSlider; public GameObject skillPanel; public Transform skillListContainer; public GameObject skillButtonPrefab; public GameObject inventoryPanel; // Panel displaying character inventory public InventoryUIController inventoryUIController; // Reference to inventory UI controller public Image characterIcon; public Button attackButton; public Button repeatActionButton; public Button openSkillsButton; public Button openInventoryButton; // Button to open character inventory public Image cooldownOverlay; public FirstPersonWeapon assignedWeapon; public CharacterInGroup character; public CharacterInGroup Character => character; public DamageNumber damageUIPrefab; // à assigner dans l’inspector (UI) public RectTransform damageSpawnPoint; public void Setup(CharacterInGroup chara, FirstPersonWeapon weapon) { character = chara; assignedWeapon = weapon; // Initialisation des sliders if (hpSlider != null) { hpSlider.maxValue = character.maxHP; hpSlider.value = character.currentHP; } if (fatigueSlider != null) { fatigueSlider.maxValue = character.maxFatigue; fatigueSlider.value = character.currentFatigue; } if (expSlider != null) { expSlider.maxValue = 100; expSlider.value = character.experience; } if (attackButton != null) attackButton.onClick.AddListener(OnAttack); if (repeatActionButton != null) repeatActionButton.onClick.AddListener(OnRepeat); if (openSkillsButton != null) openSkillsButton.onClick.AddListener(ToggleSkillPanel); if (openInventoryButton != null) openInventoryButton.onClick.AddListener(OnOpenInventory); UIUpdater.Instance?.Register(character, this); PopulateSkillList(); if (cooldownOverlay != null) { cooldownOverlay.gameObject.SetActive(false); } } public void ShowDamageOnCard(int amount) { if (damageUIPrefab != null && damageSpawnPoint != null) { damageUIPrefab.SpawnGUI(damageSpawnPoint, Vector2.zero, amount); } } void PopulateSkillList() { foreach (Transform child in skillListContainer) Destroy(child.gameObject); foreach (var skill in character.learnedSkills) { SkillData data = skill.GetData(); if (data == null) continue; var btnObj = Instantiate(skillButtonPrefab, skillListContainer); btnObj.transform.Find("Image").GetComponent().sprite = data.icon; Button btn = btnObj.GetComponent