Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        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;
                    }
                }
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        // 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);
        }
Esempio n. 6
0
        // 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);
        }
Esempio n. 7
0
        // 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);
        }
Esempio n. 9
0
        // 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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        // 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);
        }
Esempio n. 12
0
        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();
                }
            }
        }