void FSMTurretBehaviour() { switch (state) { case TState.OFF: if (turretMovement.PlayerIsAudible(player)) { state = TState.ROTATING; turretMovement.TurretRotate(); } else { turretMovement.TurnOff(); } break; case TState.ROTATING: if (turretMovement.FindVisiblePlayer(player)) { state = TState.SHOOTING; turretMovement.ShootPlayer(player); } else if (!turretMovement.PlayerIsAudible(player)) { state = TState.OFF; turretMovement.TurnOff(); } else { turretMovement.TurretRotate(); } break; case TState.SHOOTING: if (!turretMovement.FindVisiblePlayer(player)) { state = TState.ROTATING; turretMovement.TurretRotate(); } else { turretMovement.ShootPlayer(player); } break; default: break; } }