//temp 可以优化,重新架构状态机不使用框架状态机 protected void ChangeState(IFsm <Avatar> fsm, StateDefine eState) { switch (eState) { case StateDefine.State_Idle: ChangeState <StateIdle>(fsm); break; case StateDefine.State_Move: ChangeState <StateMove>(fsm); break; case StateDefine.State_Skill: ChangeState <StateSkill>(fsm); break; case StateDefine.State_WeaklyControl: ChangeState <StateWeaklyControl>(fsm); break; case StateDefine.State_StronglyControl: ChangeState <StateStronglyControl>(fsm); break; case StateDefine.State_Death: ChangeState <StateDeath>(fsm); break; default: Log.Fatal("State machine change fatal!!! '{0}'", eState.ToString()); break; } }
protected override bool CanChangeState(IFsm <Avatar> fsm, StateDefine nextState) { if (nextState == StateDefine.State_None) { return(false); } return(true); }
public void ResetState(StateDefine eState) { if (m_flag == null) { return; } m_flag.ResetState(eState); }
public bool CheckState(StateDefine eState) { if (m_flag == null) { return(false); } return(m_flag.CheckState(eState)); }
protected override bool CanChangeState(IFsm <Avatar> fsm, StateDefine nextState) { if (nextState == StateDefine.State_None || nextState == StateDefine.State_Idle || nextState == StateDefine.State_Move || fsm.Owner.CheckState(StateDefine.State_LockActiveSkill)) { return(false); } return(true); }
protected override bool CanChangeState(IFsm <Avatar> fsm, StateDefine nextState) { if (nextState == StateDefine.State_None || nextState == StateDefine.State_Idle || nextState == StateDefine.State_Move || nextState == StateDefine.State_Skill || nextState == StateDefine.State_WeaklyControl) { return(false); } return(true); }
private static IState CreateStateInstance(ELifeState stateId, Ilife unit) { if (null == m_StateFactory) { StateDefine.RegisterState(); } IState result = null; Type type = null; if (m_StateFactory.TryGetValue(stateId, out type)) { result = Activator.CreateInstance(type, unit, stateId) as IState; } return(result); }
protected abstract bool CanChangeState(IFsm <Avatar> fsm, StateDefine nextState);
public void Clear() { map = 0; state = StateDefine.Waiting; }
public void ResetState(StateDefine eState) { m_Value.Set((int)eState, false); }
public void SetState(StateDefine eState) { m_Value.Set((int)eState, true); }
public bool CheckState(StateDefine eState) { return(m_Value.Get((int)eState)); }