public override void Handle(GameSession session, PacketReader packet) { RideMode mode = (RideMode)packet.ReadByte(); switch (mode) { case RideMode.StartRide: HandleStartRide(session, packet); break; case RideMode.StopRide: HandleStopRide(session, packet); break; case RideMode.ChangeRide: HandleChangeRide(session, packet); break; case RideMode.StartMultiPersonRide: HandleStartMultiPersonRide(session, packet); break; case RideMode.StopMultiPersonRide: HandleStopMultiPersonRide(session); break; default: IPacketHandler <GameSession> .LogUnknownMode(mode); break; } }
/// <summary> /// depending on what is target speed it can have different meanings /// speed >> 0 ---> going forward /// speed ~= 0 ---> stand still mode /// speed << 0 ---> going backward /// </summary> /// <param name="sender"></param> /// <param name="args"></param> void Car_evTargetSpeedChanged(object sender, TargetSpeedChangedEventArgs args) { targetSpeedLocalCopy = args.GetTargetSpeed(); Logger.Log(this, String.Format("target speed changed to: {0}", args.GetTargetSpeed())); if (targetSpeedLocalCopy <= MAX_STAND_STILL_SPEED_IN_MPS && targetSpeedLocalCopy >= MIN_STAND_STILL_SPEED_IN_MPS) { Mode = RideMode.standStill; } else if (targetSpeedLocalCopy > MAX_STAND_STILL_SPEED_IN_MPS) { Mode = RideMode.forward; } else //if targetSpeedLocalCopy < MIN_STAND_STILL_SPEED_IN_MPS { Mode = RideMode.backward; } //this setter also sends event "evNewSpeedSettingCalculated" SpeedSteering = regulator.SetTargetValue(targetSpeedLocalCopy); }
private void HandleKeyDown(KeyEventArgs key) { double valToBeSet; switch (key.Key) { case Key.Up: case Key.W: valToBeSet = Controller.Model.CarInfo.TargetSpeed + SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK; Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS); valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet); Controller.SetTargetSpeed(valToBeSet); break; case Key.Down: case Key.S: valToBeSet = Controller.Model.CarInfo.TargetSpeed - SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK; Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS); valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet); Controller.SetTargetSpeed(valToBeSet); break; case Key.Left: case Key.A: valToBeSet = Controller.Model.CarInfo.TargetWheelAngle - WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK; Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD); Controller.SetTargetWheelAngle(valToBeSet); break; case Key.Right: case Key.D: valToBeSet = Controller.Model.CarInfo.TargetWheelAngle + WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK; Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD); Controller.SetTargetWheelAngle(valToBeSet); break; case Key.Escape: Controller.AlertBrake(); break; case Key.Space: Controller.OverrideTargetBrakeSetting(TARGET_BRAKE_SETTING_WHEN_MANUAL_BRAKING_ON); brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS; brakingTimer.Start(); break; case Key.Q: Controller.OverrideTargetBrakeSetting(-80); brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS; brakingTimer.Start(); break; case Key.K: //K -> change road direction if (rideMode == RideMode.Forward) { rideMode = RideMode.Backward; } else { rideMode = RideMode.Forward; } Controller.SetTargetSpeed(0.0); break; case Key.Enter: //Enter -> set wheel to middles Controller.SetTargetWheelAngle(0.0); break; } }
private void HandleKeyDown(KeyEventArgs key) { double valToBeSet; switch (key.Key) { case Key.Up: case Key.W: valToBeSet = Controller.Model.CarInfo.TargetSpeed + SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK; Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS); valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet); Controller.SetTargetSpeed(valToBeSet); break; case Key.Down: case Key.S: valToBeSet = Controller.Model.CarInfo.TargetSpeed - SPEED_CHANGE_PER_UP_DOWN_ARR_CLICK; Limiter.Limit(ref valToBeSet, MAX_BACKWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS, MAX_FORWARD_SPEED_WHEN_DRIVING_ON_GAMEPAD_IN_MPS); valToBeSet = LimitSpeedDueToCurrRideMode(valToBeSet); Controller.SetTargetSpeed(valToBeSet); break; case Key.Left: case Key.A: valToBeSet = Controller.Model.CarInfo.TargetWheelAngle - WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK; Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD); Controller.SetTargetWheelAngle(valToBeSet); break; case Key.Right: case Key.D: valToBeSet = Controller.Model.CarInfo.TargetWheelAngle + WHEEL_ANGLE_CHANGE_PER_LEFT_RIGHT_ARR_CLICK; Limiter.Limit(ref valToBeSet, -1 * MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD, MAX_WHEEL_ANGLE_VALEUE_WHEN_DRIVING_ON_GAMEPAD); Controller.SetTargetWheelAngle(valToBeSet); break; case Key.Escape: Controller.AlertBrake(); break; case Key.Space: Controller.OverrideTargetBrakeSetting(TARGET_BRAKE_SETTING_WHEN_MANUAL_BRAKING_ON); brakingTimer.Interval = BRAKE_ACTIVATION_TIME_ON_SPACE_PRESSING_IN_MS; brakingTimer.Start(); break; case Key.K: //K -> change road direction if(rideMode == RideMode.Forward) { rideMode = RideMode.Backward; } else { rideMode = RideMode.Forward; } Controller.SetTargetSpeed(0.0); break; case Key.Enter: //Enter -> set wheel to middles Controller.SetTargetWheelAngle(0.0); break; } }