Skip to content

Commit d4da0af

Browse files
committed
Further rework to consolidate partmodules to 1 of each per PART not config
1 parent a5136ba commit d4da0af

14 files changed

+489
-74
lines changed
5.5 KB
Binary file not shown.
6 KB
Binary file not shown.
512 Bytes
Binary file not shown.
14 KB
Binary file not shown.

TestFlightAPI/TestFlightAPI/FlightDataRecorder.cs

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public class FlightDataRecorderBase : PartModule, IFlightDataRecorder
2222
public string configuration = "";
2323
#endregion
2424

25+
public List<ConfigNode> configs;
26+
public ConfigNode currentConfig;
27+
public string configNodeData;
28+
29+
2530
protected void Log(string message)
2631
{
2732
message = String.Format("FlightDataRecorder({0}[{1}]): {2}", Configuration, Configuration, message);
@@ -55,6 +60,56 @@ public string Configuration
5560
}
5661
}
5762

63+
public void SetActiveConfig(string alias)
64+
{
65+
if (configs == null)
66+
configs = new List<ConfigNode>();
67+
68+
foreach (var configNode in configs)
69+
{
70+
if (!configNode.HasValue("configuration")) continue;
71+
72+
var nodeConfiguration = configNode.GetValue("configuration");
73+
74+
if (string.Equals(nodeConfiguration, alias, StringComparison.InvariantCultureIgnoreCase))
75+
{
76+
currentConfig = configNode;
77+
}
78+
}
79+
80+
if (currentConfig == null) return;
81+
82+
// update current values with those from the current config node
83+
currentConfig.TryGetValue("flightDataMultiplier", ref flightDataMultiplier);
84+
currentConfig.TryGetValue("configuration", ref configuration);
85+
currentConfig.TryGetValue("flightDataEngineerModifier", ref flightDataEngineerModifier);
86+
}
87+
88+
public override void OnLoad(ConfigNode node)
89+
{
90+
base.OnLoad(node);
91+
92+
if (node.HasNode("MODULE"))
93+
node = node.GetNode("MODULE");
94+
95+
if (configs == null)
96+
configs = new List<ConfigNode>();
97+
98+
ConfigNode[] cNodes = node.GetNodes("CONFIG");
99+
if (cNodes != null && cNodes.Length > 0)
100+
{
101+
configs.Clear();
102+
103+
foreach (ConfigNode subNode in cNodes) {
104+
var newNode = new ConfigNode("CONFIG");
105+
subNode.CopyTo(newNode);
106+
configs.Add(newNode);
107+
}
108+
}
109+
110+
configNodeData = node.ToString();
111+
}
112+
58113
public void OnEnable()
59114
{
60115
if (core == null)
@@ -123,12 +178,10 @@ public virtual bool IsRecordingFlightData()
123178

124179
public override void OnAwake()
125180
{
126-
base.OnAwake();
127-
}
181+
var node = ConfigNode.Parse(configNodeData);
182+
OnLoad(node);
128183

129-
public override void OnLoad(ConfigNode node)
130-
{
131-
base.OnLoad(node);
184+
base.OnAwake();
132185
}
133186

134187
public override void OnSave(ConfigNode node)

TestFlightAPI/TestFlightAPI/TestFlightAPI.cs

Lines changed: 53 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,6 @@ public static ITestFlightCore GetCore(Part part)
295295

296296
public static ITestFlightCore GetCore(Part part, string alias)
297297
{
298-
Profiler.BeginSample("GetCore1");
299298
if (part == null || part.Modules == null)
300299
return null;
301300
if (alias == "")
@@ -304,10 +303,12 @@ public static ITestFlightCore GetCore(Part part, string alias)
304303
{
305304
PartModule pm = part.Modules[i];
306305
ITestFlightCore core = pm as ITestFlightCore;
307-
if (core != null && core.TestFlightEnabled && String.Equals(core.Alias, alias, StringComparison.InvariantCultureIgnoreCase))
306+
if (core != null)
307+
{
308+
core.UpdatePartConfig();
308309
return core;
310+
}
309311
}
310-
Profiler.EndSample();
311312
return null;
312313
}
313314

@@ -323,6 +324,43 @@ public static void UpdatePartConfigs(Part part)
323324
}
324325
}
325326
}
327+
328+
public static List<PartModule> GetAllTestFlightModulesForPart(Part part)
329+
{
330+
if (part == null || part.Modules == null)
331+
return null;
332+
333+
List<PartModule> modules = new List<PartModule>();
334+
for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++)
335+
{
336+
PartModule pm = part.Modules[i];
337+
338+
// FlightDataRecorder
339+
IFlightDataRecorder dataRecorder = pm as IFlightDataRecorder;
340+
if (dataRecorder != null)
341+
{
342+
modules.Add(pm);
343+
continue;
344+
}
345+
// TestFlightReliability
346+
ITestFlightReliability reliabilityModule = pm as ITestFlightReliability;
347+
if (reliabilityModule != null)
348+
{
349+
modules.Add(pm);
350+
continue;
351+
}
352+
// TestFlightFailure
353+
ITestFlightFailure failureModule = pm as ITestFlightFailure;
354+
if (failureModule != null)
355+
{
356+
modules.Add(pm);
357+
continue;
358+
}
359+
}
360+
361+
return modules;
362+
}
363+
326364

