| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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<TeamCohesionManager>().groupMembers.Count >= 5)
- {
- Debug.LogWarning("Le groupe est complet. Impossible de recruter un nouveau personnage.");
- return;
- }
- var newChar = recruit.GenerateCharacter();
- TeamCohesionManager team = FindObjectOfType<TeamCohesionManager>();
- 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;
- Debug.Log("Héros placé en " + newChar.gridX + "," + newChar.gridY);
- team.groupMembers.Add(newChar);
- // Ajout à la grille visuelle
- PositionGridManager grid = FindObjectOfType<PositionGridManager>();
- if (grid != null)
- {
- grid.AddCharacter(newChar);
- }
- else
- {
- Debug.LogWarning("[Recruitment] Aucun PositionGridManager trouvé dans la scène.");
- }
- // Rafraîchit l'UI
- PartyUIManager ui = FindObjectOfType<PartyUIManager>();
- ui.DisplayPartyUI();
- return;
- }
- }
- }
- Debug.Log("Pas de place libre sur la grille pour un nouveau héros !");
- }
- }
|