using System; using UnityEngine; using UnityEngine.UI; using TMPro; // ÆË¾÷ ÀÀ´ä ŸÀÔ public enum PopupResponse { Confirm, // È®Á¤ Cancel, // Ãë¼Ò Option1, // (¿¹: ¿©±â·Î À̵¿) Option2 // (¿¹: »èÁ¦) } public interface IPopupView { event Action OnPopupResponse; void ShowConfirmPopup(string title, string message); // 2, 5´Ü°è¿ë (È®Á¤/Ãë¼Ò) void ShowOptionPopup(string title, string message, string opt1Text, string opt2Text); // 8´Ü°è¿ë (À̵¿/»èÁ¦) void HidePopup(); } public class PopupView : MonoBehaviour, IPopupView { public event Action OnPopupResponse; [SerializeField] private GameObject popupPanel; [SerializeField] private TextMeshProUGUI titleText; [SerializeField] private TextMeshProUGUI messageText; [SerializeField] private Button confirmButton; // 'È®Á¤' ¹öư [SerializeField] private Button cancelButton; // 'Ãë¼Ò' ¹öư [SerializeField] private Button option1Button; // '¿É¼Ç1(À̵¿)' ¹öư [SerializeField] private Button option2Button; // '¿É¼Ç2(»èÁ¦)' ¹öư void Start() { // °¢ ¹öưÀÌ Å¬¸¯µÇ¸é Presenter¿¡°Ô ÀÀ´ä À̺¥Æ®¸¦ º¸³¿ confirmButton.onClick.AddListener(() => OnPopupResponse?.Invoke(PopupResponse.Confirm)); cancelButton.onClick.AddListener(() => OnPopupResponse?.Invoke(PopupResponse.Cancel)); option1Button.onClick.AddListener(() => OnPopupResponse?.Invoke(PopupResponse.Option1)); option2Button.onClick.AddListener(() => OnPopupResponse?.Invoke(PopupResponse.Option2)); popupPanel.SetActive(false); } public void ShowConfirmPopup(string title, string message) { titleText.text = title; messageText.text = message; confirmButton.gameObject.SetActive(true); cancelButton.gameObject.SetActive(true); option1Button.gameObject.SetActive(false); option2Button.gameObject.SetActive(false); popupPanel.SetActive(true); } public void ShowOptionPopup(string title, string message, string opt1Text, string opt2Text) { titleText.text = title; messageText.text = message; option1Button.GetComponentInChildren().text = opt1Text; option2Button.GetComponentInChildren().text = opt2Text; confirmButton.gameObject.SetActive(false); cancelButton.gameObject.SetActive(true); // Ãë¼Ò ¹öưÀº °ø¿ëÀ¸·Î »ç¿ë option1Button.gameObject.SetActive(true); option2Button.gameObject.SetActive(true); popupPanel.SetActive(true); } public void HidePopup() { popupPanel.SetActive(false); } }