public void ApplyEvent(IEvent @event) { switch (@event) { case GearChanged gearChanged: CurrentGear = gearChanged.EnteredGear; break; case ManualGearshiftingModeEntered _: if (_vehicleInTemporalManualControlMode) { _service.StopTargetingAnyGear(); _tokenSource.Cancel(); } VehicleInManualMode = true; break; case ManualGearshiftingModeExited _: VehicleInManualMode = false; break; case GearUpshiftedManually _ when !VehicleInManualMode: _vehicleInTemporalManualControlMode = true; _service.TargetGear(CurrentGear.UpshiftedBy(new Gear(1))); RescheduleComebackTimer(); break; case GearDownshiftedManually _ when !VehicleInManualMode: _vehicleInTemporalManualControlMode = true; _service.TargetGear(CurrentGear.DownshiftedBy(new Gear(1))); RescheduleComebackTimer(); break; } }
private void StartKickdown() { switch (_kickdownCharacteristics.GetActionFor(ResponsivenessMode, LastGasPressure, CurrentRpm)) { case SuggestedKickdownAction.Singular: _gearshiftService.TargetGear(CurrentGear.DownshiftedBy(new Gear(1))); break; case SuggestedKickdownAction.Double: _gearshiftService.TargetGear(CurrentGear.DownshiftedBy(new Gear(2))); break; } IsKickdownStarted = true; }
public void ApplyEvent(IEvent @event) { switch (@event) { case GearChanged gearChanged: CurrentGear = gearChanged.EnteredGear; break; case ManualGearshiftingModeEntered _: VehicleInManualMode = true; SelectedGear = CurrentGear; _service.TargetGear(SelectedGear); break; case ManualGearshiftingModeExited _: VehicleInManualMode = false; _service.StopTargetingAnyGear(); break; case GearUpshiftedManually _: if (!VehicleInManualMode) { break; } SelectedGear = SelectedGear.UpshiftedBy(new Gear(1)); _service.TargetGear(SelectedGear); break; case GearDownshiftedManually _: if (!VehicleInManualMode) { break; } SelectedGear = SelectedGear.DownshiftedBy(new Gear(1)); _service.TargetGear(SelectedGear); break; } }