using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; using TMPro; public class InGamePauseDialog : BaseDialog { [SerializeField] TextMeshProUGUI m_headerText; [SerializeField] TextMeshProUGUI m_progressText; [SerializeField] TextMeshProUGUI m_soundText; [SerializeField] Button m_buttonToMenu; [SerializeField] Button m_buttonResume; [SerializeField] Button m_buttonSound; [SerializeField] Sprite m_activeToggle; [SerializeField] Sprite m_nonActiveToggle; bool m_isSoundActive = true; //----------------------------------------------------------------------------------------- void Start () { m_type = DialogType.IN_GAME_PAUSE_DIALOG; } //----------------------------------------------------------------------------------------- public void Init() { m_isSoundActive = GlobalsVar.gNeedPlaySounds; InitTexts(); InitButtons(); } //----------------------------------------------------------------------------------------- void InitButtons() { if (m_buttonToMenu) { m_buttonToMenu.onClick.AddListener(ButtonPress); CommonFunctions.SetButtonText(m_buttonToMenu.gameObject, GlobalsVar.gGameTextMng.GetGameText(27).ToUpper()); } if (m_buttonResume) { m_buttonResume.onClick.AddListener(ButtonPress); CommonFunctions.SetButtonText(m_buttonResume.gameObject, GlobalsVar.gGameTextMng.GetGameText(28).ToUpper()); } if (m_buttonSound) { m_buttonSound.onClick.AddListener(ButtonPress); m_buttonSound.transform.Find("text_on").GetComponent().text = GlobalsVar.gGameTextMng.GetGameText(33).ToUpper(); m_buttonSound.transform.Find("text_off").GetComponent().text = GlobalsVar.gGameTextMng.GetGameText(34).ToUpper(); SetToggleState(m_buttonSound.gameObject, m_isSoundActive); } } //----------------------------------------------------------------------------------------- void SetToggleState(GameObject obj, bool active) { Image img = obj.GetComponent(); if (obj == m_buttonSound.gameObject) { m_isSoundActive = active; if (m_isSoundActive) { img.sprite = m_activeToggle; m_buttonSound.transform.Find("text_on").gameObject.SetActive(true); m_buttonSound.transform.Find("text_off").gameObject.SetActive(false); } else { img.sprite = m_nonActiveToggle; m_buttonSound.transform.Find("text_on").gameObject.SetActive(false); m_buttonSound.transform.Find("text_off").gameObject.SetActive(true); } } } //----------------------------------------------------------------------------------------- void ButtonPress() { GameObject currentClickedObj = EventSystem.current.currentSelectedGameObject; if (currentClickedObj == m_buttonResume.gameObject) HideDialog(); else if (currentClickedObj == m_buttonToMenu.gameObject) { HideDialog(); Time.timeScale = 1f; if (GlobalsVar.gBoard) { GameObject dlg = GlobalsVar.gBoard.StartDialog("EndRunDialog"); dlg.GetComponent().Init(); } } else if (currentClickedObj == m_buttonSound.gameObject) { SetToggleState(m_buttonSound.gameObject, !m_isSoundActive); if (m_isSoundActive) GlobalsVar.gNeedPlaySounds = true; else GlobalsVar.gNeedPlaySounds = false; } } //----------------------------------------------------------------------------------------- void InitTexts() { if (m_headerText) m_headerText.text = GlobalsVar.gGameTextMng.GetGameText(26).ToUpper(); if (m_progressText) { int stageId = CommonFunctions.GetStageId(); int maxRooms = GlobalsVar.gRoomByStage[stageId - 1]; string progressStr = string.Format(GlobalsVar.gGameTextMng.GetGameText(25), GlobalsVar.gCurrentRoomInRun - 1, maxRooms); m_progressText.text = progressStr; } if (m_soundText) m_soundText.text = GlobalsVar.gGameTextMng.GetGameText(30); } //----------------------------------------------------------------------------------------- public override void Update () { base.Update(); } }