Exemple #1
0
        void Update()
        {
            // We don't want to do anything if we aren't simming
            if (KRASHShelter.persistent.shelterSimulationActive)
            {
#if true
                if (HighLogic.CurrentGame.Parameters.CustomParams<KRASH_Settings>().wireframes)
                {
                    if (!wireFrameAdded)
                    {
                        wireFrameAdded = true;
                        Log.Info("Adding wireframe");
                        cams = Camera.allCameras;

                        for (int i = 0; i < cams.Length; i++)
                        {
                            if (cams[i].name == "Camera 00")
                            {
                                nearCamera = cams[i];
                            }
                            if (cams[i].name == "Camera 01")
                            {
                                //cams [i].renderingPath=RenderingPath.DeferredShading;
                                farCamera = cams[i];
                                //cams [i].enabled=false;

                            }
                            if (cams[i].name == "Camera ScaledSpace")
                            {
                                //cams [i].renderingPath=RenderingPath.DeferredShading;
                                scaledSpaceCamera = cams[i];
                            }
                        }
                        nearCamera.gameObject.AddComponent(typeof(WireFrame));
                        // farCamera.gameObject.AddComponent(typeof(WireFrame));
                        // scaledSpaceCamera.gameObject.AddComponent(typeof(WireFrame));
#if false
                        // Camera.main.gameObject.AddComponent(typeof(Wireframe));
                      
                    var v = FlightGlobals.ActiveVessel;

                    foreach (var p in v.parts)
                    {
                        
                        var mf = p.FindModelComponents<MeshFilter>();
                        var smr = p.FindModelComponents<SkinnedMeshRenderer>();

                        //  if (p.partTransform.GetComponent<MeshFilter>() || p.partTransform.GetComponent<SkinnedMeshRenderer>())
                        if ((mf != null && mf.Count > 0) || (smr != null && smr.Count > 0))
                        {
                            Log.Info("Wireframe added to part: " + p.partInfo.name);
                            // Add a WireFrame object to it.
                           // WireFrame added = p.gameObject.AddComponent<WireFrame>();

                          

                        }

                    }
#endif
                    }
#endif
                }
                // Don't allow any of the recovery buttons to be used
                //	AltimeterSliderButtons _Recovery_button = (AltimeterSliderButtons)GameObject.FindObjectOfType (typeof(AltimeterSliderButtons));
                if (_Recovery_button == null)
                {
                    _Recovery_button = (AltimeterSliderButtons)GameObject.FindObjectOfType(typeof(AltimeterSliderButtons));
                }
                if (_Recovery_button != null && _Recovery_button.slidingTab.enabled)
                {
                    _Recovery_button.hoverArea = new XSelectable();
                    _Recovery_button.slidingTab.enabled = false;
                    _Recovery_button.spaceCenterButton.enabled = false;
                    _Recovery_button.vesselRecoveryButton.enabled = false;
                    Log.Info("Recovery locked");
                }


                if (KRASHShelter.instance.simPauseMenuInstance == null)
                {
                    Log.Info("FlightModule.Update KRASH.simPauseMenuInstance == null");
                    return;
                }
                if (KRASHShelter.instance == null)
                {
                    Log.Info("FlightModule.Update KRASH.instance == null");
                    return;
                }
                //Log.Info ("jbb PauseMenu.isOpen: " + PauseMenu.isOpen.ToString ());
                //Log.Info ("KRASHShelter.instance.simPauseMenuInstance.isOpen: " + KRASHShelter.instance.simPauseMenuInstance.isOpen.ToString ());

                bool b;
                try
                {
                    b = FlightResultsDialog.isDisplaying;
                }
                catch (Exception)
                {
                    Log.Info("FlightResultsDialog.isDisplaying exception");
                    b = false;
                }
                if (b)
                {
                    FlightResultsDialog.showExitControls = false;
                    FlightResultsDialog.allowClosingDialog = true;
                    FlightResultsDialog.Display("Simulation ended!");
                }


                // Hide the vanilla pause menu.
                Log.Info("Checking PauseMenu");
                Log.Info("PauseMenu.isOpen: " + PauseMenu.isOpen.ToString());
                if (PauseMenu.isOpen)
                {
                    PauseMenu.Close();
                    pauseCnt = 1;
                }

                // Check for pause keypress
                //pauseCnt++;
                if (/* GameSettings.PAUSE.GetKeyDown() && */ pauseCnt != 0 && closeCnt == 0)
                {
                    Log.Info("GetKeyDown    menu.isOpen: " + KRASHShelter.instance.simPauseMenuInstance.isOpen);
                    if (GameSettings.PAUSE.GetKeyDown())
                    {
                        pauseCnt = 0;
                        Log.Info("GameSettings.PAUSE.GetKeyDown");
                    }
                    switch (KRASHShelter.instance.simPauseMenuInstance.isOpen)
                    {
                        case false:
                            if (pauseCnt == 1)
                            {
                                KRASHShelter.instance.simPauseMenuInstance.Display();
                                pauseCnt = 2;
                            }
                            break;
                        case true:
                            if (pauseCnt == 0)
                            {
                                Log.Info("menu.Close");
                                KRASHShelter.instance.simPauseMenuInstance.Close();
                                Log.Info("After close simPauseMenuInstance, PauseMenu.isOpen: " + PauseMenu.isOpen.ToString());
                                pauseCnt = 0;
                                closeCnt = 1;
                            }
                            break;
                    }
                }
                else
                {
                    // The wierd issue changed from 1.1.3 to 1.2, now, it pauses for 7-10 tics after unpausing
                    if (closeCnt > 0 && closeCnt++ < 20)
                    {
                        FlightDriver.SetPause(false);
                        PauseMenu.Close();
                        pauseCnt = 0;
                    }
                    else
                        closeCnt = 0;
                    // This is to get around a wierd issue where the game unpauses
                    // for about 7-10 tics after PauseMenu.Close() is called.
                    // if (KRASHShelter.instance.simPauseMenuInstance.isOpen && pauseCnt < 20 /*&& FlightDriver.Pause */)
                    //     FlightDriver.SetPause(true);
                }
            }
        }
