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; } ; }
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; } ; }