public void Play(WindowBase window, TransitionInputParameters parameters, WindowComponentBase root, bool forward, System.Action callback)
        {
            var delay = this.GetDelay(parameters, forward);
            var tag   = this.GetInstanceID().ToString() + (root != null ? ("_" + root.GetInstanceID().ToString()) : string.Empty);

            if (TweenerGlobal.instance != null)
            {
                TweenerGlobal.instance.removeTweens(tag);
            }

            if (delay > 0f && TweenerGlobal.instance != null)
            {
                TweenerGlobal.instance.addTween(this, delay, 0f, 0f).tag(tag).onComplete(() => {
                    this.OnPlay(window, tag, parameters, root, forward, callback);
                }).onCancel((obj) => {
                    if (callback != null)
                    {
                        callback();
                    }
                });
            }
            else
            {
                this.OnPlay(window, tag, parameters, root, forward, callback);
            }
        }
示例#2
0
 public void Apply(TransitionBase transition, TransitionInputParameters parameters, bool forward, float value, bool reset)
 {
     if (reset == true)
     {
         transition.SetResetState(parameters, this.window, null);
     }
     transition.Set(this.window, parameters, null, forward: forward, value: value);
 }
        public virtual void SetResetState(TransitionInputParameters parameters, WindowComponentBase root)
        {
            var tag = this.GetInstanceID().ToString() + (root != null ? ("_" + root.GetInstanceID().ToString()) : string.Empty);

            if (TweenerGlobal.instance != null)
            {
                TweenerGlobal.instance.removeTweens(tag);
            }
        }
        /// <summary>
        /// Show the specified onShowEnd.
        /// </summary>
        /// <param name="onShowEnd">On show end.</param>
        public void Show(System.Action onShowEnd, TransitionBase transition, TransitionInputParameters transitionParameters)
        {
            if (this.currentState == WindowObjectState.Showing || this.currentState == WindowObjectState.Shown)
            {
                return;
            }
            this.currentState = WindowObjectState.Showing;

            WindowSystem.AddToHistory(this);

            var counter = 0;

            System.Action callback = () => {
                if (this.currentState != WindowObjectState.Showing)
                {
                    return;
                }

                ++counter;
                if (counter < 5)
                {
                    return;
                }

                this.OnShowEnd();
                this.OnLayoutShowEnd();
                this.modules.OnShowEnd();
                this.events.OnShowEnd();
                this.transition.OnShowEnd();
                if (onShowEnd != null)
                {
                    onShowEnd();
                }

                CanvasUpdater.ForceUpdate();

                this.currentState = WindowObjectState.Shown;
            };

            this.OnLayoutShowBegin(callback);
            this.modules.OnShowBegin(callback);

            if (transition != null)
            {
                this.transition.OnShowBegin(transition, transitionParameters, callback);
            }
            else
            {
                this.transition.OnShowBegin(callback);
            }

            this.events.OnShowBegin(callback);
            this.OnShowBegin(callback);

            this.gameObject.SetActive(true);
        }
        /// <summary>
        /// Hide the specified onHideEnd with specific transition.
        /// Wait while all components, animations, events and modules return the callback.
        /// </summary>
        /// <param name="onHideEnd">On hide end.</param>
        /// <param name="transition">Transition.</param>
        /// <param name="transitionParameters">Transition parameters.</param>
        public bool Hide(System.Action onHideEnd, TransitionBase transition, TransitionInputParameters transitionParameters)
        {
            if (this.currentState == WindowObjectState.Hidden || this.currentState == WindowObjectState.Hiding)
            {
                return(false);
            }
            this.currentState = WindowObjectState.Hiding;

            var counter = 0;

            System.Action callback = () => {
                if (this.currentState != WindowObjectState.Hiding)
                {
                    return;
                }

                ++counter;
                if (counter < 5)
                {
                    return;
                }

                WindowSystem.AddToHistory(this);

                this.Recycle();

                this.OnHideEnd();
                this.OnLayoutHideEnd();
                this.modules.OnHideEnd();
                this.events.OnHideEnd();
                this.transition.OnHideEnd();
                if (onHideEnd != null)
                {
                    onHideEnd();
                }

                this.currentState = WindowObjectState.Hidden;
            };

            this.OnLayoutHideBegin(callback);
            this.modules.OnHideBegin(callback);

            if (transition != null)
            {
                this.transition.OnHideBegin(transition, transitionParameters, callback);
            }
            else
            {
                this.transition.OnHideBegin(callback);
            }

            this.events.OnHideBegin(callback);
            this.OnHideBegin(callback, immediately: false);

            return(true);
        }
