public void PerformnTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.Log("PerformnTransition 无法执行 NullTransition ");
            return;
        }

        SoldierStateID id = CurrentSoldierState.GetIDByTransition(trans);

        if (id == SoldierStateID.NullState)
        {
            Debug.Log("PerformnTransition 无法执行 NullState ");
            return;
        }

        foreach (AbsSoldierState s in statesList)
        {
            if (s.StateID == id)
            {
                CurrentSoldierState.DoBeforeLeaving();
                CurrentSoldierState = s;
                CurrentSoldierState.DoBeforeEntering();
            }
        }
    }
        public void PerformTrnsition(SoldierTransition trans)
        {
            if (trans == SoldierTransition.NullTansition)
            {
                Debug.LogError(GetType() + "/PerformTrnsition()/ trans is NullTansition ");
                return;
            }

            SoldierStateID nextStateId = mCurState.GetOutputState(trans);

            if (nextStateId == SoldierStateID.NullState)
            {
                Debug.LogError(GetType() + "/PerformTrnsition()/ stateId is NullState ");
                return;
            }

            foreach (ISoldierState s in mStateLst)
            {
                if (s.StateID == nextStateId)
                {
                    mCurState.DoBeforeLeaving();
                    mCurState = s;
                    mCurState.DoBeforeEntering();
                }
            }
        }
Exemplo n.º 3
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;
            }
        }
    }
Exemplo n.º 4
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;
            }
        }
    }
Exemplo n.º 5
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;
            }
        }
    }
Exemplo n.º 6
0
    public void PerformTransition(SoldierTransition tran)
    {
        if (tran == SoldierTransition.NullTransition)
        {
            Debug.Log("要执行的转换条件为空");
        }

        SoldierStateType nextState = mCurrentState.GetTargetStateType(tran);

        if (nextState == SoldierStateType.NullState)
        {
            Debug.Log("在 " + tran + " 条件下,没有对应的目标状态");
            return;
        }

        foreach (SoldierState item in mStates)
        {
            if (item.StateType == nextState)
            {
                mCurrentState.DoBeforeLeaving();
                mCurrentState = item;
                mCurrentState.DoBeforeEntering();
            }
        }
    }
Exemplo n.º 7
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;
            }
        }
    }
Exemplo n.º 8
0
    public void AddTransition(SoldierTransition trans, SoldierStateID id)
    {
        // Check if anyone of the args is invalid
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.LogError("SoldierFSMState ERROR: NullTransition is not allowed for a real transition");
            return;
        }

        if (id == SoldierStateID.NullStateID)
        {
            Debug.LogError("SoldierFSMState ERROR: NullStateID is not allowed for a real ID");
            return;
        }

        // Since this is a Deterministic FSM,
        //   check if the current transition was already inside the map
        if (map.ContainsKey(trans))
        {
            Debug.LogError("SoldierFSMState ERROR: State " + stateID.ToString() + " already has transition " + trans.ToString() +
                           "Impossible to assign to another state");
            return;
        }

        map.Add(trans, id);
    }
    //执行状态转换
    public void PerformTransition(SoldierTransition trans)
    {
        if (trans == SoldierTransition.NullTransition)
        {
            Debug.LogError("转换条件不能为空");
            return;
        }

        SoldierStateID nextId = currentState.GetOutputState(trans);

        if (nextId == SoldierStateID.NullStateID)
        {
            Debug.LogError("转换的状态不能为空");
            return;
        }

        foreach (SoldierState state in states)
        {
            if (state.ID != nextId)
            {
                continue;
            }

            currentState.DoBeforeLeaving();  //转换前执行现有状态的DoBeforeLeaving方法
            currentState = state;
            currentState.DoBeforeEntering(); //转换完成,执行转换后状态的DoBeforeEntering方法
            return;
        }
    }
Exemplo n.º 10
0
 /** 删除转换条件 */
 public void DeleteTransition(SoldierTransition trans)
 {
     if (mMap.ContainsKey(trans) == false)
     {
         Debug.LogError("SoldierState Error: [删除] 转换条件" + trans + "不存在"); return;
     }
     mMap.Remove(trans);
 }
Exemplo n.º 11
0
 public void DeleteTransition(SoldierTransition transition)
 {
     if (!m_Map.ContainsKey(transition))
     {
         Debug.LogError("删除转换条件失败,不存在该条件 : " + transition.ToString()); return;
     }
     m_Map.Remove(transition);
 }
Exemplo n.º 12
0
 // 删除状态转换关系
 public void DeleteTransition(SoldierTransition trans)
 {
     if (mMap.ContainsKey(trans) == false)
     {
         Debug.LogError("IEnemyState Error:[" + trans + "]不存在");
     }
     mMap.Remove(trans);
 }
Exemplo n.º 13
0
 public void DeleteTransition(SoldierTransition trans)
 {
     if (mMap.ContainsKey(trans) == false)
     {
         Debug.LogError("删除转换条件时,转换条件 " + trans + " 不存在");
     }
     mMap.Remove(trans);
 }
