/// <summary> /// 到下一步 /// </summary> /// <param name="stepVal"></param> /// <param name="fsmStaDef"></param> public void StepNext(int stepVal, FSMStaDef fsmStaDef = FSMStaDef.RUN) { if (execute > 0 && fsmStaDef.HasFlag(logicTask.Manager.FSM.Status.ID)) { ImmediateStepNext(stepVal); } }
/// <summary> /// 根据标识符表示的状态 /// </summary> /// <param name="state"></param> /// <returns></returns> public State this[FSMStaDef state] { get { Debug.Assert(StateMap.ContainsKey(state.ToString()), "there is no state"); return(this.StateMap[state.ToString()]); } }
/// <summary> /// 延时一段时间后进入下一步 /// </summary> /// <param name="stepVal"></param> /// <param name="delay"></param> /// <param name="fsmStaDef"></param> public void StepNext(int stepVal, int delay, FSMStaDef fsmStaDef = FSMStaDef.RUN) { if (execute > 0 && fsmStaDef.HasFlag(logicTask.Manager.FSM.Status.ID)) { if (stepDelayTime == DateTime.MinValue) { stepDelayTime = DateTime.Now; } if ((DateTime.Now - stepDelayTime).TotalMilliseconds > delay) { ImmediateStepNext(stepVal); stepDelayTime = DateTime.MinValue; } } }
/// <summary> /// 根据标识符切换状态 /// </summary> /// <param name="fSMStaDef"></param> public void Change(FSMStaDef fSMStaDef) { Change(fSMStaDef.ToString()); }