Ejemplo n.º 1
0
    void Transition(FSM.Trigger trigger)
    {
        switch (currentState)
        {
        case FSM.State.Patrol:
            if (trigger == FSM.Trigger.EnemySighted)
            {
                // Enemy sighted, transition to chase mode
                currentState = FSM.State.Chase;
            }
            break;

        case FSM.State.Chase:
            if (trigger == FSM.Trigger.EnemyDisappeared)
            {
                // Enemy disappeared, transition to return mode
                currentState = FSM.State.Return;
            }
            break;

        case FSM.State.Return:
            if (trigger == FSM.Trigger.ReachedBase)
            {
                // Reached base, transition to patrol mode
                currentState = FSM.State.Patrol;
            }
            else if (trigger == FSM.Trigger.EnemySighted)
            {
                // Eneemy sighted, transition to chase mode
                currentState = FSM.State.Chase;
            }
            break;
        }
        ;
    }
Ejemplo n.º 2
0
    void Transition(FSM.Trigger trigger)
    {
        switch (currentState)
        {
        case FSM.State.Patrol:
            if (trigger == FSM.Trigger.EnemySighted)
            {
                // Enemy sighted, transition to chase mode
                SwitchState(FSM.State.Chase);
            }
            else if (trigger == FSM.Trigger.PacifyCondition)
            {
                SwitchState(FSM.State.Pacified);
            }
            break;

        case FSM.State.Chase:
            if (trigger == FSM.Trigger.EnemyDisappeared)
            {
                // Enemy disappeared, transition to return mode
                SwitchState(FSM.State.Return);
            }
            else if (trigger == FSM.Trigger.PacifyCondition)
            {
                SwitchState(FSM.State.Pacified);
            }
            break;

        case FSM.State.Return:
            if (trigger == FSM.Trigger.ReachedBase)
            {
                // Reached base, transition to patrol mode
                SwitchState(FSM.State.Patrol);
            }
            else if (trigger == FSM.Trigger.EnemySighted)
            {
                // Eneemy sighted, transition to chase mode
                SwitchState(FSM.State.Chase);
            }
            else if (trigger == FSM.Trigger.PacifyCondition)
            {
                SwitchState(FSM.State.Pacified);
            }
            break;

        case FSM.State.Pacified:
            // Once pacified, do nothing.
            break;
        }
        ;
    }