Пример #1
0
        public void Dispose()
        {
            mUICacher.Clear();

            mCurrent  = default;
            mPrevious = default;
        }
Пример #2
0
        private void Awake()
        {
            IUIStack uiStack = gameObject.AddComponent <UIStack>();

            uiStack.SetDependencies(_slider, permanentbottom);
            BasePopup.SetDependencies(uiStack);
            permanentbottom._uiStack = uiStack;

            Application.targetFrameRate = 45;
            EventBus.Instance.register <IRepositoryEvents>(gameObject);
            StorageManager instance = StorageManager.Instance;

            _repo = new Repository();
            BaseModel.SetDependencies(_repo);

            _subjectController.SetDependencies(_repo);
            _subjectController2.SetDependencies(_repo);
            _favView.SetDependencies(_repo);
            _homeView.SetDependencies(_repo);
            _registerView.SetDependencies(_repo);
            _ratingView.SetDependencies(_repo);
            _loginView.SetDependencies(this);
            _settingsView.SetGuiRoot(this);
            UserManager.Instance.SetRepo(_repo);
            _repo.Initialize();
        }
Пример #3
0
    /// <summary>
    /// 关闭界面
    /// </summary>
    /// <param name="stackName"></param>
    /// <param name="isDestroy"></param>
    public static void Close(this string stackName, bool isDestroy = false)
    {
        UIManager uis   = Framework.Instance.GetUnit <UIManager>(Framework.UNIT_UI);
        IUIStack  stack = uis.GetUI <IUIStack>(stackName);

        uis.Close(stackName, isDestroy);
    }
Пример #4
0
        protected override void Start()
        {
            base.Start();

            if (m_ApplyInitSelf)
            {
                IUIStack stack = CreateModular();
                if (stack != default)
                {
                    UIs.Open <UIStack>(stack.Name, () =>
                    {
                        UIs.BindResourcesUIToStack(stack, gameObject, ActiveSelfControlHide);
                        return(stack);
                    });
                }
                else
                {
                }

                ParamNotice <MonoBehaviour> notice = Pooling <ParamNotice <MonoBehaviour> > .From();

                int noticeName = GetInstanceID();
                noticeName.Broadcast(notice);
                notice.ToPool();
            }
            else
            {
            }
        }
Пример #5
0
        private bool RemoveStack(IUIStack target)
        {
            bool result = IsStackCurrent(target, true);

            if (result)
            {
                StackCurrent = mUIStacks.Pop();
            }
            return(result);
        }
Пример #6
0
        public bool IsStackCurrent(IUIStack target, bool isCheckValid = false)
        {
            IUIStack item = default;

            if (isCheckValid)
            {
                CheckStackCurrentValid(ref item);
            }
            else
            {
                item = (isCheckValid && (mUIStacks.Count > 0)) ? mUIStacks.Peek() : default;
            }
            return((item != default) && (target != default) && item.Name.Equals(target.Name));
        }
Пример #7
0
        public async Task <Widget> CreateInstance(IUIStack manager, string name, UIMessage message)
        {
            var loader = Her.Resolve <IViewLoader>();
            var prefab = await loader.LoadView(name);

            if (prefab == null)
            {
                throw new Exception($"Load view: {name} failed");
            }

            var instance = Object.Instantiate(prefab).GetComponent <Widget>();

            instance.SetManagerInfo(name, manager, message);
            return(instance);
        }
Пример #8
0
        public void Close <T>(string name) where T : IUIStack, new()
        {
            bool isCurrentStack;
            T    result = mUICacher.RemoveAndCheckUICached <T>(name, out isCurrentStack);

            if (isCurrentStack)
            {
                mPrevious = mCurrent;
                mCurrent  = mUICacher.StackCurrent;
                mCurrent.Renew();
            }
            if (result != default)
            {
                result.Exit();
            }
        }
Пример #9
0
 private void CheckStackCurrentValid(ref IUIStack item)
 {
     while (mUIStacks.Count > 0)
     {
         item = mUIStacks.Peek();
         if (item.IsExited || item.IsStackAdvanced)
         {
             if (item.IsStackAdvanced)
             {
                 item.ResetAdvance();
             }
             mUIStacks.Pop();
             item = default;
         }
         else
         {
             break;
         }
     }
 }
Пример #10
0
        public T Open <T>(string name) where T : IUIStack, new()
        {
            T result = mUICacher.CreateOrGetUICache <T>(name);

            if (!result.IsExited)
            {
                if (mPrevious != default)
                {
                    mPrevious.Interrupt();
                }
                mPrevious = mCurrent;
                mCurrent  = mUICacher.StackCurrent;
                if (mCurrent.IsStackAdvanced)
                {
                    mCurrent.Renew();
                }
                else
                {
                    mCurrent.Enter();
                }
            }
            return(result);
        }
Пример #11
0
 public static void SetDependencies(IUIStack stack)
 {
     _uiStack = stack;
 }
Пример #12
0
 private void AddStack(IUIStack target)
 {
     StackCurrent = target;
     mUIStacks.Push(target);
 }
Пример #13
0
 public virtual void SetManagerInfo(string path, IUIStack manager, UIMessage message)
 {
     Path     = path;
     IuiStack = manager;
     Message  = message;
 }