Пример #1
0
    public void PerformTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransitionID)
        {
            Debug.LogError("要执行的转换条件为空:" + trans);
            return;
        }

        SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans);

        if (nextStateID == SoldierStateID.NullState)
        {
            Debug.LogError("在转换条件 [" + trans + "] 下, 没有对应的转换状态");
            return;
        }

        foreach (ISoldierState s in mStates)
        {
            if (s.stateID == nextStateID)
            {
                mCurrentState.DoBeforeLeaving();
                mCurrentState = s;
                mCurrentState.DoBeforeEntering();
                return;
            }
        }
    }
Пример #2
0
    public void AddState(ISoldierState state)
    {
        if (state == null)
        {
            Debug.LogError("要添加的状态为Null"); return;
        }

        if (mStates.Count == 0)
        {
            mStates.Add(state);
            mCurrentState = state;

            return;
        }

        foreach (ISoldierState s in mStates)
        {
            if (s.stateID == state.stateID)
            {
                Debug.LogError("要添加的状态ID: [" + state.stateID + " ]已存在"); return;
            }
        }


        mStates.Add(state);
    }
Пример #3
0
    /// <summary>
    /// 执行转换状态
    /// </summary>
    /// <param name="trans"></param>
    public void PerformTranstion(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.LogError("要执行的转换条件为空!");
            return;
        }
        SoldierStateID nextStateID = mCurrentState.GetOutPutStateID(trans); //得到该转换条件下的下个状态ID

        if (nextStateID == SoldierStateID.NullStateID)
        {
            Debug.LogError("在转换条件:" + "[" + trans + "]" + "没有对应的转换状态!");
            return;
        }
        mCurrentStateID = nextStateID;//更新当前状态ID
        foreach (ISoldierState s in mStates)
        {
            if (s.stateID == nextStateID)
            {
                mCurrentState.DoBeforeLeaving();
                mCurrentState = s;              //更新当前状态
                mCurrentState.DoBeforeEntering();
                break;
            }
        }
    }
Пример #4
0
    public void performTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.LogError("trans is null");
            return;
        }
        SoldierStateID nextId = mCurrState.getOutPutState(trans);

        if (nextId == SoldierStateID.NullState)
        {
            Debug.LogError("no state with trans");
            return;
        }
        foreach (ISoldierState s in mStates)
        {
            if (s.StateID == nextId)
            {
                mCurrState.doBeforeLeaving();
                mCurrState = s;
                mCurrState.doBeforeEntering();
                return;
            }
        }
    }
Пример #5
0
    public void PerformTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.LogError("要执行的转换条件为空");
            return;
        }
        //获取要转换为的状态
        SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans);

        if (nextStateID == SoldierStateID.NullState)
        {
            Debug.Log("要转换的状态ID[" + nextStateID + "]为空");
            return;
        }
        foreach (ISoldierState state in mStates)
        {
            //如果在集合中找到转换为的状态
            if (state.StateID == nextStateID)
            {
                //执行退出当前状态之前的操作
                mCurrentState.DoBeforeLeaving();
                //将当前状态变为将转换的状态
                mCurrentState = state;
                //执行进入当前状态之前的操作
                mCurrentState.DoBeforeEntering();
                break;
            }
        }
    }
Пример #6
0
    public void DeleteState(ISoldierState state)
    {
        if (state == null)
        {
            Debug.LogError("要删除的状态为空");
            return;
        }

        if (mStates.Count == 0 || !mStates.Contains(state))
        {
            Debug.LogError("要删除的状态ID[" + state + "]不存在");
        }

        mStates.Remove(state);
    }
Пример #7
0
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("SoldierFSMSystem Error: 要添加的状态为空"); return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         mCurrentState = state;
         return;
     }
     foreach (ISoldierState s in mStates)
     {
         if (s.StateID == state.StateID)
         {
             Debug.LogError("SoldierFSMSystem Error: 要添加的状态" + state.StateID + "已被添加"); return;
         }
     }
     mStates.Add(state);
 }
Пример #8
0
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("添加对象[" + state + "]为空");
     }
     if (mState.Count == 0)
     {
         mState.Add(state);
         mCurrentState = state;
         mCurrentState.DoBeforeEntering();
         return;
     }
     foreach (ISoldierState s in mState)
     {
         if (s.stateID == state.stateID)
         {
             Debug.LogError("添加对象[" + state + "]已经存在"); return;
         }
     }
     mState.Add(state);
 }
