// Get the base or static failure rate public double GetBaseFailureRate() { if (baseFailureRate > 0) { Log("Returning cached failure rate"); return(baseFailureRate); } double totalBFR = 0f; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { Log("Unable to locate any reliability modules. Using min failure rate"); return(TestFlightUtil.MIN_FAILURE_RATE); } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; totalBFR += rm.GetBaseFailureRate(initialFlightData); } Log(String.Format("BFR: {0:F7}, Modifier: {1:F7}", totalBFR, failureRateModifier)); totalBFR = totalBFR * failureRateModifier; totalBFR = Math.Max(totalBFR, TestFlightUtil.MIN_FAILURE_RATE); baseFailureRate = totalBFR; return(baseFailureRate); }
private void CalculateMaximumData() { if (maxData > 0f) { return; } List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return; } if (reliabilityModules.Count < 1) { return; } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; FloatCurve curve = rm.GetReliabilityCurve(); if (curve != null) { if (curve.maxTime > maxData) { maxData = curve.maxTime; } } } }
public List <string> GetTestFlightInfo() { List <string> infoStrings = new List <string>(); string partName = Alias; infoStrings.Add("<b>Core</b>"); infoStrings.Add("<b>Active Part</b>: " + partName); float flightData = TestFlightManagerScenario.Instance.GetFlightDataForPartName(partName); if (flightData < 0f) { flightData = 0f; } infoStrings.Add(String.Format("<b>Flight Data</b>: {0:f2}/{1:f2}", flightData, maxData)); List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules != null) { for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability reliabilityModule = reliabilityModules[i]; infoStrings.AddRange(reliabilityModule.GetTestFlightInfo()); } } return(infoStrings); }
public override string GetInfo() { // This methods collects data from all the TestFlight modules and combines it into one string List <string> infoStrings = new List <string>(); List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias, false); if (reliabilityModules != null) { for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability reliabilityModule = reliabilityModules[i]; var s = reliabilityModule.GetModuleInfo(); if (!string.IsNullOrEmpty(s)) { infoStrings.Add(s); } } } List <ITestFlightFailure> failureModules = TestFlightUtil.GetFailureModules(this.part, Alias, false); if (failureModules != null) { for (int i = 0, failureModulesCount = failureModules.Count; i < failureModulesCount; i++) { ITestFlightFailure failureModule = failureModules[i]; var s = failureModule.GetModuleInfo(); if (!string.IsNullOrEmpty(s)) { infoStrings.Add(s); } } } if (infoStrings.Count > 0) { return(string.Join("\n", infoStrings.ToArray())); } return(base.GetInfo()); }
// Get all Reliability Modules - can be more than one. public static List <ITestFlightReliability> GetReliabilityModules(Part part) { List <ITestFlightReliability> reliabilityModules; if (part == null || part.Modules == null) { return(null); } reliabilityModules = new List <ITestFlightReliability>(); foreach (PartModule pm in part.Modules) { ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null && reliabilityModule.TestFlightEnabled) { reliabilityModules.Add(reliabilityModule); } } return(reliabilityModules); }
// Get all Reliability Modules - can be more than one. public static List <ITestFlightReliability> GetReliabilityModules(Part part, string alias) { List <ITestFlightReliability> reliabilityModules; if (part == null || part.Modules == null) { return(null); } reliabilityModules = new List <ITestFlightReliability>(); foreach (PartModule pm in part.Modules) { ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null && reliabilityModule.TestFlightEnabled && reliabilityModule.Configuration.ToLowerInvariant() == alias.ToLowerInvariant()) { reliabilityModules.Add(reliabilityModule); } } return(reliabilityModules); }
// Get all Reliability Modules - can be more than one. public static List <ITestFlightReliability> GetReliabilityModules(Part part, string alias) { if (part == null || part.Modules == null) { return(null); } var reliabilityModules = new List <ITestFlightReliability>(); for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++) { PartModule pm = part.Modules[i]; ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null && reliabilityModule.TestFlightEnabled && String.Equals(reliabilityModule.Configuration, alias, StringComparison.InvariantCultureIgnoreCase)) { reliabilityModules.Add(reliabilityModule); } } return(reliabilityModules); }
public static List <PartModule> GetAllTestFlightModulesForAlias(Part part, string alias) { if (part == null || part.Modules == null) { return(null); } List <PartModule> modules = new List <PartModule>(); for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++) { PartModule pm = part.Modules[i]; // FlightDataRecorder IFlightDataRecorder dataRecorder = pm as IFlightDataRecorder; if (dataRecorder != null && dataRecorder.Configuration.Equals(alias, StringComparison.InvariantCultureIgnoreCase)) { modules.Add(pm); continue; } // TestFlightReliability ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null && reliabilityModule.Configuration.Equals(alias, StringComparison.InvariantCultureIgnoreCase)) { modules.Add(pm); continue; } // TestFlightFailure ITestFlightFailure failureModule = pm as ITestFlightFailure; if (failureModule != null && failureModule.Configuration.Equals(alias, StringComparison.InvariantCultureIgnoreCase)) { modules.Add(pm); continue; } } return(modules); }
// Get all Reliability Modules - can be more than one. public static List <ITestFlightReliability> GetReliabilityModules(Part part, string alias, bool checkEnabled = true) { if (part == null || part.Modules == null) { return(null); } var reliabilityModules = new List <ITestFlightReliability>(); for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++) { PartModule pm = part.Modules[i]; ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null) { // reliabilityModule.SetActiveConfig(alias); reliabilityModules.Add(reliabilityModule); } } return(reliabilityModules); }
public static List <PartModule> GetAllTestFlightModulesForPart(Part part) { if (part == null || part.Modules == null) { return(null); } List <PartModule> modules = new List <PartModule>(); for (int i = 0, partModulesCount = part.Modules.Count; i < partModulesCount; i++) { PartModule pm = part.Modules[i]; // FlightDataRecorder IFlightDataRecorder dataRecorder = pm as IFlightDataRecorder; if (dataRecorder != null) { modules.Add(pm); continue; } // TestFlightReliability ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null) { modules.Add(pm); continue; } // TestFlightFailure ITestFlightFailure failureModule = pm as ITestFlightFailure; if (failureModule != null) { modules.Add(pm); continue; } } return(modules); }
// Get the Reliability Curve for the part public FloatCurve GetBaseReliabilityCurve() { FloatCurve curve; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return(null); } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; curve = rm.GetReliabilityCurve(); if (curve == null) { continue; } return(curve); } return(null); }
public void Startup() { burnTimes = new Dictionary<string, float>(); foreach (AvailablePart part in PartLoader.LoadedPartsList) { // cache up the burn times first List<ITestFlightReliability> engineCycles = new List<ITestFlightReliability>(); burnTimes.Clear(); foreach (PartModule pm in part.partPrefab.Modules) { ITestFlightReliability reliabilityModule = pm as ITestFlightReliability; if (reliabilityModule != null) engineCycles.Add(reliabilityModule); } if (engineCycles.Count <= 0) continue; foreach (ITestFlightReliability rm in engineCycles) { TestFlightReliability_EngineCycle engineCycle = rm as TestFlightReliability_EngineCycle; if (engineCycle != null) { if (engineCycle.engineConfig != "") { burnTimes[engineCycle.engineConfig] = engineCycle.ratedBurnTime; } } } // now add that info to the RF configs List<ModuleEngineConfigs> allConfigs = new List<ModuleEngineConfigs>(); allConfigs.AddRange(part.partPrefab.Modules.GetModules<ModuleEngineConfigs>()); if (allConfigs.Count <= 0) continue; foreach (ModuleEngineConfigs mec in allConfigs) { List<ConfigNode> configs = mec.configs; foreach (ConfigNode node in configs) { if (node.HasValue("name")) { string configName = node.GetValue("name"); if (burnTimes.ContainsKey(configName)) { if (node.HasValue("description")) { string description = node.GetValue("description"); description += String.Format("\n" + " " + <b>Rated Burn Time</b>: {0}", TestFlightUtil.FormatTime(burnTimes[configName], TestFlightUtil.TIMEFORMAT.SHORT_IDENTIFIER, true)); node.SetValue("description", description, true); } else { node.AddValue("description", String.Format("\nRated Burn Time {0}", TestFlightUtil.FormatTime(burnTimes[configName], TestFlightUtil.TIMEFORMAT.SHORT_IDENTIFIER, true))); } } } } mec.SetConfiguration(); } } }