Esempio n. 1
0
        public HookCtroller(params ActionHook[] actionHooks)
        {
            if (actionHooks != null)//删除无用的hooks
            {
                actionHooks = (from hook in actionHooks
                               where hook != null
                               select hook).ToArray();
            }

            if (actionHooks != null && actionHooks.Length > 0)
            {
                active = true;
                statu  = ExecuteStatu.UnStarted;
                hooks  = new ActionHook[actionHooks.Length];
                for (int i = 0; i < actionHooks.Length; i++)
                {
                    hooks[i]      = ScriptableObject.Instantiate(actionHooks[i]);
                    hooks[i].name = actionHooks[i].name;
                }
            }
            else
            {
                statu  = ExecuteStatu.Completed;
                active = false;
            }
        }
 protected virtual void OnEnable()
 {
     statu = ExecuteStatu.UnStarted;
     InitHookCtrl();
     InitBindgCtrl();
     InitOperateCtrl();
 }
 public virtual void OnEndExecute()
 {
     if (log)
     {
         Debug.Log("OnEndExecute", this);
     }
     if (statu != ExecuteStatu.Completed)
     {
         Debug.Log(completeHookCtrl.Statu);
         if (completeHookCtrl.Statu == ExecuteStatu.Completed)
         {
             statu = ExecuteStatu.Completed;
             CoreEndExecute();
             TryCallBack();
         }
         else if (completeHookCtrl.Statu == ExecuteStatu.UnStarted)
         {
             completeHookCtrl.OnStartExecute(forceAuto);
         }
         else
         {
             Debug.Log("wait:" + StepName);
         }
     }
     else
     {
         Debug.Log("already completed" + StepName);
     }
 }
        public virtual void UnDoExecute()
        {
            if (log)
            {
                Debug.Log("UnDoExecute:" + this);
            }
            statu = ExecuteStatu.UnStarted;

            if (completeHookCtrl.Statu != ExecuteStatu.UnStarted)
            {
                completeHookCtrl.OnUnDoExecute();
            }

            OnBeforeActionsUnDo();
            actionCtrl.SetContext(this);
            actionCtrl.OnUnDoExecute();

            if (startHookCtrl.Statu != ExecuteStatu.UnStarted)
            {
                startHookCtrl.OnUnDoExecute();
            }

            if (enviromentCtrl != null)
            {
                enviromentCtrl.OrignalState(environments);
            }
        }
        public virtual void OnUnDoExecute()
        {
            if (log)
            {
                Debug.Log("OnUnDoExecute:" + this);
            }

            if (statu != ExecuteStatu.UnStarted)
            {
                statu = ExecuteStatu.UnStarted;
                if (completeHookCtrl.Statu != ExecuteStatu.UnStarted)
                {
                    completeHookCtrl.OnUnDoExecute();
                }

                OnUnDoExecuteInternal();

                if (startHookCtrl.Statu != ExecuteStatu.UnStarted)
                {
                    startHookCtrl.OnUnDoExecute();
                }
            }
            else
            {
                Debug.LogError(this + "allready undo");
            }
            TryExecuteFeatures(feature => { feature.OnUnDoExecute(); });
        }
 public virtual void OnStartExecute(bool auto = false)
 {
     if (log)
     {
         Debug.Log("OnStartExecute:" + this.Name);
     }
     this.auto = auto;
     if (statu == ExecuteStatu.UnStarted)
     {
         statu = ExecuteStatu.Executing;
         if (startHookCtrl.Statu == ExecuteStatu.Completed)
         {
             OnStartExecuteInternal();
         }
         else
         {
             startHookCtrl.OnStartExecute(auto);
         }
     }
     else
     {
         Debug.LogError("already started");
     }
     TryExecuteFeatures(feature => { feature.OnStartExecute(auto); });
 }
 private void OnCompleteHookEnd()
 {
     if (statu != ExecuteStatu.Completed)
     {
         statu = ExecuteStatu.Completed;
         CoreEndExecute();
         TryCallBack();
     }
 }
 protected override void OnEnable()
 {
     base.OnEnable();
     statu = ExecuteStatu.UnStarted;
     InitHookCtrl();
     InitBindingCtrl();
     operateFeatures = RegistFeatures();
     TryExecuteFeatures(feature => { feature.OnEnable(); });
 }
 public virtual void OnStartExecute(bool auto)
 {
     if (log)
     {
         Debug.Log("onStart Execute Hook :" + this);
     }
     if (status == ExecuteStatu.UnStarted)
     {
         status = ExecuteStatu.Executing;
         CoreStartExecute();
     }
 }