示例#6
0
 public void DoHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters)
 {
     if (transition != null)
     {
         transition.Play(this.window, transitionParameters, null, forward: false, callback: parameters.callback);
     }
     else
     {
         parameters.Call();
     }
 }
        public override void SetResetState(TransitionInputParameters parameters, WindowComponentBase root)
        {
            var param = this.GetParams <Parameters>(parameters);

            if (param == null)
            {
                return;
            }

            this.GetRoot(param, root).anchoredPosition = param.GetReset();
        }
        public virtual float GetDuration(TransitionInputParameters parameters, bool forward)
        {
            var param = this.GetParams <ParametersBase>(parameters);

            if (forward == true)
            {
                return(param.inDuration);
            }

            return(param.outDuration);
        }
        /// <summary>
        /// Shows window of T type.
        /// Returns null if window not registered.
        /// </summary>
        /// <param name="transition">Transition.</param>
        /// <param name="transitionParameters">Transition parameters.</param>
        /// <param name="source">Source.</param>
        /// <param name="parameters">OnParametersPass() values.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static T Show <T>(TransitionBase transition, TransitionInputParameters transitionParameters, T source, params object[] parameters) where T : WindowBase
        {
            var instance = WindowSystem.instance.Create_INTERNAL(source, parameters) as T;

            if (instance != null)
            {
                instance.Show(transition, transitionParameters);
            }

            return(instance);
        }
        public override void SetResetState(TransitionInputParameters parameters, WindowComponentBase root)
        {
            base.SetResetState(parameters, root);

            var param = this.GetParams <Parameters>(parameters);

            if (param == null)
            {
                return;
            }

            root.canvas.alpha = param.GetReset();
        }
 public void OnHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, System.Action callback)
 {
     if (transition != null)
     {
         transition.Play(this.window, transitionParameters, null, forward: false, callback: callback);
     }
     else
     {
         if (callback != null)
         {
             callback();
         }
     }
 }
示例#12
0
        public T GetParams <T>(TransitionInputParameters parameters) where T : ParametersBase
        {
            T param = null;

            if (parameters == null || parameters.useDefault == true)
            {
                param = this.GetDefaultInputParameters() as T;
            }
            else
            {
                param = parameters.GetParameters() as T;
            }

            return(param);
        }
        public override void OnPlay(WindowBase window, object tag, TransitionInputParameters parameters, WindowComponentBase root, bool forward, System.Action callback)
        {
            var param = this.GetParams <Parameters>(parameters);

            if (param == null || root == null)
            {
                if (callback != null)
                {
                    callback();
                }
                return;
            }

            var duration = this.GetDuration(parameters, forward);
            var result   = param.GetResult(forward);

            var rect          = this.GetRoot(param, root);
            var startPosition = rect.anchoredPosition;
            var endPosition   = result;

            if (TweenerGlobal.instance != null)
            {
                TweenerGlobal.instance.removeTweens(tag);
                TweenerGlobal.instance.addTween <RectTransform>(rect, duration, 0f, 1f).onUpdate((obj, value) => {
                    if (obj != null)
                    {
                        obj.anchoredPosition = Vector2.Lerp(startPosition, endPosition, value);
                    }
                }).onComplete((obj) => { if (callback != null)
                                         {
                                             callback();
                                         }
                              }).onCancel((obj) => { if (callback != null)
                                                     {
                                                         callback();
                                                     }
                                          }).tag(tag);
            }
            else
            {
                rect.anchoredPosition = endPosition;
                if (callback != null)
                {
                    callback();
                }
            }
        }