Пример #9
0
    public void PerformTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTansition)
        {
            Debug.LogError("SoldierFSMSystem Error: 要执行的转换条件" + trans + "不存在"); return;
        }
        SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans);

        if (nextStateID == SoldierStateID.NullState)
        {
            Debug.LogError("SoldierFSMSystem Error: 转换条件" + trans + "下,没有对应的状态"); return;
        }
        foreach (ISoldierState s in mStates)
        {
            if (s.StateID == nextStateID)
            {
                mCurrentState.DoBeforeLeaving();
                mCurrentState = s;
                mCurrentState.DoBeforeEntering();
            }
        }
    }
Пример #10
0
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("要添加的状态为空");
         return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         mCurrentState = state;
         return;
     }
     foreach (ISoldierState soldierState in mStates)
     {
         if (soldierState.StateID == state.StateID)
         {
             Debug.LogError("要添加的状态ID" + soldierState.StateID + "已经存在");
         }
     }
     mStates.Add(state);
 }
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("要添加的状态为空"); return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         mCurrentState = state;
         return;
     }
     //遍历状态集合
     foreach (ISoldierState s in mStates)
     {
         if (s.stateID == state.stateID)//说明要添加的状态已经存在
         {
             Debug.LogError("要添加的状态ID[" + s.stateID + "]已经添加"); return;
         }
     }
     //说明状态不存在于集合中,所以把状态添加进去
     mStates.Add(state);
 }
Пример #12
0
 public void addState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("state is null");
         return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         mCurrState = state;
         return;
     }
     foreach (ISoldierState s in mStates)
     {
         if (s.StateID == state.StateID)
         {
             Debug.LogError("state is exist");
             return;
         }
     }
     mStates.Add(state);
 }
Пример #13
0
    /// <summary>
    /// 执行转换,切换到对应条件的状态类
    /// </summary>
    /// <param name="transition"></param>
    public void PerformTransition(SoldierTransition transition)
    {
        if (transition == SoldierTransition.NullTransition)
        {
            Debug.LogError("要转换的条件为空 " + transition); return;
        }
        SoldierStateID nextStateID = m_CurrentState.GetOutPutState(transition);

        if (nextStateID == SoldierStateID.NullState)
        {
            Debug.LogError("当前状态 [" + m_CurrentState.StateID + "]" + " 转换条件 [" + transition + "] 没有对应的转换状态");
            return;
        }
        foreach (var s in mLst_States)
        {
            if (s.StateID == nextStateID)
            {
                m_CurrentState.DoBeforeLeaving();
                m_CurrentState = s;
                m_CurrentState.DoBeforeEntering();
                return;
            }
        }
    }
Пример #14
0
    /// <summary>
    /// 添加状态到状态链表中
    /// </summary>
    /// <param name="state"></param>
    public void AddState(ISoldierState state)
    {
        if (state == null)
        {
            Debug.LogError("状态为空,不添加"); return;
        }

        if (mLst_States.Count == 0)
        {
            mLst_States.Add(state);
            m_CurrentState = state;
            return;
        }
        foreach (ISoldierState s in mLst_States)
        {
            if (s.StateID == state.StateID)
            {
                Debug.LogError("要添加的状态ID已经存在 ID= " + s.StateID.ToString());
                return;
            }
        }

        mLst_States.Add(state);
    }
Пример #15
0
 /// <summary>
 /// 添加状态,并设置第一个添加的为初始状态
 /// </summary>
 /// <param name="state"></param>
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("添加的状态为空!");
         return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         mCurrentState   = state;
         mCurrentStateID = state.stateID;
         return;
     }
     foreach (ISoldierState s in mStates)
     {
         if (s.stateID == state.stateID)
         {
             Debug.LogError("要添加的状态ID:" + "[" + s.stateID.ToString() + "]" + "已经添加了");
             return;
         }
     }
     mStates.Add(state);
 }
Пример #16
0
 public void AddState(ISoldierState state)
 {
     if (state == null)
     {
         Debug.LogError("要添加的状态为空");
         return;
     }
     if (mStates.Count == 0)
     {
         mStates.Add(state);
         //第一个状态设置为默认状态
         mCurrentState = state;
         return;
     }
     foreach (ISoldierState temp in mStates)
     {
         if (temp.StateID == state.StateID)
         {
             Debug.LogError("要添加的状态ID[" + temp.StateID + "]已经添加");
             return;
         }
     }
     mStates.Add(state);
 }