Esempio n. 10
0
 public virtual void OnEndExecute(bool force)
 {
     if (status != ExecuteStatu.Completed)
     {
         status = ExecuteStatu.Completed;
         OnBeforeEndExecute();
         CoreEndExecute(force);
     }
     else
     {
         Debug.LogError("already completed" + this);
     }
 }
Esempio n. 11
0
        public virtual void OnStartExecute(bool forceAuto)
        {
            if (!active)
            {
                return;
            }

            if (statu == ExecuteStatu.UnStarted)
            {
                statu            = ExecuteStatu.Executing;
                this.isForceAuto = forceAuto;
                ChargeQueueIDs();
                ExecuteAStep(isForceAuto);
            }
        }
Esempio n. 12
0
        public virtual void OnUnDoExecute()
        {
            if (!active)
            {
                return;
            }

            if (statu != ExecuteStatu.UnStarted)
            {
                statu = ExecuteStatu.UnStarted;
                foreach (var item in hooks)
                {
                    if (item.Statu != ExecuteStatu.UnStarted)
                    {
                        item.OnUnDoExecute();
                    }
                }
            }
        }
 public virtual bool StartExecute(bool forceAuto)
 {
     this.forceAuto = forceAuto;
     if (statu == ExecuteStatu.UnStarted)
     {
         statu = ExecuteStatu.Executing;
         if (startHookCtrl.Statu == ExecuteStatu.Completed)
         {
             StartExecuteInternal();
         }
         else
         {
             startHookCtrl.OnStartExecute(forceAuto);
         }
         return(true);
     }
     else
     {
         Debug.Log("already started" + name);
         return(false);
     }
 }
        public virtual void OnEndExecute(bool force)
        {
            if (statu != ExecuteStatu.Completed)
            {
                OnBeforeEnd(force);

                if (force)
                {
                    statu = ExecuteStatu.Completed;
                    if (completeHookCtrl.Statu != ExecuteStatu.Completed)
                    {
                        completeHookCtrl.CoreEndExecute();
                    }
                    CoreEndExecute();
                }
                else
                {
                    if (completeHookCtrl.Statu == ExecuteStatu.Completed)
                    {
                        statu = ExecuteStatu.Completed;
                        CoreEndExecute();
                        TryCallBack();
                    }
                    else if (completeHookCtrl.Statu == ExecuteStatu.UnStarted)
                    {
                        completeHookCtrl.OnStartExecute(auto);
                    }
                    else
                    {
                        if (log)
                        {
                            Debug.Log("wait:" + Name);
                        }
                    }
                }
            }
            TryExecuteFeatures(feature => { feature.CoreEndExecute(); });
        }
        public virtual void EndExecute()
        {
            if (statu != ExecuteStatu.Completed)
            {
                statu = ExecuteStatu.Completed;

                if (startHookCtrl.Statu != ExecuteStatu.Completed)
                {
                    startHookCtrl.CoreEndExecute();
                }

                CoreEndExecute();

                if (completeHookCtrl.Statu != ExecuteStatu.Completed)
                {
                    completeHookCtrl.CoreEndExecute();
                }
            }
            else
            {
                Debug.Log("already completed" + StepName);
            }
        }
Esempio n. 16
0
        public virtual void CoreEndExecute()
        {
            if (!active)
            {
                return;
            }

            if (statu != ExecuteStatu.Completed)
            {
                statu = ExecuteStatu.Completed;
                foreach (var item in hooks)
                {
                    if (item.Statu == ExecuteStatu.UnStarted)
                    {
                        item.OnStartExecute(isForceAuto);
                    }
                    if (item.Statu != ExecuteStatu.Completed)
                    {
                        item.OnEndExecute(true);
                    }
                }
            }
        }
Esempio n. 17
0
 protected virtual void OnEnable()
 {
     status = ExecuteStatu.UnStarted;
 }
Esempio n. 18
0
 public virtual void OnUnDoExecute()
 {
     status = ExecuteStatu.UnStarted;
 }