using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [RequireComponent(typeof(CanvasGroup))] public class MessageDialog : MonoBehaviour { private static MessageDialog m_instance; public static MessageDialog instance=>m_instance; public TMPro.TMP_Text titleTxt; public TMPro.TMP_Text messageTxt; // public GameObject closeButton; public Button okayBtn; public Button yesBtn; public Button noBtn; public bool showing => GetComponent().blocksRaycasts; void Start() { m_instance = this; okayBtn.onClick.AddListener(OnOkay); yesBtn.onClick.AddListener(OnClickedYes); noBtn.onClick.AddListener(OnClickedNo); SetActive(false); DontDestroyOnLoad(gameObject); } void OnOkay(){ if(showing){ SetActive(false); } AudioManager.instnace.UIClick(); } public void ShowMessage(string title, string message){ Debug.Log(message + ", Already Showing : " + gameObject.activeSelf); titleTxt.text = title; messageTxt.text = message; yesBtn.gameObject.SetActive(false); noBtn.gameObject.SetActive(false); okayBtn.gameObject.SetActive(true); SetActive(true); Refresh(); AudioManager.instnace.UIPopup(); // messageTxt.gameObject.SetActive(true); } UnityAction onYes = ()=>{}; UnityAction onNo = ()=>{}; public void ShowQuestion(string title, string message, UnityAction OnYes, UnityAction OnNo, bool onlyYes = false){ titleTxt.text = title; messageTxt.text = message; onYes = OnYes; onNo = OnNo; yesBtn.gameObject.SetActive(true); noBtn.gameObject.SetActive(!onlyYes); okayBtn.gameObject.SetActive(false); SetActive(true); Refresh(); AudioManager.instnace.UIPopup(); } void OnClickedYes(){ if(onYes!=null){onYes();} OnOkay(); AudioManager.instnace.UIClick(); } void OnClickedNo(){ if(onNo!=null){onNo();} OnOkay(); AudioManager.instnace.UIClick(); } public void SetActive(bool value){ GetComponent().blocksRaycasts= value; GetComponent().interactable= value; GetComponent().alpha= (value) ? 1: 0; } void Refresh(){ Canvas.ForceUpdateCanvases(); GetComponentInChildren().enabled=false; GetComponentInChildren().enabled=true; } }