327365
public static List<PartModule> GetAllTestFlightModulesForAlias(Part part, string alias)
328366
{
@@ -365,23 +403,10 @@ public static List<PartModule> GetAllTestFlightModulesForAlias(Part part, string
365403
// Get the Data Recorder Module - can only ever be one.
366404
public static IFlightDataRecorder GetDataRecorder(Part part, string alias)
367405
{
368-
Profiler.BeginSample("GetFlightDataRecorder");
369-
if (part == null || part.Modules == null)
406+
if (part == null)
370407
return null;
371408

372-
for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++)
373-
{
374-
PartModule pm = part.Modules[i];
375-
IFlightDataRecorder dataRecorder = pm as IFlightDataRecorder;
376-
if (dataRecorder != null && dataRecorder.TestFlightEnabled &&
377-
dataRecorder.Configuration.Equals(alias, StringComparison.InvariantCultureIgnoreCase))
378-
{
379-
Profiler.EndSample();
380-
return dataRecorder;
381-
}
382-
}
383-
Profiler.EndSample();
384-
return null;
409+
return part.GetComponent(typeof(IFlightDataRecorder)) as IFlightDataRecorder;
385410
}
386411
// Get all Reliability Modules - can be more than one.
387412
public static List<ITestFlightReliability> GetReliabilityModules(Part part, string alias, bool checkEnabled = true)
@@ -394,10 +419,9 @@ public static List<ITestFlightReliability> GetReliabilityModules(Part part, stri
394419
{
395420
PartModule pm = part.Modules[i];
396421
ITestFlightReliability reliabilityModule = pm as ITestFlightReliability;
397-
if (reliabilityModule != null &&
398-
(!checkEnabled || reliabilityModule.TestFlightEnabled) &&
399-
String.Equals(reliabilityModule.Configuration, alias, StringComparison.InvariantCultureIgnoreCase))
422+
if (reliabilityModule != null)
400423
{
424+
// reliabilityModule.SetActiveConfig(alias);
401425
reliabilityModules.Add(reliabilityModule);
402426
}
403427
}
@@ -415,10 +439,9 @@ public static List<ITestFlightFailure> GetFailureModules(Part part, string alias
415439
{
416440
PartModule pm = part.Modules[i];
417441
ITestFlightFailure failureModule = pm as ITestFlightFailure;
418-
if (failureModule != null &&
419-
(!checkEnabled || failureModule.TestFlightEnabled) &&
420-
String.Equals(failureModule.Configuration, alias, StringComparison.InvariantCultureIgnoreCase))
442+
if (failureModule != null)
421443
{
444+
// failureModule.SetActiveConfig(alias);
422445
failureModules.Add(failureModule);
423446
}
424447
}
@@ -815,6 +838,8 @@ string Configuration
815838
/// </summary>
816839
/// <returns>A string of information to display to the user, or "" if none</returns>
817840
List<string> GetTestFlightInfo();
841+
842+
void SetActiveConfig(string configuration);
818843
}
819844

820845
public interface ITestFlightReliability
@@ -858,6 +883,8 @@ string Configuration
858883
/// </summary>
859884
/// <returns>A string of information to display to the user, or "" if none</returns>
860885
string GetModuleInfo();
886+
887+
void SetActiveConfig(string configuration);
861888
}
862889

863890
public interface ITestFlightFailure
@@ -912,6 +939,8 @@ string Configuration
912939
/// </summary>
913940
/// <returns>A string of information to display to the user, or "" if none</returns>
914941
string GetModuleInfo();
942+
943+
void SetActiveConfig(string configuration);
915944
}
916945