Exemplo n.º 14
0
 /// <summary>
 /// 下个要转换到的状态
 /// </summary>
 /// <param name="trans"></param>
 /// <returns></returns>
 public SoldierStateID GetOutPutStateID(SoldierTransition trans)
 {
     if (mMap.ContainsKey(trans))
     {
         return(mMap[trans]);
     }
     return(SoldierStateID.NullStateID);
 }
Exemplo n.º 15
0
 public void DeleteTransition(SoldierTransition trans, SoldierStateID id)
 {
     if (!mMap.ContainsKey(trans))
     {
         Debug.LogError("删除转换条件的时候,转换条件: " + trans + " 不存在"); return;
     }
     mMap.Remove(trans);
 }
Exemplo n.º 16
0
 public SoldierStateID GetOutputState(SoldierTransition trans)
 {
     // Check if the map has this transition
     if (map.ContainsKey(trans))
     {
         return(map[trans]);
     }
     return(SoldierStateID.NullStateID);
 }
 public void DeleteTransition(SoldierTransition trans, SoldierStateID id)
 {
     if (!map.ContainsKey(trans))
     {
         Debug.Log("SoldierState Error :" + trans + "不存在,无法删除");
         return;
     }
     map.Remove(trans);
 }
        public SoldierStateID GetOutputState(SoldierTransition trans)
        {
            if (mMap.ContainsKey(trans) == false)
            {
                return(SoldierStateID.NullState);
            }

            return(mMap[trans]);
        }
Exemplo n.º 19
0
 /// <summary>
 /// 根据指定的转换条件获取状态ID
 /// </summary>
 /// <param name="transition"></param>
 /// <returns></returns>
 public SoldierStateID GetOutPutState(SoldierTransition transition)
 {
     if (!m_Map.ContainsKey(transition))
     {
         Debug.LogError("获取转换条件失败,不存在该条件 : " + transition.ToString());
         return(SoldierStateID.NullState);
     }
     return(m_Map[transition]);
 }
Exemplo n.º 20
0
 public SoldierStateID getOutPutState(SoldierTransition trans)
 {
     if (!map.ContainsKey(trans))
     {
         Debug.LogError("can't find this trans");
         return(SoldierStateID.NullState);
     }
     return(map[trans]);
 }
Exemplo n.º 21
0
 //删除状态转换键值对
 public void DeleteTransition(SoldierTransition trans)
 {
     if (map.ContainsKey(trans))
     {
         map.Remove(trans);
         return;
     }
     Debug.LogError("转换条件不存在");
 }
Exemplo n.º 22
0
 public void deleteTransition(SoldierTransition trans)
 {
     if (!map.ContainsKey(trans))
     {
         Debug.LogError("trans not exist");
         return;
     }
     map.Remove(trans);
 }
Exemplo n.º 23
0
 /** 根据转换条件获取状态ID */
 public SoldierStateID GetOutPutState(SoldierTransition trans)
 {
     if (mMap.ContainsKey(trans) == false)
     {
         Debug.LogError("SoldierState Error: [获取] 转换条件" + trans + "不存在");
         return(SoldierStateID.NullState);
     }
     return(mMap[trans]);
 }
Exemplo n.º 24
0
    public void DeleteTransition(SoldierTransition tran)
    {
        if (!relationDic.ContainsKey(tran))
        {
            Debug.Log("不包含该转换:" + tran);
            return;
        }

        relationDic.Remove(tran);
    }
    public SoldierStateID GetIDByTransition(SoldierTransition trans)
    {
        SoldierStateID id = SoldierStateID.NullState;

        if (!map.TryGetValue(trans, out id))
        {
            Debug.Log("SoldierState StateID:" + StateID + " Error :" + trans + "不存在,无法查找");
        }
        return(id);
    }
Exemplo n.º 26
0
    public void DeleteTransition(SoldierTransition trans)
    {
        if (mMap.ContainsKey(trans) == false)
        {
            Debug.LogError("删除转换条件的时候,转换条件:[" + trans + "]不存在!");
            return;
        }

        mMap.Remove(trans);
    }
Exemplo n.º 27
0
 public void DeleteTransition(SoldierTransition trans)
 {
     if (map.ContainsKey(trans) == false)
     {
         Debug.LogError("删除转换条件不存在" + trans);
     }
     else
     {
         map.Remove(trans);
     }
 }
Exemplo n.º 28
0
    public SoldierStateID GetOutPutState(SoldierTransition trans)
    {
        if (!mMap.ContainsKey(trans))
        {
            Debug.LogError(":[" + trans + "]不存在!");
            return(SoldierStateID.NullState);
        }


        return(mMap[trans]);
    }
Exemplo n.º 29
0
 /// <summary>
 /// 得到指定条件的目标状态
 /// </summary>
 /// <param name="tran"></param>
 /// <returns></returns>
 public SoldierStateType GetTargetStateType(SoldierTransition tran)
 {
     if (!relationDic.ContainsKey(tran))
     {
         return(SoldierStateType.NullState);
     }
     else
     {
         return(relationDic[tran]);
     }
 }
Exemplo n.º 30
0
    public SoldierStateID GetOutputState(SoldierTransition trans)
    {
        SoldierStateID id = SoldierStateID.NullState;

        if (mMap.ContainsKey(trans))
        {
            //mMap.TryGetValue(trans, out id);
            id = mMap[trans];
        }
        return(id);
    }