Esempio n. 1
0
        private bool CheckState(TaskState toState)
        {
            switch (toState)
            {
            case TaskState.Init:
            {
                if (!IsOver)
                {
                    RDebug.LogErrorFormat("[TaskManager] {0} -> {1} 当前状态不能切换到初始状态", _state, toState);
                    return(false);
                }
                return(true);
            }

            case TaskState.Running:
            {
                if (_state != TaskState.Init &&
                    _state != TaskState.Paused)
                {
                    return(false);
                }
                return(true);
            }

            case TaskState.Paused:
            {
                if (!IsRunning)
                {
                    return(false);
                }
                return(true);
            }

            case TaskState.Stopped:
            {
                if (_state == TaskState.Running ||
                    _state == TaskState.Paused)
                {
                    return(true);
                }
                return(false);
            }

            case TaskState.Finished:
            {
                if (_state == TaskState.Init ||
                    _state == TaskState.Running ||
                    _state == TaskState.Paused ||
                    _state == TaskState.Stopped)
                {
                    return(true);
                }
                return(false);
            }

            default:
                return(false);
            }
        }
Esempio n. 2
0
        public Task Start()
        {
            if (_state != TaskState.Init)
            {
                RDebug.LogError("[TaskManager] 任务不能重复开始");
                return(this);
            }

            if (!CheckState(TaskState.Running))
            {
                return(this);
            }

            TaskManager.Instance.RegisterTask(this);
            _state = TaskState.Running;
            _InnerOnStart();

            return(this);
        }
Esempio n. 3
0
 private void OnInit()
 {
     RDebug.Log("[TaskManager] Init");
 }