917946
public interface ITestFlightInterop

TestFlightAPI/TestFlightAPI/TestFlightFailure.cs

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public class TestFlightFailureBase : PartModule, ITestFlightFailure
2929
[KSPField(isPersistant=true)]
3030
public bool failed;
3131

32+
public List<ConfigNode> configs;
33+
public ConfigNode currentConfig;
34+
public string configNodeData;
3235

3336
public bool Failed
3437
{
@@ -116,6 +119,35 @@ public virtual float DoRepair()
116119
return 0;
117120
}
118121

122+
public virtual void SetActiveConfig(string alias)
123+
{
124+
if (configs == null)
125+
configs = new List<ConfigNode>();
126+
127+
foreach (var configNode in configs)
128+
{
129+
if (!configNode.HasValue("configuration")) continue;
130+
131+
var nodeConfiguration = configNode.GetValue("configuration");
132+
133+
if (string.Equals(nodeConfiguration, alias, StringComparison.InvariantCultureIgnoreCase))
134+
{
135+
currentConfig = configNode;
136+
}
137+
}
138+
139+
if (currentConfig == null) return;
140+
141+
// update current values with those from the current config node
142+
currentConfig.TryGetValue("configuration", ref configuration);
143+
currentConfig.TryGetValue("failureType", ref failureType);
144+
currentConfig.TryGetValue("severity", ref severity);
145+
currentConfig.TryGetValue("weight", ref weight);
146+
currentConfig.TryGetValue("failureTitle", ref failureTitle);
147+
currentConfig.TryGetValue("duFail", ref duFail);
148+
currentConfig.TryGetValue("duRepair", ref duRepair);
149+
currentConfig.TryGetValue("oneShot", ref oneShot);
150+
}
119151

120152
public virtual List<string> GetTestFlightInfo()
121153
{
@@ -124,6 +156,9 @@ public virtual List<string> GetTestFlightInfo()
124156

125157
public override void OnAwake()
126158
{
159+
var node = ConfigNode.Parse(configNodeData);
160+
OnLoad(node);
161+
127162
Failed = false;
128163
base.OnAwake();
129164
}
@@ -135,11 +170,31 @@ public override void OnStart(StartState state)
135170
public override void OnLoad(ConfigNode node)
136171
{
137172
base.OnLoad(node);
173+
174+
if (node.HasNode("MODULE"))
175+
node = node.GetNode("MODULE");
176+
177+
if (configs == null)
178+
configs = new List<ConfigNode>();
179+
180+
ConfigNode[] cNodes = node.GetNodes("CONFIG");
181+
if (cNodes != null && cNodes.Length > 0)
182+
{
183+
configs.Clear();
184+
185+
foreach (ConfigNode subNode in cNodes) {
186+
var newNode = new ConfigNode("CONFIG");
187+
subNode.CopyTo(newNode);
188+
configs.Add(newNode);
189+
}
190+
}
191+
192+
configNodeData = node.ToString();
138193
}
139194

140195
public override void OnSave(ConfigNode node)
141196
{
142-
base.OnLoad(node);
197+
base.OnSave(node);
143198
}
144199

145200

0 commit comments

Comments
 (0)