@@ -4,14 +4,6 @@ namespace TestFlight
44{
55 public class TestFlightFailure_ShutdownEngine : TestFlightFailure_Engine
66 {
7- protected struct CachedEngineState
8- {
9- public bool allowShutdown ;
10- public int numIgnitions ;
11- }
12-
13- Dictionary < int , CachedEngineState > engineStates ;
14-
157 /// <summary>
168 /// Triggers the failure controlled by the failure module
179 /// </summary>
@@ -23,10 +15,8 @@ public override void DoFailure()
2315 engineStates . Clear ( ) ;
2416 foreach ( EngineHandler engine in engines )
2517 {
26- int id = engine . engine . Module . GetInstanceID ( ) ;
27- CachedEngineState engineState = new CachedEngineState ( ) ;
28- engineState . allowShutdown = engine . engine . allowShutdown ;
29- engineState . numIgnitions = engine . engine . GetIgnitionCount ( ) ;
18+ int id = engines . IndexOf ( engine ) ;
19+ var engineState = new CachedEngineState ( engine . engine ) ;
3020 engine . engine . Shutdown ( ) ;
3121 var numIgnitionsToRemove = 1 ;
3222 if ( severity . ToLowerInvariant ( ) == "major" )
@@ -45,24 +35,26 @@ public override void DoFailure()
4535
4636 public override float DoRepair ( )
4737 {
48- base . DoRepair ( ) ;
4938 // for each engine restore it
5039 foreach ( EngineHandler engine in engines )
5140 {
52- int id = engine . engine . Module . GetInstanceID ( ) ;
53- if ( engineStates . ContainsKey ( id ) )
41+ int id = engines . IndexOf ( engine ) ;
42+ CachedEngineState engineState = null ;
43+ if ( engineStates ? . TryGetValue ( id , out engineState ) ?? false )
5444 {
5545 engine . engine . enabled = true ;
5646 engine . engine . Events [ "Activate" ] . active = true ;
5747 engine . engine . Events [ "Activate" ] . guiActive = true ;
5848 engine . engine . Events [ "Shutdown" ] . guiActive = true ;
59- engine . engine . allowShutdown = engineStates [ id ] . allowShutdown ;
60- engine . engine . SetIgnitionCount ( engineStates [ id ] . numIgnitions ) ;
49+ engine . engine . allowShutdown = engineState . allowShutdown ;
50+ engine . engine . allowRestart = engineState . allowRestart ;
51+ engine . engine . SetIgnitionCount ( engineState . numIgnitions ) ;
6152 engine . engine . failed = false ;
6253 engine . engine . failMessage = "" ;
6354 }
6455 }
6556 engineStates . Clear ( ) ;
57+ base . DoRepair ( ) ;
6658 return 0 ;
6759 }
6860 }
0 commit comments