示例#14
0
        public void DoShowBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters)
        {
            if (transition != null)
            {
                transition.SetResetState(transitionParameters, this.window, null);
                transition.Play(this.window, transitionParameters, null, forward: true, callback: parameters.callback);
            }
            else
            {
                // Reset to defaults
                var layoutWindow = (this.window as LayoutWindowType);
                if (layoutWindow != null)
                {
                    layoutWindow.layout.GetLayoutInstance().root.Reset();
                }

                parameters.Call();
            }
        }
        public override void OnPlay(WindowBase window, object tag, TransitionInputParameters parameters, WindowComponentBase root, bool forward, System.Action callback)
        {
            var param = this.GetParams <Parameters>(parameters);

            if (param == null || root == null)
            {
                if (callback != null)
                {
                    callback();
                }
                return;
            }

            var duration = this.GetDuration(parameters, forward);
            var result   = param.GetResult(forward);

            if (TweenerGlobal.instance != null)
            {
                TweenerGlobal.instance.removeTweens(tag);
                TweenerGlobal.instance.addTweenAlpha(root.canvas, duration, result).onComplete((obj) => { if (callback != null)
                                                                                                          {
                                                                                                              callback();
                                                                                                          }
                                                                                               }).onCancel((obj) => { if (callback != null)
                                                                                                                      {
                                                                                                                          callback();
                                                                                                                      }
                                                                                                           }).tag(tag);
            }
            else
            {
                if (root.canvas != null)
                {
                    root.canvas.alpha = result;
                }
                if (callback != null)
                {
                    callback();
                }
            }
        }
        public void OnShowBegin(TransitionBase transition, TransitionInputParameters transitionParameters, System.Action callback)
        {
            if (transition != null)
            {
                transition.SetResetState(transitionParameters, this.window, null);
                transition.Play(this.window, transitionParameters, null, forward: true, callback: callback);
            }
            else
            {
                // Reset to defaults
                var layoutWindow = (this.window as LayoutWindowType);
                if (layoutWindow != null)
                {
                    layoutWindow.layout.GetLayoutInstance().root.Reset();
                }

                if (callback != null)
                {
                    callback();
                }
            }
        }
示例#17
0
 /// <summary>
 /// Hide window with specific transition.
 /// </summary>
 /// <param name="transition">Transition.</param>
 /// <param name="transitionParameters">Transition parameters.</param>
 public bool Hide(TransitionBase transition, TransitionInputParameters transitionParameters)
 {
     return(this.Hide(null, transition, transitionParameters));
 }
示例#18
0
 public virtual void OnPlay(WindowBase window, object tag, TransitionInputParameters parameters, WindowComponentBase root, bool forward, System.Action callback)
 {
 }
示例#19
0
 /// <summary>
 /// Shows window of T type.
 /// Returns null if window not registered.
 /// </summary>
 /// <param name="transition">Transition.</param>
 /// <param name="transitionParameters">Transition parameters.</param>
 /// <param name="source">Source.</param>
 /// <param name="parameters">OnParametersPass() values.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static T Show <T>(TransitionBase transition, TransitionInputParameters transitionParameters, T source, params object[] parameters) where T : WindowBase
 {
     return(WindowSystem.Show <T>(null, transition, transitionParameters, source, parameters));
 }
示例#20
0
 public void Hide(TransitionBase transition, TransitionInputParameters transitionParameters)
 {
     this.window.Hide(transition, transitionParameters);
 }
示例#21
0
 public void Show(TransitionBase transition, TransitionInputParameters transitionParams)
 {
     this.Show_INTERNAL(onShowEnd: null, transitionItem: null);
 }
