コード例 #1
0
 public void UnregisterWindow(WindowReference element, GameObject obj)
 {
     if (windowLookUp.ContainsKey(element) && windowLookUp[element] == obj)
     {
         windowLookUp.Remove(element);
     }
 }
コード例 #2
0
        public bool ToggleUiElement(WindowReference element)
        {
            if (element == WindowReference.PauseMenu && currentActive != WindowReference.PauseMenu &&
                currentActive != WindowReference.None && currentActive != WindowReference.Dialogue)
            {
                return(HideUiElement(currentActive));
            }

            return(IsUiElementShown(element) ? HideUiElement(element) : ShowUiElement(element));
        }
コード例 #3
0
 public void RegisterWindow(WindowReference element, GameObject obj)
 {
     if (windowLookUp.ContainsKey(element))
     {
         windowLookUp[element] = obj;
     }
     else
     {
         windowLookUp.Add(element, obj);
     }
 }
コード例 #4
0
        public bool ShowUiElement(WindowReference element)
        {
            if (currentActive != WindowReference.None)
            {
                return(false);
            }
            if (!TryGetWindow(element, out GameObject windowObj))
            {
                return(false);
            }

            windowObj.SetActive(true);
            currentActive = element;

            if (windowObj.TryGetComponent(out IUiWindow uiWindow))
            {
                uiWindow.Show();
            }

            return(true);
        }
コード例 #5
0
        public bool HideUiElement(WindowReference element)
        {
            if (currentActive == WindowReference.None || currentActive != element)
            {
                return(false);
            }
            if (!TryGetWindow(element, out GameObject windowObj))
            {
                return(false);
            }

            if (windowObj.TryGetComponent(out IUiWindow uiWindow))
            {
                uiWindow.Hide();
            }

            windowObj.SetActive(false);
            currentActive = WindowReference.None;

            return(true);
        }
コード例 #6
0
 private void Awake()
 {
     Instance = this;
     SceneManager.Instance.OnEndSceneChange += _ => currentActive = WindowReference.None;
 }
コード例 #7
0
 private bool TryGetWindow(WindowReference element, out GameObject obj) => windowLookUp.TryGetValue(element, out obj);
コード例 #8
0
 private bool IsUiElementShown(WindowReference element) => TryGetWindow(element, out GameObject obj) && obj.activeSelf;