@@ -176,7 +176,7 @@ public class DefaultElectricPowerSupply : ElectricPowerSupply
176
176
private Timer PowerOnTimer ;
177
177
private Timer AuxPowerOnTimer ;
178
178
179
- private bool QuickPowerOn = false ;
179
+ private ( bool CloseCircuitBreaker , bool SwitchOnElectricTrainSupply ) QuickPowerOn ;
180
180
181
181
public override void Initialize ( )
182
182
{
@@ -227,10 +227,9 @@ public override void Update(float elapsedClockSeconds)
227
227
{
228
228
case CircuitBreakerState . Open :
229
229
// If circuit breaker is open, then it must be closed to finish the quick power-on sequence
230
- if ( QuickPowerOn )
230
+ if ( QuickPowerOn . CloseCircuitBreaker )
231
231
{
232
- QuickPowerOn = false ;
233
- if ( NumberOfElectricTrainSupplyConnectedCars > 0 ) SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOnElectricTrainSupply ) ;
232
+ QuickPowerOn . CloseCircuitBreaker = false ;
234
233
SignalEventToCircuitBreaker ( PowerSupplyEvent . QuickPowerOn ) ;
235
234
}
236
235
@@ -254,11 +253,7 @@ public override void Update(float elapsedClockSeconds)
254
253
255
254
case CircuitBreakerState . Closed :
256
255
// 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 ;
262
257
263
258
if ( ! PowerOnTimer . Started )
264
259
PowerOnTimer . Start ( ) ;
@@ -274,6 +269,12 @@ public override void Update(float elapsedClockSeconds)
274
269
{
275
270
SignalEvent ( Event . PowerConverterOn ) ;
276
271
SetCurrentAuxiliaryPowerSupplyState ( PowerSupplyState . PowerOn ) ;
272
+
273
+ if ( QuickPowerOn . SwitchOnElectricTrainSupply )
274
+ {
275
+ QuickPowerOn . SwitchOnElectricTrainSupply = false ;
276
+ if ( NumberOfElectricTrainSupplyConnectedCars > 0 ) SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOnElectricTrainSupply ) ;
277
+ }
277
278
}
278
279
SetFilterVoltageV ( VoltageFilter . Filter ( PantographVoltageV ( ) , elapsedClockSeconds ) ) ;
279
280
break ;
@@ -309,15 +310,15 @@ public override void HandleEvent(PowerSupplyEvent evt)
309
310
switch ( evt )
310
311
{
311
312
case PowerSupplyEvent . QuickPowerOn :
312
- QuickPowerOn = true ;
313
+ QuickPowerOn = ( true , true ) ;
313
314
SignalEventToBatterySwitch ( PowerSupplyEvent . QuickPowerOn ) ;
314
315
SignalEventToMasterKey ( PowerSupplyEvent . TurnOnMasterKey ) ;
315
316
SignalEventToPantograph ( PowerSupplyEvent . RaisePantograph , 1 ) ;
316
317
SignalEventToOtherTrainVehiclesWithId ( PowerSupplyEvent . RaisePantograph , 1 ) ;
317
318
break ;
318
319
319
320
case PowerSupplyEvent . QuickPowerOff :
320
- QuickPowerOn = false ;
321
+ QuickPowerOn = ( false , false ) ;
321
322
SignalEventToElectricTrainSupplySwitch ( PowerSupplyEvent . SwitchOffElectricTrainSupply ) ;
322
323
SignalEventToCircuitBreaker ( PowerSupplyEvent . QuickPowerOff ) ;
323
324
SignalEventToPantographs ( PowerSupplyEvent . LowerPantograph ) ;
0 commit comments