using UnityEngine; using System.Collections.Generic; public class UIUpdater : MonoBehaviour { public static UIUpdater Instance; public bool IsReady { get; private set; } = false; private void Awake() { if (Instance != null && Instance != this) Destroy(gameObject); else Instance = this; } private Dictionary characterToUI = new(); public void Register(CharacterInGroup character, CharacterUIController ui) { Debug.Log($"[DEBUG] Enregistrement dans UIUpdater : {character.characterName}"); if (!characterToUI.ContainsKey(character.characterName)) characterToUI.Add(character.characterName, ui); } public void Unregister(string characterName) { if (characterToUI.ContainsKey(characterName)) { characterToUI.Remove(characterName); Debug.Log($"[DEBUG] Désenregistrement de {characterName} dans UIUpdater"); } } // Juste après la méthode Register public void MarkReady() { IsReady = true; } // Si tu veux chercher un UI via juste le nom du personnage public CharacterUIController GetUIForCharacterByName(string name) { if (characterToUI.TryGetValue(name, out var ui)) return ui; Debug.LogWarning($"[Combat] Aucun UI trouvé pour {name}"); return null; } public void UpdateCharacterHP(CharacterInGroup character) { if (characterToUI.TryGetValue(character.characterName, out var ui)) { ui.UpdateHPBar(); } } public void UpdateCharacterFatigue(CharacterInGroup character) { if (characterToUI.TryGetValue(character.characterName, out var ui)) { ui.UpdateFatigueBar(); } } public void UpdateCharacterExperience(CharacterInGroup character) { if (characterToUI.TryGetValue(character.characterName, out var ui)) { ui.UpdateExpBar(); } } public CharacterUIController GetUIForCharacter(CharacterInGroup character) { Debug.Log($"[DEBUG] Recherche UI pour {character.characterName}"); if (characterToUI.TryGetValue(character.characterName, out var ui)) { Debug.Log($"[DEBUG] UI TROUVÉ pour {character.characterName}"); return ui; } Debug.LogWarning($"[DEBUG] Aucun UI trouvé pour {character.characterName}"); return null; } //death ui? } // Calls //Exemple : quand un personnage se soigne : // character.currentHP = Mathf.Min(character.maxHP, character.currentHP + 12); // UIUpdater.Instance?.UpdateCharacterHP(character); // Exemple : quand il gagne de l'expérience : // character.experience += 15; // UIUpdater.Instance?.UpdateCharacterExperience(character); // Exemple : quand il récupère de la fatigue (repos, potion...) : // character.currentFatigue = Mathf.Max(0, character.currentFatigue - 10); // UIUpdater.Instance?.UpdateCharacterFatigue(character);