/// <summary>
    /// 抽換指定的狀態
    /// </summary>
    /// <param name="_stateIndex"></param>
    public void ChangeState(FigureStateEnum _stateEnum)
    {
        //狀態枚舉
        int stateIndex = (int)_stateEnum;

        //過濾不合理情況
        if (myStateList.Length < (int)_stateEnum)
        {
            return;
        }
        if (myStateList[stateIndex] == null)
        {
            return;
        }
        //如前後一樣也無視
        if (currentStateEnum == _stateEnum)
        {
            return;
        }
        //新的狀態
        FigureStateEnum newEnum  = _stateEnum;
        FigureState     newState = myStateList[(int)_stateEnum];

        //替換掉舊的監聽者
        if (currentState != null)
        {
            currentState.Exit();
            RemoveActionListener = currentState;
            RemoveCombatListener = currentState;
            RemoveValueListener  = currentState;
        }
        //更換成新的
        currentState     = newState;
        currentStateEnum = newEnum;
        currentState.Start();
        AddActionListener = currentState;
        AddValueListener  = currentState;
        AddCombatListener = currentState;
    }
Beispiel #2
0
 public void ChangeState(FigureStateEnum _state)
 {
     myFigure.ChangeState(_state);
 }