示例#22
0
 public float GetDuration(TransitionInputParameters parameters, bool forward)
 {
     return(this.transition.GetDuration(parameters, forward));
 }
示例#23
0
 public void SetResetState(TransitionInputParameters parameters, WindowComponentBase root)
 {
     this.transition.SetResetState(parameters, root);
 }
示例#24
0
 public void Play(TransitionInputParameters parameters, WindowComponentBase root, bool forward, System.Action callback)
 {
     this.transition.Play(parameters, root, forward, callback);
 }
示例#25
0
        /// <summary>
        /// Shows window of T type.
        /// Returns null if window not registered.
        /// </summary>
        /// <param name="onCreatePredicate">On create predicate.</param>
        /// <param name="transition">Transition.</param>
        /// <param name="transitionParameters">Transition parameters.</param>
        /// <param name="source">Source.</param>
        /// <param name="parameters">OnParametersPass() values.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static T Show <T>(System.Action <T> onCreatePredicate, TransitionBase transition, TransitionInputParameters transitionParameters, T source, params object[] parameters) where T : WindowBase
        {
            var instance = (source != null) ? WindowSystem.instance.Create_INTERNAL(source, parameters) as T : WindowSystem.Create <T>(parameters);

            if (instance != null)
            {
                if (onCreatePredicate != null)
                {
                    onCreatePredicate(instance);
                }

                if (transition != null && transitionParameters != null)
                {
                    instance.Show(transition, transitionParameters);
                }
                else
                {
                    instance.Show();
                }
            }

            return(instance);
        }
示例#26
0
 public bool Hide(TransitionBase transition, TransitionInputParameters transitionParams)
 {
     return(this.Hide_INTERNAL(onHideEnd: null, transitionItem: null));
 }
示例#27
0
 public static T Show <T>(System.Action <T> afterGetInstance, TransitionBase transition, TransitionInputParameters transitionParams, System.Action <T> onParametersPassCall, params object[] parameters) where T : WindowBase
 {
     return(WindowSystem.ShowWithParameters <T>(afterGetInstance, null, null, onParametersPassCall, parameters));
 }
示例#28
0
 /// <summary>
 /// Show window with specific transition.
 /// </summary>
 /// <param name="transition">Transition.</param>
 /// <param name="transitionParameters">Transition parameters.</param>
 public void Show(TransitionBase transition, TransitionInputParameters transitionParameters)
 {
     this.Show(null, transition, transitionParameters);
 }
        /// <summary>
        /// Shows window of T type.
        /// Returns null if window not registered.
        /// </summary>
        /// <param name="onCreatePredicate">On create predicate.</param>
        /// <param name="transition">Transition.</param>
        /// <param name="transitionParameters">Transition parameters.</param>
        /// <param name="parameters">OnParametersPass() values.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static T Show <T>(System.Action <T> onCreatePredicate, TransitionBase transition, TransitionInputParameters transitionParameters, params object[] parameters) where T : WindowBase
        {
            var instance = WindowSystem.Create <T>(parameters);

            if (instance != null)
            {
                if (onCreatePredicate != null)
                {
                    onCreatePredicate(instance);
                }
                instance.Show(transition, transitionParameters);
            }

            return(instance);
        }
示例#30
0
 /// <summary>
 /// Shows window of T type.
 /// Returns null if window not registered.
 /// </summary>
 /// <param name="onCreatePredicate">On create predicate.</param>
 /// <param name="transition">Transition.</param>
 /// <param name="transitionParameters">Transition parameters.</param>
 /// <param name="parameters">OnParametersPass() values.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static T Show <T>(System.Action <T> onCreatePredicate, TransitionBase transition, TransitionInputParameters transitionParameters, params object[] parameters) where T : WindowBase
 {
     return(WindowSystem.Show <T>(onCreatePredicate, transition, transitionParameters, null, parameters));
 }