public StateMachineTransitionState ExcuteTrans(AbsState formState, AbsState toState)
 {
     FromState   = formState;
     ToState     = toState;
     _transState = ExcuteTransEx();
     return(_transState);
 }
 public AbsTransition(StateMachine machine, string name, AbsState formState, AbsState toState)
 {
     Name        = name;
     Entity      = machine.Entity;
     Machine     = machine;
     _transState = StateMachineTransitionState.Ready;
     FromState   = formState;
     ToState     = toState;
 }
示例#3
0
    public AbsState[] states = new AbsState[3];    //to be adjusted as we change the number of enemy states in game. 3 is probably plenty.


    public void setState(AbsState input)
    {
        for (int i = 0; i < 3; i++)
        {
            if (states[i] == null)
            {
                states[i] = input;
                break;
            }
        }
    }
示例#4
0
    private void changeState(string stateRequest)//calls inner with the proper type of state.
    {
        if (stateRequest.Contains("Patrol"))
        {
            inner("Patrol");
        }
        else if (stateRequest.Contains("Rest"))
        {
            inner("Rest");
        }
        else
        {
            inner("Chase");
        }

        void inner(string newState)
        {
            AbsState[] temp = new AbsState[1];
            if (states[0].isThis(newState))
            {
                Debug.Log("We're already in that state I guess");
                //do nothing
            }
            else
            {
                for (int i = 0; i < 3; i++)
                {
                    Debug.Log("we made it to the for loop, so far.");
                    if (states[i] != null && states[i].isThis(newState))
                    {
                        Debug.Log("We made it to the for loop and the IF came out true at index = " + i);
                        temp[0]   = states[i];
                        states[i] = states[0];
                        states[0] = temp[0];
                    }
                }
            }
        }
    }
示例#5
0
 protected virtual void OnExitStateEx(AbsState nextState)
 {
 }
示例#6
0
 private void OnExitState(AbsState nextState)
 {
     OnExitStateEx(nextState);
 }
示例#7
0
 protected virtual void OnEnterStateEx(AbsState lastState)
 {
 }
示例#8
0
 private void OnEnterState(AbsState lastState)
 {
     OnEnterStateEx(lastState);
     Machine.CurrentState = this;
 }