Exemple #2
0
        private void flightUpdate()
        {
            UpdateCollision();

            if (HighLogic.CurrentGame != null)
            {
                if (hyperWarping || autoWarping)
                {
                    HighLogic.CurrentGame.Parameters.Flight.CanTimeWarpHigh = false;
                    HighLogic.CurrentGame.Parameters.Flight.CanTimeWarpLow = false;
                }
                else
                {
                    HighLogic.CurrentGame.Parameters.Flight.CanTimeWarpHigh = true;
                    HighLogic.CurrentGame.Parameters.Flight.CanTimeWarpLow = true;
                }
            }

            if (fld == null)
            {
                fld = FlightResultsDialog.FindObjectOfType<FlightResultsDialog>();
            }
            if (supressFlightResultsDialog)
            {
                fld.enabled = false;
            }
            else
            {
                fld.enabled = true;
            }

            warpText.textStyles[1].normal.textColor = warpTextColor; //ensures the warp text color goes back to default

            Time.maximumDeltaTime = Mathf.Round(Settings.maxDeltaTimeSlider * 100f) / 100f;

            if (Settings.camFix)
            {
                cam.SetDistanceImmediate(cam.Distance);
            }

            if (throttleToggle)
            {
                FlightInputHandler.state.mainThrottle = throttleSlider;
            }

            if (operational && !(TimeWarp.CurrentRate > 1))
            {
                keyManager(); //handles keybindings

                if (!hyperWarping)
                {
                    truePos = convertToExponential(timeSlider);
                    if (!timePaused)
                    {
                        fpsKeeper();

                        smoothSlider = linearInterpolate(smoothSlider, timeSlider, .01f);
                        inverseTimeScale = convertToExponential(smoothSlider);
                        Time.timeScale = 1f / inverseTimeScale;
                        Time.fixedDeltaTime = deltaLocked ? defaultDeltaTime : defaultDeltaTime * (1f / inverseTimeScale);
                        //Time.maximumDeltaTime = (Mathf.Round(Settings.maxDeltaTimeSlider * 100f) / 100f)/inverseTimeScale;
                    }
                    else
                    {
                        Time.timeScale = 0f;
                    }
                }
                else if (hyperWarping) //hyperwarp
                {
                    Time.timeScale = Mathf.Round(hyperMaxRate);
                    Time.fixedDeltaTime = defaultDeltaTime * hyperMinPhys;
                    warpText.textStyles[1].normal.textColor = Color.red;
                    warpMessage("Hyper Warp: " + Math.Round(PerformanceManager.ptr, 1) + "x");
                }
                Planetarium.fetch.fixedDeltaTime = Time.fixedDeltaTime;
            }
            else
            {
                smoothSlider = timeSlider;
            }
        }
