RecruitDialogueUI.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using TMPro;
  4. public class RecruitDialogueUI : MonoBehaviour
  5. {
  6. public static RecruitDialogueUI Instance;
  7. public GameObject panel;
  8. public TextMeshProUGUI messageText;
  9. public Button yesButton;
  10. public Button noButton;
  11. private RecruitableCharacter currentRecruit;
  12. private void Awake()
  13. {
  14. Instance = this;
  15. panel.SetActive(false); // Panel caché au démarrage
  16. }
  17. public void ShowRecruitDialog(RecruitableCharacter recruit)
  18. {
  19. currentRecruit = recruit;
  20. messageText.text = "Bonjour, puis-je me joindre à vous ?";
  21. panel.SetActive(true);
  22. yesButton.onClick.RemoveAllListeners();
  23. noButton.onClick.RemoveAllListeners();
  24. yesButton.onClick.AddListener(() =>
  25. {
  26. AddToParty(currentRecruit);
  27. panel.SetActive(false);
  28. Destroy(currentRecruit.gameObject);
  29. });
  30. noButton.onClick.AddListener(() =>
  31. {
  32. panel.SetActive(false);
  33. });
  34. }
  35. public void Hide()
  36. {
  37. panel.SetActive(false);
  38. }
  39. void AddToParty(RecruitableCharacter recruit)
  40. {
  41. if (FindObjectOfType<TeamCohesionManager>().groupMembers.Count >= 5)
  42. {
  43. Debug.LogWarning("Le groupe est complet. Impossible de recruter un nouveau personnage.");
  44. return;
  45. }
  46. var newChar = recruit.GenerateCharacter();
  47. TeamCohesionManager team = FindObjectOfType<TeamCohesionManager>();
  48. var existing = team.groupMembers;
  49. for (int y = 0; y < 5; y++)
  50. {
  51. for (int x = 0; x < 5; x++)
  52. {
  53. bool used = existing.Exists(c => c.gridX == x && c.gridY == y);
  54. if (!used)
  55. {
  56. newChar.gridX = x;
  57. newChar.gridY = y;
  58. Debug.Log("Héros placé en " + newChar.gridX + "," + newChar.gridY);
  59. team.groupMembers.Add(newChar);
  60. // Ajout à la grille visuelle
  61. PositionGridManager grid = FindObjectOfType<PositionGridManager>();
  62. if (grid != null)
  63. {
  64. grid.AddCharacter(newChar);
  65. }
  66. else
  67. {
  68. Debug.LogWarning("[Recruitment] Aucun PositionGridManager trouvé dans la scène.");
  69. }
  70. // Rafraîchit l'UI
  71. PartyUIManager ui = FindObjectOfType<PartyUIManager>();
  72. ui.DisplayPartyUI();
  73. return;
  74. }
  75. }
  76. }
  77. Debug.Log("Pas de place libre sur la grille pour un nouveau héros !");
  78. }
  79. }