示例#1
0
        public override bool Skip(DelCheckCanSkip canSkipCheck)
        {
            if (TaskStage != EM_TaskStage.OnTask)
            {
                return(true);
            }

            //不能跳过自己
            if (canSkipCheck != null && !canSkipCheck(this))
            {
                return(false);
            }

            //可以跳过自己,需要先跳过子任务
            if (arrTask != null)
            {
                for (int i = 0; i < arrTask.Length; i++)
                {
                    //有一个子任务不能跳过
                    if (arrTask[i] != null && !arrTask[i].Skip(canSkipCheck))
                    {
                        return(false);
                    }
                }
            }

            //全跳过
            OnSkip();
            OnLeave();

            return(true);
        }
示例#2
0
        public override bool Skip(DelCheckCanSkip canSkipCheck)
        {
            if (TaskStage != EM_TaskStage.OnTask)
            {
                return(true);
            }

            //不能跳过自己
            if (canSkipCheck != null && !canSkipCheck(this))
            {
                return(false);
            }

            //可以跳过自己,需要先跳过子任务
            //队列中,先前已经完成的任务stage不是OnTask,直接return true
            //当前执行中的任务跳过后会调用完成回调OnChildTaskFinish,开启后面的任务
            //所以每次for循环一次,当前任务也会跟着切换,直到无法跳过,或者结束
            if (arrTask != null)
            {
                for (int i = 0; i < arrTask.Length; i++)
                {
                    //有一个子任务不能跳过
                    if (arrTask[i] != null && !arrTask[i].Skip(canSkipCheck))
                    {
                        return(false);
                    }
                }
            }

            //全跳过
            OnSkip();
            OnLeave();

            return(true);
        }
示例#3
0
        /// <summary>
        /// 跳过任务
        /// </summary>
        /// <param name="canSkipCheck">检查能不能跳过的委托</param>
        /// <returns></returns>
        public virtual bool Skip(DelCheckCanSkip canSkipCheck)
        {
            if (TaskStage != EM_TaskStage.OnTask)
            {
                return(true);
            }

            if (canSkipCheck == null || canSkipCheck(this))
            {
                //判定通过
                OnSkip();
                OnLeave();
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#4
0
 public bool Skip(DelCheckCanSkip canSkipCheck)
 {
     return(CurTask?.Skip(canSkipCheck) ?? true);
 }