Exemple #3
0
        void Update()
        {
            // We don't want to do anything if we aren't simming
            if (KRASHShelter.persistent.shelterSimulationActive)
            {
                // Don't allow any of the recovery buttons to be used
                //	AltimeterSliderButtons _Recovery_button = (AltimeterSliderButtons)GameObject.FindObjectOfType (typeof(AltimeterSliderButtons));
                if (_Recovery_button == null)
                {
                    _Recovery_button = (AltimeterSliderButtons)GameObject.FindObjectOfType(typeof(AltimeterSliderButtons));
                }
                if (_Recovery_button != null && _Recovery_button.slidingTab.enabled)
                {
                    _Recovery_button.hoverArea                    = new XSelectable();
                    _Recovery_button.slidingTab.enabled           = false;
                    _Recovery_button.spaceCenterButton.enabled    = false;
                    _Recovery_button.vesselRecoveryButton.enabled = false;
                    Log.Info("Recovery locked");
                }


                if (KRASHShelter.instance.simPauseMenuInstance == null)
                {
                    Log.Info("FlightModule.Update KRASH.simPauseMenuInstance == null");
                    return;
                }
                if (KRASHShelter.instance == null)
                {
                    Log.Info("FlightModule.Update KRASH.instance == null");
                    return;
                }
                //Log.Info ("jbb PauseMenu.isOpen: " + PauseMenu.isOpen.ToString ());
                //Log.Info ("KRASHShelter.instance.simPauseMenuInstance.isOpen: " + KRASHShelter.instance.simPauseMenuInstance.isOpen.ToString ());

                bool b;
                try
                {
                    b = FlightResultsDialog.isDisplaying;
                }
                catch (Exception)
                {
                    Log.Info("FlightResultsDialog.isDisplaying exception");
                    b = false;
                }
                if (b)
                {
                    FlightResultsDialog.showExitControls   = false;
                    FlightResultsDialog.allowClosingDialog = true;
                    FlightResultsDialog.Display("Simulation ended!");
                }


                // Hide the vanilla pause menu.
                Log.Info("Checking PauseMenu");
                Log.Info("PauseMenu.isOpen: " + PauseMenu.isOpen.ToString());
                if (PauseMenu.isOpen)
                {
                    PauseMenu.Close();
                    pauseCnt = 1;
                }

                // Check for pause keypress
                //pauseCnt++;
                if (/* GameSettings.PAUSE.GetKeyDown() && */ pauseCnt != 0 && closeCnt == 0)
                {
                    Log.Info("GetKeyDown    menu.isOpen: " + KRASHShelter.instance.simPauseMenuInstance.isOpen);
                    if (GameSettings.PAUSE.GetKeyDown())
                    {
                        pauseCnt = 0;
                        Log.Info("GameSettings.PAUSE.GetKeyDown");
                    }
                    switch (KRASHShelter.instance.simPauseMenuInstance.isOpen)
                    {
                    case false:
                        if (pauseCnt == 1)
                        {
                            KRASHShelter.instance.simPauseMenuInstance.Display();
                            pauseCnt = 2;
                        }
                        break;

                    case true:
                        if (pauseCnt == 0)
                        {
                            Log.Info("menu.Close");
                            KRASHShelter.instance.simPauseMenuInstance.Close();
                            Log.Info("After close simPauseMenuInstance, PauseMenu.isOpen: " + PauseMenu.isOpen.ToString());
                            pauseCnt = 0;
                            closeCnt = 1;
                        }
                        break;
                    }
                }
                else
                {
                    // The wierd issue changed from 1.1.3 to 1.2, now, it pauses for 7-10 tics after unpausing
                    if (closeCnt > 0 && closeCnt++ < 20)
                    {
                        FlightDriver.SetPause(false);
                        PauseMenu.Close();
                        pauseCnt = 0;
                    }
                    else
                    {
                        closeCnt = 0;
                    }
                    // This is to get around a wierd issue where the game unpauses
                    // for about 7-10 tics after PauseMenu.Close() is called.
                    // if (KRASHShelter.instance.simPauseMenuInstance.isOpen && pauseCnt < 20 /*&& FlightDriver.Pause */)
                    //     FlightDriver.SetPause(true);
                }
            }
        }
        /// <summary>
        /// Draws the main mission window.
        /// Do not use currentMission.isDone or missionGoal.isDone(), use status instead!!!
        /// </summary>
        /// <param name="id">Identifier.</param>
        private void drawMainWindow(int id)
        {
            Status status = calculateStatus(currentMission, true, activeVessel);

            GUI.skin = HighLogic.Skin;
            GUILayout.BeginVertical();

            scrollPosition = GUILayout.BeginScrollView(scrollPosition);
            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Current budget: ", styleValueName);
            GUILayout.Label(manager.budget + CurrencySuffix, (manager.budget < 0 ? styleValueRed : styleValueGreen));
            GUILayout.EndHorizontal();

            // Show only when the loaded scene is an editor or a vessel is available and its situation is PRELAUNCH
            if (HighLogic.LoadedSceneIsEditor || status.onLaunchPad)
            {
                VesselResources res = vesselResources;
                showCostValue("Liquid fuel costs:", res.liquid(), styleValueGreen);
                showCostValue("Oxidizer costs:", res.oxidizer(), styleValueGreen);
                showCostValue("Monopropellant costs:", res.mono(), styleValueGreen);
                showCostValue("Solid fuel costs:", res.solid(), styleValueGreen);
                showCostValue("Xenon gas costs:", res.xenon(), styleValueGreen);
                showCostValue("Liquid engines: ", res.engine(), styleValueGreen);
                showCostValue("Crew insurance: ", res.crew(), styleValueGreen);
                showCostValue("Other resource costs:", res.materials(), styleValueGreen);
                showCostValue("Sum:", res.sum(), (res.sum() > manager.budget ? styleValueRed : styleValueGreen));
            }

            if (status.isClientControlled)
            {
                MissionStatus s = manager.getClientControlledMission(activeVessel);
                GUILayout.Label("This vessel is controlled by a client. Do not destroy this vessel! Fine: " + s.punishment + CurrencySuffix, styleWarning);
                GUILayout.Label("End of life in " + MathTools.formatTime(s.endOfLife - Planetarium.GetUniversalTime()));
            }
            else if (status.isOnPassiveMission)
            {
                MissionStatus s = manager.getPassiveMission(activeVessel);
                GUILayout.Label("This vessel is involved in a passive mission. Do not destroy this vessel! Fine: " + s.punishment + CurrencySuffix, styleWarning);
                GUILayout.Label("End of life in " + MathTools.formatTime(s.endOfLife - Planetarium.GetUniversalTime()));
            }

            GUILayout.Space(30);

            if (currentMission != null)
            {
                drawMission(currentMission, status);
            }
            else
            {
                drawPassiveMissions(manager.getActivePassiveMissions());

                if (GUILayout.Button("Configure"))
                {
                    settingsWindow(!showSettingsWindow);
                    resetCount = 0;
                }
            }

//            if (GUILayout.Button ("Draw landing area!", styleButton)) {
//                drawLandingArea = !drawLandingArea;
//            }

            GUILayout.EndVertical();
            GUILayout.EndScrollView();

            if (GUILayout.Button("Select mission package"))
            {
                createFileBrowser("Select mission from package", selectMissionPackage);
            }

            if (currentPackage != null)
            {
                if (GUILayout.Button("Open browser window"))
                {
                    packageWindow(true);
                }
            }

            if (currentMission != null)
            {
                if (GUILayout.Button("Deselect mission"))
                {
                    currentMission = null;
                }
            }

            if (status.missionIsFinishable)
            {
                if (GUILayout.Button("Finish the mission!"))
                {
                    manager.finishMission(currentMission, activeVessel, status.events);
                    hiddenGoals    = new List <MissionGoal> ();
                    currentMission = null;
                }
            }
            else
            {
                if (status.recyclable)
                {
                    VesselResources res = vesselResources;
                    showCostValue("Recyclable value: ", res.recyclable(activeVessel.Landed), styleCaption);
                    if (GUILayout.Button("Recycle and end flight!"))
                    {
                        manager.recycleVessel(activeVessel, res.recyclable(activeVessel.Landed));
                        FlightDriver.TerminateCurrentFlight();
                        FlightResultsDialog.showExitControls = true;
                        FlightResultsDialog.Display("Vessel has been recycled!");
                        recycled = true;
                    }
                }
            }

            GUILayout.EndVertical();
            GUI.DragWindow();
        }