using UnityEngine; using UnityEngine.UI; using TMPro; public class RecruitDialogueUI : MonoBehaviour { public static RecruitDialogueUI Instance; public GameObject panel; public TextMeshProUGUI messageText; public Button yesButton; public Button noButton; private RecruitableCharacter currentRecruit; private void Awake() { Instance = this; panel.SetActive(false); // Panel caché au démarrage } public void ShowRecruitDialog(RecruitableCharacter recruit) { currentRecruit = recruit; messageText.text = "Bonjour, puis-je me joindre à vous ?"; panel.SetActive(true); yesButton.onClick.RemoveAllListeners(); noButton.onClick.RemoveAllListeners(); yesButton.onClick.AddListener(() => { AddToParty(currentRecruit); panel.SetActive(false); Destroy(currentRecruit.gameObject); }); noButton.onClick.AddListener(() => { panel.SetActive(false); }); } public void Hide() { panel.SetActive(false); } void AddToParty(RecruitableCharacter recruit) { if (FindObjectOfType().groupMembers.Count >= 5) { return; } var newChar = recruit.GenerateCharacter(); TeamCohesionManager team = FindObjectOfType(); var existing = team.groupMembers; for (int y = 0; y < 5; y++) { for (int x = 0; x < 5; x++) { bool used = existing.Exists(c => c.gridX == x && c.gridY == y); if (!used) { newChar.gridX = x; newChar.gridY = y; team.groupMembers.Add(newChar); PositionGridManager grid = FindObjectOfType(); if (grid != null) { grid.AddCharacter(newChar); } PartyUIManager ui = FindObjectOfType(); ui.DisplayPartyUI(); return; } } } } }