using System; using System.Collections.Generic; using UnityEngine; namespace MoleMole { public abstract class BaseMonoCanvas : MonoBehaviour { private List _canvasTimers = new List(); private List _newTimersDuringUpdate = new List(); private GMTalkDialogContext _GMTalkDialogContext; private GeneralConfirmDialogContext _quitGameDialogContext; public virtual void Start() { GameObject gameObject = GameObject.Find("EventSystem"); if (gameObject != null) { } string sceneName = "Loading"; if (this is MonoMainCanvas) { sceneName = "MainMenuWithSpaceship"; } Action callBackWhenSceneLoaded = Singleton.Instance.GetCallBackWhenSceneLoaded(sceneName); if (callBackWhenSceneLoaded != null) { callBackWhenSceneLoaded(); } Singleton.Instance.ResetSceneLoadedCallBack(sceneName); } public virtual void Update() { RemoveAllTimeUpTimer(); _canvasTimers.AddRange(_newTimersDuringUpdate); _newTimersDuringUpdate.Clear(); for (int i = 0; i < _canvasTimers.Count; i++) { CanvasTimer canvasTimer = _canvasTimers[i]; canvasTimer.Core(); } if (GlobalVars.DEBUG_FEATURE_ON) { UpdateForGMTalk(); } UpdateEscapeListener(); } public virtual void OnDestroy() { } public virtual void PlayVideo(CgDataItem cgDataItem) { } private void RemoveAllTimeUpTimer() { _canvasTimers.RemoveAll((CanvasTimer x) => x.IsTimeUp); } public CanvasTimer CreateTimer(float m_timespan, float m_triggerCD = 0f) { CanvasTimer canvasTimer = new CanvasTimer(); canvasTimer.timespan = m_timespan; canvasTimer.triggerCD = m_triggerCD; CanvasTimer canvasTimer2 = canvasTimer; _newTimersDuringUpdate.Add(canvasTimer2); return canvasTimer2; } public CanvasTimer CreateInfiniteTimer(float m_triggerCD = 0f) { CanvasTimer canvasTimer = new CanvasTimer(); canvasTimer.infiniteTimeSpan = true; canvasTimer.triggerCD = m_triggerCD; CanvasTimer canvasTimer2 = canvasTimer; _newTimersDuringUpdate.Add(canvasTimer2); return canvasTimer2; } private void UpdateForGMTalk() { if (Input.touchCount == 4) { if (_GMTalkDialogContext == null) { _GMTalkDialogContext = new GMTalkDialogContext(); } if (_GMTalkDialogContext.view == null) { Singleton.Instance.ShowDialog(_GMTalkDialogContext); } } } private void UpdateEscapeListener() { if (Input.GetKeyUp(KeyCode.Escape)) { Singleton.Instance.manager.ShowExitUI(); } } public virtual GameObject GetSpaceShipObj() { return null; } public virtual void ClearAllWidgetContext() { } public void ShowQuitGameDialog() { if (_quitGameDialogContext == null) { _quitGameDialogContext = new GeneralConfirmDialogContext { type = GeneralConfirmDialogContext.ButtonType.DoubleButton, desc = LocalizationGeneralLogic.GetText("Menu_Desc_EscQuitGame"), buttonCallBack = delegate(bool confirmed) { if (confirmed) { Singleton.Instance.manager.DoExit(); } else { Singleton.Instance.FireNotify(new Notify(NotifyTypes.OnQuitGameDialogDestroy)); } } }; } if (_quitGameDialogContext.view == null) { Singleton.Instance.ShowDialog(_quitGameDialogContext); Singleton.Instance.FireNotify(new Notify(NotifyTypes.OnQuitGameDialogShow)); } } } }