Ejemplo n.º 1
0
 private void InitializeParts(Vessel vessel)
 {
     foreach (Part part in vessel.parts)
     {
         // Each KSP part can be composed of N virtual parts
         List <string> cores = TestFlightInterface.GetActiveCores(part);
         if (cores == null || cores.Count <= 0)
         {
             continue;
         }
         foreach (string activeCore in cores)
         {
             ITestFlightCore core = TestFlightUtil.GetCore(part, activeCore);
             if (core != null)
             {
                 if (TestFlightManagerScenario.Instance.SettingsAlwaysMaxData)
                 {
                     core.InitializeFlightData(core.GetMaximumData());
                 }
                 else
                 {
                     TestFlightPartData partData = tfScenario.GetPartDataForPart(activeCore);
                     if (partData != null)
                     {
                         core.InitializeFlightData(partData.GetFloat("flightData"));
                     }
                     else
                     {
                         core.InitializeFlightData(0f);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        private void InitializeParts(Vessel vessel)
        {
            if (!tfScenario.SettingsEnabled)
            {
                return;
            }

            // Launch time is equal to current UT unless we have already cached this vessel's launch time
            double launchTime = Planetarium.GetUniversalTime();

            if (knownVessels.ContainsKey(vessel.id))
            {
                launchTime = knownVessels[vessel.id];
            }
            foreach (Part part in vessel.parts)
            {
                // Each KSP part can be composed of N virtual parts
                List <string> cores = TestFlightInterface.GetActiveCores(part);
                if (cores == null || cores.Count <= 0)
                {
                    continue;
                }
                foreach (string activeCore in cores)
                {
                    ITestFlightCore core = TestFlightUtil.GetCore(part, activeCore);
                    if (core != null)
                    {
                        Log("TestFlightManager: Found core.  Getting part data");
                        if (TestFlightManagerScenario.Instance.SettingsAlwaysMaxData)
                        {
                            core.InitializeFlightData(core.GetMaximumData());
                        }
                        else
                        {
                            TestFlightPartData partData = tfScenario.GetPartDataForPart(activeCore);
                            if (partData != null)
                            {
                                core.InitializeFlightData(partData.GetFloat("flightData"));
                            }
                            else
                            {
                                core.InitializeFlightData(0f);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void InitializeParts(Vessel vessel)
        {
            Log("TestFlightManager: Initializing parts for vessel " + vessel.GetName());

            // Launch time is equal to current UT unless we have already cached this vessel's launch time
            double launchTime = Planetarium.GetUniversalTime();

            if (knownVessels.ContainsKey(vessel.id))
            {
                launchTime = knownVessels[vessel.id];
            }
            foreach (Part part in vessel.parts)
            {
                ITestFlightCore core = TestFlightUtil.GetCore(part);
                if (core != null)
                {
                    Log("TestFlightManager: Found core.  Getting part data");
                    if (TestFlightManagerScenario.Instance.SettingsAlwaysMaxData)
                    {
                        core.InitializeFlightData(core.GetMaximumData());
                    }
                    else
                    {
                        TestFlightPartData partData = tfScenario.GetPartDataForPart(TestFlightUtil.GetFullPartName(part));
                        if (partData != null)
                        {
                            core.InitializeFlightData(partData.GetFloat("flightData"));
                        }
                        else
                        {
                            core.InitializeFlightData(0f);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        internal override void DrawWindow(int id)
        {
            if (!isReady)
            {
                return;
            }

            if (SelectedPart == null)
            {
                GUILayout.BeginVertical();
                GUILayout.Label("Select a part to display its details", Styles.styleEditorTitle);
                GUILayout.Label("MouseOver part in bin or 3D view to quickview", Styles.styleEditorText);
                GUILayout.Label("RightClick part in bin (not 3D) to toggle window lock on that part", Styles.styleEditorText);
                GUILayout.EndVertical();
                if (DrawToggle(ref tfScenario.userSettings.editorWindowLocked, "Lock Window", Styles.styleToggle))
                {
                    if (tfScenario.userSettings.editorWindowLocked)
                    {
                        CalculateWindowBounds();
                        tfScenario.userSettings.editorWindowPosition = WindowRect;
                        DragEnabled = false;
                    }
                    else
                    {
                        DragEnabled = true;
                    }
                    tfScenario.userSettings.Save();
                }
                return;
            }

            ITestFlightCore core = null;

            GUILayout.BeginVertical();
            GUILayout.Label(String.Format("Selected Part: {0}", TestFlightUtil.GetFullPartName(SelectedPart)), Styles.styleEditorTitle);

            tfScenario.userSettings.currentEditorScrollPosition = GUILayout.BeginScrollView(tfScenario.userSettings.currentEditorScrollPosition);
            TestFlightPartData partData = tfScenario.GetPartDataForPart(TestFlightUtil.GetFullPartName(SelectedPart));

            if (partData != null)
            {
                float flightData = partData.GetFloat("flightData");
                core = TestFlightUtil.GetCore(SelectedPart);
                if (core != null)
                {
                    core.InitializeFlightData(flightData);
                    GUILayout.BeginHorizontal();
                    double failureRate = core.GetBaseFailureRate();
                    String mtbfString  = core.FailureRateToMTBFString(failureRate, TestFlightUtil.MTBFUnits.SECONDS, 999);
                    // 10 characters for body max plus 10 characters for situation plus underscore = 21 characters needed for longest scope string
                    GUILayout.Label(String.Format("{0,-7:F2}<b>du</b>", flightData), GUILayout.Width(75));
                    GUILayout.Label(String.Format("{0,-5:F2} MTBF", mtbfString), GUILayout.Width(125));
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndScrollView();
            if (DrawToggle(ref tfScenario.userSettings.editorWindowLocked, "Lock Window", Styles.styleToggle))
            {
                if (tfScenario.userSettings.editorWindowLocked)
                {
                    CalculateWindowBounds();
                    tfScenario.userSettings.editorWindowPosition = WindowRect;
                    DragEnabled = false;
                }
                else
                {
                    DragEnabled = true;
                }
                tfScenario.userSettings.Save();
            }
            GUILayout.EndVertical();
        }