public bool IsInState(IState.StateType StateType) { if (null == m_curState) { return(false); } return(m_curState.GetStateType() == StateType); }
public void SetNextState(IState.StateType nextStateType, object param1, object param2, int index = 0) { if (index >= 0 && index < m_stateInfoList.Count) { m_stateInfoList[index].stateType = nextStateType; m_stateInfoList[index].mParam1 = param1; m_stateInfoList[index].mParam2 = param2; m_stateInfoList[index].isUse = false; } }
public bool SetCurrState(IState.StateType stateType, NextStateInfo nextStateInfo = null) { if (null != m_curState && m_curState.GetStateType() == stateType) { return(false); } IState newState = null; m_dictState.TryGetValue((int)stateType, out newState); if (null == newState) { return(false); } IState oldState = m_curState; if (null != m_curState) { m_curState.OnLeave(0); } m_curState = newState; if (null != m_curState) { if (nextStateInfo != null) { m_curState.ExecuteState(this, oldState, nextStateInfo.mParam1, nextStateInfo.mParam2); } //else //{ // m_curState.ExecuteState(this, oldState, null, null); //} } return(true); }
public bool SwitchState(IState.StateType stateType, object param1, object param2) { if (null != m_curState && m_curState.GetStateType() == stateType) { return(m_curState.ExecuteStateAgain(this, param1, param2)); } if (null != m_curState && !m_curState.mChangeState) { // 不可切换,等待此状态完成。 return(false); } IState newState = null; m_dictState.TryGetValue((int)stateType, out newState); if (null == newState) { return(false); } IState oldState = m_curState; if (null != oldState) { oldState.OnLeave(0); } m_curState = newState; if (null != newState) { newState.ExecuteState(this, oldState, param1, param2); } return(true); }
public void OnBtnSkill(int i) { if (mMyPlayer == null) { return; } if (!mMyPlayer.mBuffSystem.CanAtk()) { return; } IState.StateType state = IState.StateType.None; if (i == 0) // 连击 { mMyPlayer.mRoleData.mCurrSkillId = mMyPlayer.mRoleData.mMulSkillList[0]; state = IState.StateType.MultlAtk; } else if (i == 1) { mMyPlayer.mRoleData.mCurrSkillId = mMyPlayer.mRoleData.mSkillList[0]; state = IState.StateType.Atk_TL; } else if (i == 2) { mMyPlayer.mRoleData.mCurrSkillId = mMyPlayer.mRoleData.mSkillList[1]; state = IState.StateType.Atk_TL; } else if (i == 3) { mMyPlayer.mRoleData.mCurrSkillId = mMyPlayer.mRoleData.mSkillList[2]; state = IState.StateType.Atk_TL; } SkillConfig.SkillInfo skillInfo = SkillConfig.singleton.GetSkillInfo(mMyPlayer.mRoleData.mCurrSkillId); if (skillInfo != null) { if (skillInfo.mTargetType == SkillConfig.TargetType.None) { mMyPlayer.mStateMachine.SwitchState(state, mMyPlayer.mRoleData.mCurrSkillId, null); } else { if (skillInfo.mTargetType == SkillConfig.TargetType.Enemy) { mMyPlayer.mRoleData.SetTargetRole(RoleMgr.singleton.FindNearMonster(mMyPlayer.transform.position)); } else if (skillInfo.mTargetType == SkillConfig.TargetType.Friends) { } else if (skillInfo.mTargetType == SkillConfig.TargetType.Self) { } if (mMyPlayer.mRoleData.GetTargetRole()) { float dis = Vector3.Distance(mMyPlayer.mRoleData.GetTargetRole().transform.position, mMyPlayer.transform.position); if (skillInfo.mAtkDistance < dis) { mMyPlayer.mStateMachine.SetNextState(state, mMyPlayer.mRoleData.mCurrSkillId, null, 1); mMyPlayer.mStateMachine.SwitchState(IState.StateType.TrailingObj, 1.0f, skillInfo.mAtkDistance); } else { mMyPlayer.mStateMachine.SwitchState(state, mMyPlayer.mRoleData.mCurrSkillId, null); } } } } }
public NextStateInfo(IState.StateType sType, object param1, object param2) { stateType = sType; mParam1 = param1; mParam2 = param2; }
public StateByTime(Role role, Animator animator, StateMachine stateMachine, IState.StateType type) : base(role, animator, stateMachine, type) { }