/// <summary> /// 添加一个状态 /// </summary> /// <param name="flag"></param> /// <param name="state"></param> public void addState(FSM_Flag flag, BaseState state) { state.Flag = flag; state.Agent = this.agent; if (!pool.ContainsKey(flag)) { pool.Add(flag, state); } }
/// <summary> /// 接口 转换状态 /// </summary> /// <param name="flag"></param> /// <param name="args"></param> public void transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false) { if (this.fsm != null) { bool isSuccess = this.fsm.transFsm(flag, args, forceTrans); if (isSuccess) { Flag = flag; } } }
/// <summary> /// 转换状态 /// </summary> /// <param name="flag"></param> /// <param name="args"></param> public bool transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false) { bool isSuccess = false; if (pool.ContainsKey(flag)) { if (currState == null || forceTrans || currState.allow(flag)) { if (currState != null) { currState.onExit(); } currState = pool[flag]; currState.onEnter(args); isSuccess = true; } } return(isSuccess); }
public virtual bool allow(FSM_Flag flag) { return(true); }
public override bool allow(FSM_Flag flag) { return(false); }
public override bool allow(FSM_Flag flag) { return(flag == FSM_Flag.Fall); }
public override bool allow(FSM_Flag flag) { return(flag != this.Flag); }