Exemplo n.º 1
0
    public bool IsInState(IState.StateType StateType)
    {
        if (null == m_curState)
        {
            return(false);
        }

        return(m_curState.GetStateType() == StateType);
    }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
    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);
                    }
                }
            }
        }
    }
Exemplo n.º 6
0
 public NextStateInfo(IState.StateType sType, object param1, object param2)
 {
     stateType = sType;
     mParam1   = param1;
     mParam2   = param2;
 }
Exemplo n.º 7
0
 public StateByTime(Role role, Animator animator, StateMachine stateMachine, IState.StateType type)
     : base(role, animator, stateMachine, type)
 {
 }