@@ -176,7 +176,7 @@ public class DefaultElectricPowerSupply : ElectricPowerSupply
176176 private Timer PowerOnTimer ;
177177 private Timer AuxPowerOnTimer ;
178178
179- private bool QuickPowerOn = false ;
179+ private ( bool CloseCircuitBreaker , bool SwitchOnElectricTrainSupply ) QuickPowerOn ;
180180
181181 public override void Initialize ( )
182182 {
@@ -227,10 +227,9 @@ public override void Update(float elapsedClockSeconds)
227227 {
228228 case CircuitBreakerState . Open :
229229 // If circuit breaker is open, then it must be closed to finish the quick power-on sequence
230- if ( QuickPowerOn )
230+ if ( QuickPowerOn . CloseCircuitBreaker )
231231 {
232- QuickPowerOn = false ;
233- if ( NumberOfElectricTrainSupplyConnectedCars > 0 ) SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOnElectricTrainSupply ) ;
232+ QuickPowerOn . CloseCircuitBreaker = false ;
234233 SignalEventToCircuitBreaker ( PowerSupplyEvent . QuickPowerOn ) ;
235234 }
236235
@@ -254,11 +253,7 @@ public override void Update(float elapsedClockSeconds)
254253
255254 case CircuitBreakerState . Closed :
256255 // If circuit breaker is closed, quick power-on sequence has finished
257- if ( QuickPowerOn )
258- {
259- QuickPowerOn = false ;
260- if ( NumberOfElectricTrainSupplyConnectedCars > 0 ) SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOnElectricTrainSupply ) ;
261- }
256+ if ( QuickPowerOn . CloseCircuitBreaker ) QuickPowerOn . CloseCircuitBreaker = false ;
262257
263258 if ( ! PowerOnTimer . Started )
264259 PowerOnTimer . Start ( ) ;
@@ -274,6 +269,12 @@ public override void Update(float elapsedClockSeconds)
274269 {
275270 SignalEvent ( Event . PowerConverterOn ) ;
276271 SetCurrentAuxiliaryPowerSupplyState ( PowerSupplyState . PowerOn ) ;
272+
273+ if ( QuickPowerOn . SwitchOnElectricTrainSupply )
274+ {
275+ QuickPowerOn . SwitchOnElectricTrainSupply = false ;
276+ if ( NumberOfElectricTrainSupplyConnectedCars > 0 ) SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOnElectricTrainSupply ) ;
277+ }
277278 }
278279 SetFilterVoltageV ( VoltageFilter . Filter ( PantographVoltageV ( ) , elapsedClockSeconds ) ) ;
279280 break ;
@@ -309,15 +310,15 @@ public override void HandleEvent(PowerSupplyEvent evt)
309310 switch ( evt )
310311 {
311312 case PowerSupplyEvent . QuickPowerOn :
312- QuickPowerOn = true ;
313+ QuickPowerOn = ( true , true ) ;
313314 SignalEventToBatterySwitch ( PowerSupplyEvent . QuickPowerOn ) ;
314315 SignalEventToMasterKey ( PowerSupplyEvent . TurnOnMasterKey ) ;
315316 SignalEventToPantograph ( PowerSupplyEvent . RaisePantograph , 1 ) ;
316317 SignalEventToOtherTrainVehiclesWithId ( PowerSupplyEvent . RaisePantograph , 1 ) ;
317318 break ;
318319
319320 case PowerSupplyEvent . QuickPowerOff :
320- QuickPowerOn = false ;
321+ QuickPowerOn = ( false , false ) ;
321322 SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOffElectricTrainSupply ) ;
322323 SignalEventToCircuitBreaker ( PowerSupplyEvent . QuickPowerOff ) ;
323324 SignalEventToPantographs ( PowerSupplyEvent . LowerPantograph ) ;
0 commit comments