示例#1
0
        public void setEditorType(SiteType type)
        {
            editorType = (KerbalKonstructs.instance.launchFromAnySite) ? SiteType.Any : type;
            if (selectedSite != null)
            {
                if (selectedSite.LaunchSiteType != editorType && selectedSite.LaunchSiteType != SiteType.Any)
                {
                    selectedSite = LaunchSiteManager.getLaunchSites(editorType)[0];
                }

                // if (!isCareerGame())
                LaunchSiteManager.setLaunchSite(selectedSite);
            }
        }
示例#2
0
        public void drawIcons()
        {
            displayingTooltip = false;
            MapObject target = PlanetariumCamera.fetch.target;

            if (target.type == MapObject.MapObjectType.CELESTIALBODY)
            {
                // Do tracking stations first
                foreach (StaticObject obj in KerbalKonstructs.instance.getStaticDB().getAllStatics())
                {
                    bool display2 = false;
                    if ((string)obj.getSetting("FacilityType") == "TrackingStation")
                    {
                        if (!isOccluded(obj.gameObject.transform.position, target.celestialBody))
                        {
                            if (MiscUtils.isCareerGame())
                            {
                                //PersistenceUtils.loadStaticPersistence(obj);
                                string openclosed2 = (string)obj.getSetting("OpenCloseState");
                                // To do manage open and close state of tracking stations
                                if (KerbalKonstructs.instance.mapShowOpenT)                                 // && openclosed == "Open")
                                {
                                    display2 = true;
                                }
                                if (!KerbalKonstructs.instance.mapShowClosed && openclosed2 == "Closed")
                                {
                                    display2 = false;
                                }
                                if (!KerbalKonstructs.instance.mapShowOpen && openclosed2 == "Open")
                                {
                                    display2 = false;
                                }
                            }
                            else
                            {                             // Not a career game
                            }

                            if (display2)
                            {
                                Vector3 pos         = MapView.MapCamera.camera.WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(obj.gameObject.transform.position));
                                Rect    screenRect2 = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16);
                                Graphics.DrawTexture(screenRect2, TrackingStationIcon);

                                if (screenRect2.Contains(Event.current.mousePosition) && !displayingTooltip)
                                {
                                    CelestialBody cPlanetoid = (CelestialBody)obj.getSetting("CelestialBody");

                                    var objectpos2    = cPlanetoid.transform.InverseTransformPoint(obj.gameObject.transform.position);
                                    var dObjectLat2   = NavUtils.GetLatitude(objectpos2);
                                    var dObjectLon2   = NavUtils.GetLongitude(objectpos2);
                                    var disObjectLat2 = dObjectLat2 * 180 / Math.PI;
                                    var disObjectLon2 = dObjectLon2 * 180 / Math.PI;

                                    if (disObjectLon2 < 0)
                                    {
                                        disObjectLon2 = disObjectLon2 + 360;
                                    }

                                    //Only display one tooltip at a time
                                    displayMapIconToolTip("Tracking Station " + "\n(Lat." + disObjectLat2.ToString("#0.00") + "/ Lon." + disObjectLon2.ToString("#0.00") + ")", pos);
                                    // TO DO Display Lat and Lon in tooltip too

                                    if (Event.current.type == EventType.mouseDown && Event.current.button == 0)
                                    {
                                        //MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3);
                                        Debug.Log("KK: Selected station in map");
                                        float sTrackAngle = (float)obj.getSetting("TrackingAngle");
                                        Debug.Log("KK: Before save load " + sTrackAngle.ToString());
                                        float sTrackRange = (float)obj.getSetting("TrackingShort");
                                        Debug.Log("KK: Before save load " + sTrackRange.ToString());

                                        //PersistenceUtils.saveStaticPersistence(obj);
                                        PersistenceUtils.loadStaticPersistence(obj);

                                        float sTrackAngle2 = (float)obj.getSetting("TrackingAngle");
                                        Debug.Log("KK: After save load " + sTrackAngle2.ToString());
                                        float sTrackRange2 = (float)obj.getSetting("TrackingShort");
                                        Debug.Log("KK: After save load " + sTrackRange2.ToString());

                                        selectedFacility = obj;
                                        FacilityManager.setSelectedFacility(obj);
                                        KerbalKonstructs.instance.showFacilityManager = true;
                                        //EditorGUI.setTargetSite(selectedSite);
                                    }
                                }
                                else
                                {                                 // Mouse is not over tooltip
                                }
                            }
                            else
                            {                             // Filter set to not display
                            }
                        }
                        else
                        {                         // is occluded
                        }
                    }
                    else
                    {             // Not a tracking station
                    }
                }                 //end foreach

                // Then do launchsites
                List <LaunchSite> sites = LaunchSiteManager.getLaunchSites();
                foreach (LaunchSite site in sites)
                {
                    bool display = false;
                    PSystemSetup.SpaceCenterFacility facility = PSystemSetup.Instance.GetSpaceCenterFacility(site.name);
                    if (facility != null)
                    {
                        PSystemSetup.SpaceCenterFacility.SpawnPoint sp = facility.GetSpawnPoint(site.name);
                        if (sp != null)
                        {
                            if (facility.facilityPQS == target.celestialBody.pqsController)
                            {
                                if (!isOccluded(sp.GetSpawnPointTransform().position, target.celestialBody))
                                {
                                    Vector3 pos        = MapView.MapCamera.camera.WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(sp.GetSpawnPointTransform().position));
                                    Rect    screenRect = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16);

                                    string openclosed = site.openclosestate;
                                    string category   = site.category;

                                    if (KerbalKonstructs.instance.mapShowHelipads && category == "Helipad")
                                    {
                                        display = true;
                                    }
                                    if (KerbalKonstructs.instance.mapShowOther && category == "Other")
                                    {
                                        display = true;
                                    }
                                    if (KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad")
                                    {
                                        display = true;
                                    }
                                    if (KerbalKonstructs.instance.mapShowRunways && category == "Runway")
                                    {
                                        display = true;
                                    }

                                    if (display && MiscUtils.isCareerGame())
                                    {
                                        if (!KerbalKonstructs.instance.mapShowOpen && openclosed == "Open")
                                        {
                                            display = false;
                                        }
                                        if (!KerbalKonstructs.instance.mapShowClosed && openclosed == "Closed")
                                        {
                                            display = false;
                                        }
                                        if (KerbalKonstructs.instance.disableDisplayClosed && openclosed == "Closed")
                                        {
                                            display = false;
                                        }
                                    }

                                    if (display)
                                    {
                                        if (site.icon != null)
                                        {
                                            Graphics.DrawTexture(screenRect, site.icon);
                                        }
                                        else
                                        {
                                            switch (site.type)
                                            {
                                            case SiteType.VAB:
                                                Graphics.DrawTexture(screenRect, VABIcon);
                                                break;

                                            case SiteType.SPH:
                                                Graphics.DrawTexture(screenRect, SPHIcon);
                                                break;

                                            default:
                                                Graphics.DrawTexture(screenRect, ANYIcon);
                                                break;
                                            }
                                        }

                                        // Tooltip
                                        if (screenRect.Contains(Event.current.mousePosition) && !displayingTooltip)
                                        {
                                            //Only display one tooltip at a time
                                            string sToolTip = "";
                                            sToolTip = site.name;
                                            if (site.name == "Runway")
                                            {
                                                sToolTip = "KSC Runway";
                                            }
                                            if (site.name == "LaunchPad")
                                            {
                                                sToolTip = "KSC LaunchPad";
                                            }
                                            displayMapIconToolTip(sToolTip, pos);

                                            // Select a base by clicking on the icon
                                            if (Event.current.type == EventType.mouseDown && Event.current.button == 0)
                                            {
                                                MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3);
                                                BaseManager.setSelectedSite(site);
                                                selectedSite = site;
                                                NavGuidanceSystem.setTargetSite(selectedSite);
                                                KerbalKonstructs.instance.showBaseManager = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public void drawKKSettingsWindow(int WindowID)
        {
            DeadButton = new GUIStyle(GUI.skin.button);
            DeadButton.normal.background  = null;
            DeadButton.hover.background   = null;
            DeadButton.active.background  = null;
            DeadButton.focused.background = null;
            DeadButton.normal.textColor   = Color.white;
            DeadButton.hover.textColor    = Color.white;
            DeadButton.active.textColor   = Color.white;
            DeadButton.focused.textColor  = Color.white;
            DeadButton.fontSize           = 14;
            DeadButton.fontStyle          = FontStyle.Bold;

            DeadButtonRed = new GUIStyle(GUI.skin.button);
            DeadButtonRed.normal.background  = null;
            DeadButtonRed.hover.background   = null;
            DeadButtonRed.active.background  = null;
            DeadButtonRed.focused.background = null;
            DeadButtonRed.normal.textColor   = Color.red;
            DeadButtonRed.hover.textColor    = Color.yellow;
            DeadButtonRed.active.textColor   = Color.red;
            DeadButtonRed.focused.textColor  = Color.red;
            DeadButtonRed.fontSize           = 12;
            DeadButtonRed.fontStyle          = FontStyle.Bold;

            BoxNoBorder = new GUIStyle(GUI.skin.box);
            BoxNoBorder.normal.background = null;
            BoxNoBorder.normal.textColor  = Color.white;

            Yellowtext = new GUIStyle(GUI.skin.box);
            Yellowtext.normal.textColor  = Color.yellow;
            Yellowtext.normal.background = null;

            LabelInfo = new GUIStyle(GUI.skin.label);
            LabelInfo.normal.background = null;
            LabelInfo.normal.textColor  = Color.white;
            LabelInfo.fontSize          = 13;
            LabelInfo.fontStyle         = FontStyle.Normal;
            LabelInfo.padding.left      = 3;
            LabelInfo.padding.top       = 0;
            LabelInfo.padding.bottom    = 0;

            LabelYellow = new GUIStyle(GUI.skin.label);
            LabelYellow.normal.background = null;
            LabelYellow.normal.textColor  = Color.yellow;
            LabelYellow.fontSize          = 13;
            LabelYellow.fontStyle         = FontStyle.Bold;
            LabelYellow.padding.left      = 3;
            LabelYellow.padding.top       = 0;
            LabelYellow.padding.bottom    = 0;

            GUILayout.BeginHorizontal();
            {
                GUI.enabled = false;
                GUILayout.Button("-KK-", DeadButton, GUILayout.Height(16));

                GUILayout.FlexibleSpace();

                GUILayout.Button("Settings", DeadButton, GUILayout.Height(16));

                GUILayout.FlexibleSpace();

                GUI.enabled = true;

                if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(16)))
                {
                    KerbalKonstructs.instance.showSettings = false;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(1);
            GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);

            scrollSettings = GUILayout.BeginScrollView(scrollSettings);
            GUILayout.Box("Default VAB Launchsite");
            if (GUILayout.Button("" + KerbalKonstructs.instance.defaultVABlaunchsite, GUILayout.Height(23)))
            {
                bChangeVABDefault = true;
            }

            if (bChangeVABDefault)
            {
                if (sites == null)
                {
                    sites = LaunchSiteManager.getLaunchSites();
                }

                sites.Sort(delegate(LaunchSite a, LaunchSite b)
                {
                    return((a.name).CompareTo(b.name));
                });

                GUILayout.Label("Select a default site from the list that follows.", LabelInfo);

                foreach (LaunchSite site in sites)
                {
                    if (MiscUtils.isCareerGame())
                    {
                        if (site.openclosestate != "Open" && site.opencost != 0)
                        {
                            continue;
                        }
                    }

                    if (!KerbalKonstructs.instance.launchFromAnySite)
                    {
                        if (site.type == SiteType.SPH)
                        {
                            continue;
                        }
                    }

                    string sButtonName = "";
                    sButtonName = site.name;
                    if (site.name == "Runway")
                    {
                        sButtonName = "KSC Runway";
                    }
                    if (site.name == "LaunchPad")
                    {
                        sButtonName = "KSC LaunchPad";
                    }

                    if (GUILayout.Button(sButtonName, GUILayout.Height(21)))
                    {
                        KerbalKonstructs.instance.defaultVABlaunchsite = site.name;
                        bChangeVABDefault = false;
                    }
                }

                if (GUILayout.Button("CANCEL - NO CHANGE", GUILayout.Height(21)))
                {
                    bChangeVABDefault = false;
                }
            }

            GUILayout.Box("Default SPH Launchsite");
            if (GUILayout.Button("" + KerbalKonstructs.instance.defaultSPHlaunchsite, GUILayout.Height(23)))
            {
                bChangeSPHDefault = true;
            }

            if (bChangeSPHDefault)
            {
                if (sites == null)
                {
                    sites = LaunchSiteManager.getLaunchSites();
                }

                sites.Sort(delegate(LaunchSite a, LaunchSite b)
                {
                    return((a.name).CompareTo(b.name));
                });

                GUILayout.Label("Select a default site from the list that follows.", LabelInfo);

                foreach (LaunchSite site in sites)
                {
                    if (MiscUtils.isCareerGame())
                    {
                        if (site.openclosestate != "Open" && site.opencost != 0)
                        {
                            continue;
                        }
                    }

                    if (!KerbalKonstructs.instance.launchFromAnySite)
                    {
                        if (site.type == SiteType.VAB)
                        {
                            continue;
                        }
                    }

                    string sButtonName = "";
                    sButtonName = site.name;
                    if (site.name == "Runway")
                    {
                        sButtonName = "KSC Runway";
                    }
                    if (site.name == "LaunchPad")
                    {
                        sButtonName = "KSC LaunchPad";
                    }

                    if (GUILayout.Button(sButtonName, GUILayout.Height(21)))
                    {
                        KerbalKonstructs.instance.defaultSPHlaunchsite = site.name;
                        bChangeSPHDefault = false;
                    }
                }

                if (GUILayout.Button("CANCEL - NO CHANGE", GUILayout.Height(21)))
                {
                    bChangeSPHDefault = false;
                }
            }

            GUILayout.Space(3);

            GUILayout.Box("General Settings");
            GUILayout.Label("Does launching from the VAB or SPH limit the type of launchsite that can be used?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.launchFromAnySite)
            {
                if (GUILayout.Button("Launch From Any Site", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.launchFromAnySite = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Launch From Any Site", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.launchFromAnySite = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("Should the career strategy features of KK be enabled? WARNING: Disabling them in the middle of a career game is not advised!", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.disableCareerStrategyLayer)
            {
                if (GUILayout.Button("Disable Career Strategy", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableCareerStrategyLayer = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Disable Career Strategy", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableCareerStrategyLayer = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Label("Should it be possible to launch from sites other than the KSC?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.disableCustomLaunchsites)
            {
                if (GUILayout.Button("Disable Custom Launchsites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableCustomLaunchsites = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Disable Custom Launchsites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableCustomLaunchsites = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Label("Should it only be possible to open bases at the base?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.disableRemoteBaseOpening)
            {
                if (GUILayout.Button("Can Only Open Bases at the Base", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableRemoteBaseOpening = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Can Only Open Bases at the Base", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableRemoteBaseOpening = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Inflight Instruments Defaults");
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.enableATC)
            {
                if (GUILayout.Button("ATC Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableATC = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("ATC Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableATC = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.enableNGS)
            {
                if (GUILayout.Button("NGS Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableNGS = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("NGS Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableNGS = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.enableDownlink)
            {
                if (GUILayout.Button("Downlink Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableDownlink = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Downlink Enabled", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.enableDownlink = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Facility Defaults");
            GUILayout.Label("Some facilities require a craft or kerbal to be close to use them.", LabelInfo);
            GUILayout.BeginHorizontal();
            GUILayout.Label("Use Range: " + KerbalKonstructs.instance.facilityUseRange.ToString("#0") + " m", LabelYellow);
            GUILayout.FlexibleSpace();
            sFacilityUseRange = GUILayout.TextField(sFacilityUseRange, 4, GUILayout.Width(70));
            GUILayout.Label(" m", LabelYellow);
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Update", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.facilityUseRange = float.Parse(sFacilityUseRange);

                if (KerbalKonstructs.instance.facilityUseRange < 1f)
                {
                    KerbalKonstructs.instance.facilityUseRange = 1f;
                }
                if (KerbalKonstructs.instance.facilityUseRange > 5000f)
                {
                    KerbalKonstructs.instance.facilityUseRange = 5000f;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Tracking/Map View Settngs");
            GUILayout.Label("Never show the icons of closed launchsites?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.disableDisplayClosed)
            {
                if (GUILayout.Button("Never Display Closed Launchsites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableDisplayClosed = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Never Display Closed Launchsites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableDisplayClosed = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("Toggle icon display with Base Boss display?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.toggleIconsWithBB)
            {
                if (GUILayout.Button("Toggle Icons With Base Boss", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.toggleIconsWithBB = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Toggle Icons With Base Boss", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.toggleIconsWithBB = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Tracking/Map View Defaults");

            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowOpen)
            {
                if (GUILayout.Button("Show Open Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOpen = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Open Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOpen = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowClosed)
            {
                if (GUILayout.Button("Show Closed Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowClosed = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Closed Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowClosed = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowOpenT)
            {
                if (GUILayout.Button("Show Tracking Stations", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOpenT = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Tracking Stations", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOpenT = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowHelipads)
            {
                if (GUILayout.Button("Show Helipads", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowHelipads = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Helipads", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowHelipads = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowRunways)
            {
                if (GUILayout.Button("Show Runways", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowRunways = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Runways", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowRunways = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowRocketbases)
            {
                if (GUILayout.Button("Show Rocket Bases", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowRocketbases = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Rocket Bases", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowRocketbases = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.mapShowOther)
            {
                if (GUILayout.Button("Show Other Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOther = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Show Other Sites", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.mapShowOther = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Base Recovery Settings");
            GUILayout.Label("Should custom bases carry out recovery, or should it only be KSC?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.disableRemoteRecovery)
            {
                if (GUILayout.Button("Disable Recovery by Custom Bases", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableRemoteRecovery = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Disable Recovery by Custom Bases", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.disableRemoteRecovery = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Base Recovery Capability Defaults");

            GUILayout.Label("A percentage of the base amount recovered (modified by distance per KSP functions), IF the recovery is made by a base outside its effective range.", LabelInfo);
            GUILayout.BeginHorizontal();

            GUILayout.Label("Recovery Factor: " + KerbalKonstructs.instance.defaultRecoveryFactor.ToString("#0") + "%", LabelYellow);
            GUILayout.FlexibleSpace();
            sDefaultFactor = GUILayout.TextField(sDefaultFactor, 3, GUILayout.Width(70));
            GUILayout.Label("%", LabelYellow);
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Update", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.defaultRecoveryFactor = float.Parse(sDefaultFactor);

                if (KerbalKonstructs.instance.defaultRecoveryFactor < 0f)
                {
                    KerbalKonstructs.instance.defaultRecoveryFactor = 0f;
                }
                if (KerbalKonstructs.instance.defaultRecoveryFactor > 100f)
                {
                    KerbalKonstructs.instance.defaultRecoveryFactor = 100f;
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("100% of the base amount is recovered (modified by distance per KSP functions), IF the recovery is made by a base within its effective range.", LabelInfo);

            GUILayout.BeginHorizontal();

            GUILayout.Label("Effective Range: " + KerbalKonstructs.instance.defaultEffectiveRange.ToString("#0") + "m", LabelYellow);
            GUILayout.FlexibleSpace();
            sDefaultRange = GUILayout.TextField(sDefaultRange, 6, GUILayout.Width(70));
            GUILayout.Label("m", LabelYellow);
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Update", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.defaultEffectiveRange = float.Parse(sDefaultRange);

                if (KerbalKonstructs.instance.defaultEffectiveRange < 1000f)
                {
                    KerbalKonstructs.instance.defaultEffectiveRange = 1000f;
                }
                if (KerbalKonstructs.instance.defaultEffectiveRange > 250000f)
                {
                    KerbalKonstructs.instance.defaultEffectiveRange = 250000f;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Editor Tools Defaults");
            GUILayout.BeginHorizontal();

            GUILayout.Label("Max Visibility Range: " + KerbalKonstructs.instance.maxEditorVisRange.ToString("#0") + "m", LabelYellow);
            GUILayout.FlexibleSpace();
            sVisRange = GUILayout.TextField(sVisRange, 15, GUILayout.Width(70));
            GUILayout.Label(" m", LabelYellow);
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Update", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.maxEditorVisRange = float.Parse(sVisRange);

                if (KerbalKonstructs.instance.maxEditorVisRange < 0f)
                {
                    KerbalKonstructs.instance.maxEditorVisRange = 0f;
                }
                if (KerbalKonstructs.instance.maxEditorVisRange > 1000000000000f)
                {
                    KerbalKonstructs.instance.maxEditorVisRange = 1000000000000f;
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("Should a preview of a static model be spawned when editing a model config?", LabelInfo);
            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.spawnPreviewModels)
            {
                if (GUILayout.Button("Spawn Preview Static Models", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.spawnPreviewModels = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Spawn Preview Static Models", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.spawnPreviewModels = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(3);
            GUILayout.Box("Modes");
            GUILayout.Label("WARNING: This will lag your game because of additional writes to KSP.log. Do not switch it on unless a developer of the mod asks you to.", LabelInfo);

            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.DebugMode)
            {
                if (GUILayout.Button("Debug Mode", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.DebugMode = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Debug Mode", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.DebugMode = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("WARNING: This will enable unfinished features that will NOT WORK properly. They may break your save games. Any changes made to static instances will NOT be tagged as custom and CANNOT be exported.", LabelInfo);

            GUILayout.BeginHorizontal();
            if (!KerbalKonstructs.instance.DevMode)
            {
                if (GUILayout.Button("Developer Mode", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.DevMode = true;
                }

                GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            else
            {
                if (GUILayout.Button("Developer Mode", GUILayout.Height(23)))
                {
                    KerbalKonstructs.instance.DevMode = false;
                }

                GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23));
            }
            GUILayout.EndHorizontal();

            GUILayout.EndScrollView();
            GUILayout.Space(2);
            GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);
            if (GUILayout.Button("Save Config Settings", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.saveConfig();
            }
            if (GUILayout.Button("Reload Saved Settings", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.loadConfig();
            }
            if (GUILayout.Button("Reset To Factory Settings", GUILayout.Height(23)))
            {
                KerbalKonstructs.instance.defaultVABlaunchsite       = "LaunchPad";
                KerbalKonstructs.instance.defaultSPHlaunchsite       = "Runway";
                KerbalKonstructs.instance.launchFromAnySite          = false;
                KerbalKonstructs.instance.disableCareerStrategyLayer = false;
                KerbalKonstructs.instance.disableCustomLaunchsites   = false;
                KerbalKonstructs.instance.disableRemoteBaseOpening   = false;
                KerbalKonstructs.instance.enableATC             = true;
                KerbalKonstructs.instance.enableNGS             = true;
                KerbalKonstructs.instance.enableDownlink        = true;
                KerbalKonstructs.instance.facilityUseRange      = 100;
                KerbalKonstructs.instance.disableDisplayClosed  = false;
                KerbalKonstructs.instance.toggleIconsWithBB     = false;
                KerbalKonstructs.instance.mapShowOpen           = true;
                KerbalKonstructs.instance.mapShowClosed         = false;
                KerbalKonstructs.instance.mapShowOpenT          = true;
                KerbalKonstructs.instance.mapShowHelipads       = true;
                KerbalKonstructs.instance.mapShowRunways        = true;
                KerbalKonstructs.instance.mapShowRocketbases    = true;
                KerbalKonstructs.instance.mapShowOther          = false;
                KerbalKonstructs.instance.disableRemoteRecovery = false;
                KerbalKonstructs.instance.defaultRecoveryFactor = 50;
                KerbalKonstructs.instance.defaultEffectiveRange = 100000;
                KerbalKonstructs.instance.maxEditorVisRange     = 100000;
                KerbalKonstructs.instance.spawnPreviewModels    = true;
                KerbalKonstructs.instance.DebugMode             = false;
                KerbalKonstructs.instance.DevMode = false;

                KerbalKonstructs.instance.saveConfig();
            }
            GUILayout.Space(2);
            GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);

            GUI.DragWindow(new Rect(0, 0, 10000, 10000));
        }
示例#4
0
        public void drawSelectorWindow(int id)
        {
            ButtonKK = new GUIStyle(GUI.skin.button);
            ButtonKK.padding.left  = 0;
            ButtonKK.padding.right = 0;

            DeadButton = new GUIStyle(GUI.skin.button);
            DeadButton.normal.background  = null;
            DeadButton.hover.background   = null;
            DeadButton.active.background  = null;
            DeadButton.focused.background = null;
            DeadButton.normal.textColor   = Color.white;
            DeadButton.hover.textColor    = Color.white;
            DeadButton.active.textColor   = Color.white;
            DeadButton.focused.textColor  = Color.white;
            DeadButton.fontSize           = 14;
            DeadButton.fontStyle          = FontStyle.Bold;

            DeadButtonRed = new GUIStyle(GUI.skin.button);
            DeadButtonRed.normal.background  = null;
            DeadButtonRed.hover.background   = null;
            DeadButtonRed.active.background  = null;
            DeadButtonRed.focused.background = null;
            DeadButtonRed.normal.textColor   = Color.red;
            DeadButtonRed.hover.textColor    = Color.yellow;
            DeadButtonRed.active.textColor   = Color.red;
            DeadButtonRed.focused.textColor  = Color.red;
            DeadButtonRed.fontSize           = 12;
            DeadButtonRed.fontStyle          = FontStyle.Bold;

            BoxNoBorder = new GUIStyle(GUI.skin.box);
            BoxNoBorder.normal.background = null;
            BoxNoBorder.normal.textColor  = Color.white;

            KKToolTip = new GUIStyle(GUI.skin.box);
            KKToolTip.normal.textColor = Color.white;
            KKToolTip.fontSize         = 11;
            KKToolTip.fontStyle        = FontStyle.Normal;

            string smessage = "";

            GUILayout.BeginHorizontal();
            {
                GUI.enabled = false;
                GUILayout.Button("-KK-", DeadButton, GUILayout.Height(21));

                GUILayout.FlexibleSpace();

                GUILayout.Button("Launchsite Selector", DeadButton, GUILayout.Height(21));

                GUILayout.FlexibleSpace();

                GUI.enabled = true;

                if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(21)))
                {
                    InputLockManager.RemoveControlLock("KKEditorLock");
                    InputLockManager.RemoveControlLock("KKEditorLock2");
                    this.Close();
                    return;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(1);
            GUILayout.Box(UIMain.tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);

            GUILayout.BeginHorizontal();
            {
                GUILayout.Space(5);

                if (MiscUtils.isCareerGame())
                {
                    if (bOpenOn)
                    {
                        tHolder = UIMain.tOpenBasesOn;
                    }
                    else
                    {
                        tHolder = UIMain.tOpenBasesOff;
                    }

                    if (GUILayout.Button(new GUIContent(tHolder, "Open"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                    {
                        if (bOpenOn)
                        {
                            bOpenOn   = false;
                            bClosedOn = true;
                        }
                        else
                        {
                            bOpenOn = true;
                        }
                    }

                    if (bClosedOn)
                    {
                        tHolder = UIMain.tClosedBasesOn;
                    }
                    else
                    {
                        tHolder = UIMain.tClosedBasesOff;
                    }

                    if (GUILayout.Button(new GUIContent(tHolder, "Closed"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                    {
                        if (bClosedOn)
                        {
                            bClosedOn = false;
                            bOpenOn   = true;
                        }
                        else
                        {
                            bClosedOn = true;
                        }
                    }

                    GUILayout.FlexibleSpace();
                }

                if (bFavesOnly)
                {
                    tHolder = tFavesOn;
                }
                else
                {
                    tHolder = tFavesOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "Only Favourites"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    if (bFavesOnly)
                    {
                        bFavesOnly = false;
                    }
                    else
                    {
                        bFavesOnly = true;
                    }
                }

                GUILayout.FlexibleSpace();

                if (editorType == SiteType.SPH)
                {
                    GUI.enabled = false;
                }

                if (bRocketpadsOn)
                {
                    tHolder = UIMain.tLaunchpadsOn;
                }
                else
                {
                    tHolder = UIMain.tLaunchpadsOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "Rocketpads"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRocketpadsOn = true;
                    bHelipadsOn   = false;
                    bRunwaysOn    = false;
                    bOtherOn      = false;
                    waterLaunchOn = false;

                    sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                            LaunchSiteManager.getLaunchSites(editorType, true, "RocketPad");
                }

                GUI.enabled = true;
                GUILayout.Space(2);

                if (editorType == SiteType.VAB)
                {
                    GUI.enabled = false;
                }

                if (bRunwaysOn)
                {
                    tHolder = UIMain.tRunwaysOn;
                }
                else
                {
                    tHolder = UIMain.tRunwaysOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "Runways"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRunwaysOn    = true;
                    bHelipadsOn   = false;
                    bRocketpadsOn = false;
                    bOtherOn      = false;
                    waterLaunchOn = false;

                    sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                            LaunchSiteManager.getLaunchSites(editorType, true, "Runway");
                }

                GUI.enabled = true;
                GUILayout.Space(2);

                if (editorType == SiteType.VAB)
                {
                    GUI.enabled = false;
                }

                if (bHelipadsOn)
                {
                    tHolder = UIMain.tHelipadsOn;
                }
                else
                {
                    tHolder = UIMain.tHelipadsOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "Helipads"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRocketpadsOn = false;
                    bHelipadsOn   = true;
                    bRunwaysOn    = false;
                    bOtherOn      = false;
                    waterLaunchOn = false;

                    sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                            LaunchSiteManager.getLaunchSites(editorType, true, "Helipad");
                }

                GUI.enabled = true;
                GUILayout.Space(2);

                if (editorType == SiteType.VAB)
                {
                    GUI.enabled = false;
                }

                if (waterLaunchOn)
                {
                    tHolder = UIMain.tWaterOn;
                }
                else
                {
                    tHolder = UIMain.tWaterOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "WalterLaunch"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRocketpadsOn = false;
                    bHelipadsOn   = false;
                    bRunwaysOn    = false;
                    bOtherOn      = false;
                    waterLaunchOn = true;

                    sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                            LaunchSiteManager.getLaunchSites(editorType, true, "Waterlaunch");
                }

                GUI.enabled = true;
                GUILayout.Space(2);

                if (bOtherOn)
                {
                    tHolder = UIMain.tOtherOn;
                }
                else
                {
                    tHolder = UIMain.tOtherOff;
                }

                if (GUILayout.Button(new GUIContent(tHolder, "Other"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRocketpadsOn = false;
                    bHelipadsOn   = false;
                    bRunwaysOn    = false;
                    bOtherOn      = true;
                    waterLaunchOn = false;

                    sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                            LaunchSiteManager.getLaunchSites(editorType, true, "Other");
                }

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("ALL", GUILayout.Width(32), GUILayout.Height(32)))
                {
                    bRocketpadsOn = true;
                    bHelipadsOn   = true;
                    bRunwaysOn    = true;
                    bOtherOn      = true;
                    waterLaunchOn = true;
                    sites         = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() :
                                    LaunchSiteManager.getLaunchSites(editorType, true, "ALL");
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            sitesScrollPosition = GUILayout.BeginScrollView(sitesScrollPosition);
            {
                if (sites == null)
                {
                    sites = (editorType == SiteType.Any) ?
                            LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "ALL");
                }

                sites.Sort(delegate(LaunchSite a, LaunchSite b)
                {
                    return((a.LaunchSiteName).CompareTo(b.LaunchSiteName));
                });

                foreach (LaunchSite site in sites)
                {
                    if (bFavesOnly)
                    {
                        if (site.favouriteSite != "Yes")
                        {
                            continue;
                        }
                    }

                    if (MiscUtils.isCareerGame())
                    {
                        if (!bOpenOn)
                        {
                            if (site.isOpen)
                            {
                                continue;
                            }
                        }

                        if (!bClosedOn)
                        {
                            if (!site.isOpen)
                            {
                                continue;
                            }
                        }

                        // Don't show hidden closed Bases
                        if (site.LaunchSiteIsHidden && (!site.isOpen))
                        {
                            continue;
                        }

                        GUILayout.BeginHorizontal();
                        if (site.isOpen)
                        {
                            GUILayout.Label(UIMain.tIconOpen, GUILayout.Height(30), GUILayout.Width(30));
                        }
                        else
                        {
                            GUILayout.Label(UIMain.tIconClosed, GUILayout.Height(30), GUILayout.Width(30));
                        }
                    }

                    GUI.enabled = !(selectedSite == site);

                    string sButtonName = "";
                    sButtonName = site.LaunchSiteName;
                    if (site.LaunchSiteName == "Runway")
                    {
                        sButtonName = "KSC Runway";
                    }
                    if (site.LaunchSiteName == "LaunchPad")
                    {
                        sButtonName = "KSC LaunchPad";
                    }

                    if (GUILayout.Button(sButtonName, GUILayout.Height(30)))
                    {
                        selectedSite = site;

                        if (!MiscUtils.isCareerGame())
                        {
                            LaunchSiteManager.setLaunchSite(site);
                            smessage = "Launchsite set to " + sButtonName;
                            MiscUtils.HUDMessage(smessage, 10, 2);
                        }
                    }
                    GUI.enabled = true;

                    if (MiscUtils.isCareerGame())
                    {
                        if (site.isOpen)
                        {
                            GUILayout.Label(UIMain.tIconOpen, GUILayout.Height(30), GUILayout.Width(30));
                        }
                        else
                        {
                            GUILayout.Label(UIMain.tIconClosed, GUILayout.Height(30), GUILayout.Width(30));
                        }

                        GUILayout.EndHorizontal();
                    }
                }
            }
            GUILayout.EndScrollView();

            GUILayout.Space(5);

            sCurrentSite = LaunchSiteManager.getCurrentLaunchSite();

            if (sCurrentSite != null)
            {
                if (sCurrentSite == "Runway")
                {
                    GUILayout.Box("Current Launchsite: KSC Runway");
                }
                else
                if (sCurrentSite == "LaunchPad")
                {
                    GUILayout.Box("Current Launchsite: KSC LaunchPad");
                }
                else
                {
                    GUILayout.Box("Current Launchsite: " + sCurrentSite);
                }
            }

            GUI.enabled = (selectedSite != null && !(selectedSite.LaunchSiteName == sCurrentSite) && LaunchSiteManager.getIsSiteOpen(selectedSite.LaunchSiteName));
            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Set as Launchsite", GUILayout.Height(46)))
            {
                LaunchSiteManager.setLaunchSite(selectedSite);
                MiscUtils.HUDMessage(selectedSite.LaunchSiteName + " has been set as the launchsite", 10, 0);
            }

            GUILayout.EndHorizontal();
            GUI.enabled = true;

            GUILayout.BeginHorizontal();
            {
                if (editorType == SiteType.SPH)
                {
                    GUI.enabled = (KerbalKonstructs.instance.defaultSPHlaunchsite != sCurrentSite);
                }

                if (editorType == SiteType.VAB)
                {
                    GUI.enabled = (KerbalKonstructs.instance.defaultVABlaunchsite != sCurrentSite);
                }

                if (GUILayout.Button("Set as Default", GUILayout.Height(23)))
                {
                    if (sCurrentSite != null)
                    {
                        if (editorType == SiteType.SPH)
                        {
                            KerbalKonstructs.instance.defaultSPHlaunchsite = sCurrentSite;
                        }

                        if (editorType == SiteType.VAB)
                        {
                            KerbalKonstructs.instance.defaultVABlaunchsite = sCurrentSite;
                        }
                    }
                }
                GUI.enabled = true;

                LaunchSite DefaultSite = null;

                if (GUILayout.Button("Use Default", GUILayout.Height(23)))
                {
                    if (editorType == SiteType.SPH)
                    {
                        foreach (LaunchSite site in sites)
                        {
                            if (site.LaunchSiteName == KerbalKonstructs.instance.defaultSPHlaunchsite)
                            {
                                DefaultSite = site;
                            }
                        }

                        if (DefaultSite != null)
                        {
                            if (MiscUtils.isCareerGame())
                            {
                                if (!DefaultSite.isOpen)
                                {
                                    smessage = "Default site is closed.";
                                    MiscUtils.HUDMessage(smessage, 10, 0);
                                }
                                else
                                {
                                    LaunchSiteManager.setLaunchSite(DefaultSite);
                                }
                            }
                            else
                            {
                                LaunchSiteManager.setLaunchSite(DefaultSite);
                            }
                        }
                    }

                    if (editorType == SiteType.VAB)
                    {
                        foreach (LaunchSite site in sites)
                        {
                            if (site.LaunchSiteName == KerbalKonstructs.instance.defaultVABlaunchsite)
                            {
                                DefaultSite = site;
                            }
                        }

                        if (DefaultSite != null)
                        {
                            if (MiscUtils.isCareerGame())
                            {
                                if (!DefaultSite.isOpen)
                                {
                                    smessage = "Default site is closed.";
                                    MiscUtils.HUDMessage(smessage, 10, 0);
                                }
                                else
                                {
                                    LaunchSiteManager.setLaunchSite(DefaultSite);
                                }
                            }
                            else
                            {
                                LaunchSiteManager.setLaunchSite(DefaultSite);
                            }
                        }
                    }

                    if (DefaultSite != null)
                    {
                        smessage = DefaultSite.LaunchSiteName + " has been set as the launchsite";
                        MiscUtils.HUDMessage(smessage, 10, 0);
                    }
                    else
                    {
                        smessage = "KK could not determine the default launchsite.";
                        MiscUtils.HUDMessage(smessage, 10, 0);
                    }
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.FlexibleSpace();
            GUILayout.Box(UIMain.tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);

            GUI.enabled = true;

            if (selectedSite != null)
            {
                BaseManager.setSelectedSite(selectedSite);
                BaseManager.instance.Open();
            }
            else
            {
                if (LaunchSiteManager.getLaunchSites().Count > 0)
                {
                    selectedSite = LaunchSiteManager.getLaunchSites(editorType)[0];
                    LaunchSiteManager.setLaunchSite(selectedSite);
                    BaseManager.setSelectedSite(selectedSite);
                    BaseManager.instance.Open();
                }
                else
                {
                    Log.UserError("ERROR Launch Selector cannot find KSC Runway or Launch Pad! PANIC! Runaway! Hide!");
                }
            }

            if (GUI.tooltip != "")
            {
                var labelSize = GUI.skin.GetStyle("Label").CalcSize(new GUIContent(GUI.tooltip));
                GUI.Box(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y + 20, labelSize.x + 5, labelSize.y + 6), GUI.tooltip, KKToolTip);
            }

            GUI.DragWindow(new Rect(0, 0, 10000, 10000));
        }
        public void drawLaunchsites()
        {
            displayingTooltip = false;
            int           iPulseRate = 180;
            CelestialBody body       = PlanetariumCamera.fetch.target.GetReferenceBody();

            iRadarCounter = iRadarCounter + 1;
            if (iRadarCounter > iPulseRate)
            {
                iRadarCounter = 0;
            }

            // Then do launchsites
            List <LaunchSite> sites = LaunchSiteManager.getLaunchSites();

            for (int index = 0; index < sites.Count; index++)
            {
                LaunchSite site = sites[index];

                // don't spam the logfile for the KSC. doesn't work roght now.
                if (site.name == "Runway" || site.name == "LaunchPad")
                {
                    continue;
                }

                // check if we should display the site or not this is the fastst check, so it shoud be first
                string openclosed = site.openclosestate;
                string category   = site.category;

                if (!KerbalKonstructs.instance.mapShowHelipads && category == "Helipad")
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowOther && category == "Other")
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad")
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRunways && category == "Runway")
                {
                    continue;
                }

                if (MiscUtils.isCareerGame())
                {
                    if (!KerbalKonstructs.instance.mapShowOpen && openclosed == "Open")
                    {
                        continue;
                    }
                    if (!KerbalKonstructs.instance.mapShowClosed && openclosed == "Closed")
                    {
                        continue;
                    }
                    if (KerbalKonstructs.instance.disableDisplayClosed && openclosed == "Closed")
                    {
                        continue;
                    }
                    if (openclosed == "OpenLocked" || openclosed == "ClosedLocked")
                    {
                        continue;
                    }
                }


                PSystemSetup.SpaceCenterFacility facility = PSystemSetup.Instance.GetSpaceCenterFacility(site.name);
                if (facility == null)
                {
                    continue;
                }

                PSystemSetup.SpaceCenterFacility.SpawnPoint sp = facility.GetSpawnPoint(site.name);
                if (sp == null)
                {
                    Log.Error("No Spawn Point found for: " + site.name);
                    continue;
                }

                if (facility.facilityPQS != body.pqsController)
                {
                    Log.Error("No PQS found for: " + site.name);
                    continue;
                }
                ;

                Transform spawnPointTransform = sp.GetSpawnPointTransform();
                if (spawnPointTransform == null)
                {
                    Log.Error("No Spawn PointTransform found for: " + site.name);
                    continue;
                }

                if (isOccluded((spawnPointTransform.position), body))
                {
                    if (KerbalKonstructs.instance.mapHideIconsBehindBody)
                    {
                        continue;
                    }
                }

                Vector3 pos = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(spawnPointTransform.position));

                Rect screenRect = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16);

                // Distance between camera and spawnpoint sort of
                float fPosZ = pos.z;

                float fRadarRadius = 12800 / fPosZ;
                //      Log.Warning("fRadarRadius = " + Math.Round(fRadarRadius,2));
                float fRadarOffset = fRadarRadius / 2;



                if (KerbalKonstructs.instance.mapShowRadar)
                {
                    drawRadar(pos, category, openclosed);
                }

                if (openclosed == "Open" && KerbalKonstructs.instance.mapShowGroundComms)
                {
                    drawGroundComms(null, site);
                }

                if (site.icon != null)
                {
                    if (fRadarRadius > 15)
                    {
                        GUI.DrawTexture(screenRect, site.icon, ScaleMode.ScaleToFit, true);
                    }
                }
                else
                {
                    if (fRadarRadius > 15)
                    {
                        switch (site.type)
                        {
                        case SiteType.VAB:
                            GUI.DrawTexture(screenRect, UIMain.VABIcon, ScaleMode.ScaleToFit, true);
                            break;

                        case SiteType.SPH:
                            GUI.DrawTexture(screenRect, UIMain.SPHIcon, ScaleMode.ScaleToFit, true);
                            break;

                        default:
                            GUI.DrawTexture(screenRect, UIMain.ANYIcon, ScaleMode.ScaleToFit, true);
                            break;
                        }
                    }
                }

                // Tooltip
                if (screenRect.Contains(Event.current.mousePosition) && !displayingTooltip)
                {
                    //Only display one tooltip at a time
                    string sToolTip = "";
                    sToolTip = site.name;
                    if (site.name == "Runway")
                    {
                        sToolTip = "KSC Runway";
                    }
                    if (site.name == "LaunchPad")
                    {
                        sToolTip = "KSC LaunchPad";
                    }
                    displayMapIconToolTip(sToolTip, pos);

                    // Select a base by clicking on the icon
                    if (Event.current.type == EventType.mouseDown && Event.current.button == 0)
                    {
                        MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3);
                        BaseManager.setSelectedSite(site);
                        selectedSite = site;
                        NavGuidanceSystem.setTargetSite(selectedSite);
                        WindowManager.instance.OpenWindow(KerbalKonstructs.instance.GUI_BaseManager.drawBaseManager);
                    }
                }
            }
        }
        public void drawBaseManagerWindow(int windowID)
        {
            DeadButton = new GUIStyle(GUI.skin.button);
            DeadButton.normal.background  = null;
            DeadButton.hover.background   = null;
            DeadButton.active.background  = null;
            DeadButton.focused.background = null;
            DeadButton.normal.textColor   = Color.white;
            DeadButton.hover.textColor    = Color.white;
            DeadButton.active.textColor   = Color.white;
            DeadButton.focused.textColor  = Color.white;
            DeadButton.fontSize           = 14;
            DeadButton.fontStyle          = FontStyle.Bold;

            DeadButtonRed = new GUIStyle(GUI.skin.button);
            DeadButtonRed.normal.background  = null;
            DeadButtonRed.hover.background   = null;
            DeadButtonRed.active.background  = null;
            DeadButtonRed.focused.background = null;
            DeadButtonRed.normal.textColor   = Color.red;
            DeadButtonRed.hover.textColor    = Color.yellow;
            DeadButtonRed.active.textColor   = Color.red;
            DeadButtonRed.focused.textColor  = Color.red;
            DeadButtonRed.fontSize           = 12;
            DeadButtonRed.fontStyle          = FontStyle.Bold;

            Yellowtext = new GUIStyle(GUI.skin.box);
            Yellowtext.normal.textColor  = Color.yellow;
            Yellowtext.normal.background = null;

            TextAreaNoBorder = new GUIStyle(GUI.skin.textArea);
            TextAreaNoBorder.normal.background = null;
            TextAreaNoBorder.normal.textColor  = Color.white;
            TextAreaNoBorder.fontSize          = 12;
            TextAreaNoBorder.padding.left      = 1;
            TextAreaNoBorder.padding.right     = 1;
            TextAreaNoBorder.padding.top       = 4;

            BoxNoBorder = new GUIStyle(GUI.skin.box);
            BoxNoBorder.normal.background = null;
            BoxNoBorder.normal.textColor  = Color.white;

            LabelWhite = new GUIStyle(GUI.skin.label);
            LabelWhite.normal.background = null;
            LabelWhite.normal.textColor  = Color.white;
            LabelWhite.fontSize          = 12;
            LabelWhite.padding.left      = 1;
            LabelWhite.padding.right     = 1;
            LabelWhite.padding.top       = 4;

            LabelInfo = new GUIStyle(GUI.skin.label);
            LabelInfo.normal.background = null;
            LabelInfo.normal.textColor  = Color.white;
            LabelInfo.fontSize          = 13;
            LabelInfo.fontStyle         = FontStyle.Bold;
            LabelInfo.padding.left      = 3;
            LabelInfo.padding.top       = 0;
            LabelInfo.padding.bottom    = 0;

            KKWindowTitle = new GUIStyle(GUI.skin.box);
            KKWindowTitle.normal.background = null;
            KKWindowTitle.normal.textColor  = Color.white;
            KKWindowTitle.fontSize          = 14;
            KKWindowTitle.fontStyle         = FontStyle.Bold;

            SmallButton = new GUIStyle(GUI.skin.button);
            SmallButton.normal.textColor  = Color.red;
            SmallButton.hover.textColor   = Color.white;
            SmallButton.padding.top       = 1;
            SmallButton.padding.left      = 1;
            SmallButton.padding.right     = 1;
            SmallButton.padding.bottom    = 4;
            SmallButton.normal.background = null;
            SmallButton.hover.background  = null;
            SmallButton.fontSize          = 12;

            if (!loadedPersistence && MiscUtils.isCareerGame())
            {
                PersistenceFile <LaunchSite> .LoadList(LaunchSiteManager.AllLaunchSites, "LAUNCHSITES", "KK");

                loadedPersistence = true;
            }

            string sButtonName = "";

            sButtonName = selectedSite.name;
            if (selectedSite.name == "Runway")
            {
                sButtonName = "KSC Runway";
            }
            if (selectedSite.name == "LaunchPad")
            {
                sButtonName = "KSC LaunchPad";
            }

            GUILayout.BeginHorizontal();
            {
                GUI.enabled = false;
                GUILayout.Button("-KK-", DeadButton, GUILayout.Height(21));

                GUILayout.FlexibleSpace();

                GUILayout.Button("Base Manager", DeadButton, GUILayout.Height(21));

                GUILayout.FlexibleSpace();

                GUI.enabled = true;

                if (HighLogic.LoadedScene != GameScenes.EDITOR)
                {
                    if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(21)))
                    {
                        InputLockManager.RemoveControlLock("KKEditorLock");
                        selectedSite      = null;
                        loadedPersistence = false;
                        KerbalKonstructs.instance.showBaseManager = false;
                    }
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(1);
            GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));

            GUILayout.Space(2);

            if (selectedSite.name == "Runway")
            {
                GUILayout.Box("KSC Runway", Yellowtext);
            }
            else
            if (selectedSite.name == "LaunchPad")
            {
                GUILayout.Box("KSC LaunchPad", Yellowtext);
            }
            else
            {
                GUILayout.Box("" + selectedSite.name, Yellowtext);
            }

            if (!foldedIn)
            {
                GUILayout.Space(5);

                GUILayout.BeginHorizontal();
                {
                    GUILayout.Space(2);
                    GUILayout.Box(tVerticalSep, BoxNoBorder, GUILayout.Width(4), GUILayout.Height(135));
                    GUILayout.FlexibleSpace();
                    GUILayout.Box(selectedSite.logo, BoxNoBorder, GUILayout.Height(135), GUILayout.Width(135));
                    GUILayout.FlexibleSpace();
                    GUILayout.Box(tVerticalSep, BoxNoBorder, GUILayout.Width(4), GUILayout.Height(135));
                    GUILayout.Space(2);
                }
                GUILayout.EndHorizontal();

                GUILayout.Space(3);

                descriptionScrollPosition = GUILayout.BeginScrollView(descriptionScrollPosition, GUILayout.Height(120));
                {
                    GUI.enabled = false;
                    GUILayout.Label(selectedSite.description, LabelWhite);
                    GUI.enabled = true;
                }
                GUILayout.EndScrollView();
            }

            GUILayout.Space(1);

            isFavourite = (selectedSite.favouritesite == "Yes");

            GUILayout.BeginHorizontal();
            {
                GUI.enabled = (!displayStats);
                if (GUILayout.Button("Stats", GUILayout.Height(23)))
                {
                    displayLog   = false;
                    displayStats = true;
                }
                GUI.enabled = true;

                GUI.enabled = (!displayLog);
                if (GUILayout.Button("Log", GUILayout.Height(23)))
                {
                    displayLog   = true;
                    displayStats = false;
                }
                GUI.enabled = true;

                if (isFavourite)
                {
                    tFaveTemp = tIsFave;
                }
                else
                {
                    tFaveTemp = tMakeFavourite;
                }

                if (GUILayout.Button(tFaveTemp, GUILayout.Height(23), GUILayout.Width(23)))
                {
                    if (isFavourite)
                    {
                        selectedSite.favouritesite = "No";
                    }
                    else
                    {
                        selectedSite.favouritesite = "Yes";
                    }

                    List <LaunchSite> sites = LaunchSiteManager.getLaunchSites();
                    PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK");
                }

                if (foldedIn)
                {
                    tFolded = tFoldOut;
                }
                if (!foldedIn)
                {
                    tFolded = tFoldIn;
                }

                if (GUILayout.Button(tFolded, GUILayout.Height(23), GUILayout.Width(23)))
                {
                    if (foldedIn)
                    {
                        foldedIn = false;
                    }
                    else
                    {
                        foldedIn = true;
                    }
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(1);

            if (displayStats)
            {
                GUILayout.Label("Altitude: " + selectedSite.refalt.ToString("#0.0") + " m", LabelInfo);
                GUILayout.Label("Longitude: " + selectedSite.reflon.ToString("#0.000"), LabelInfo);
                GUILayout.Label("Latitude: " + selectedSite.reflat.ToString("#0.000"), LabelInfo);
                GUILayout.Space(3);
                GUILayout.Label("Length: " + selectedSite.sitelength.ToString("#0" + " m"), LabelInfo);
                GUILayout.Label("Width: " + selectedSite.sitewidth.ToString("#0" + " m"), LabelInfo);

                GUILayout.FlexibleSpace();
            }

            iFundsOpen  = selectedSite.opencost;
            iFundsClose = selectedSite.closevalue;

            bool isAlwaysOpen   = false;
            bool cannotBeClosed = false;

            if (iFundsOpen == 0)
            {
                isAlwaysOpen = true;
            }

            if (iFundsClose == 0)
            {
                cannotBeClosed = true;
            }

            if (MiscUtils.isCareerGame())
            {
                if (displayStats)
                {
                    if (!KerbalKonstructs.instance.disableRemoteRecovery)
                    {
                        if (selectedSite.recoveryfactor > 0)
                        {
                            GUILayout.Label("Recovery Factor: " + selectedSite.recoveryfactor.ToString() + "%", LabelInfo);
                            if (selectedSite.name != "Runway" && selectedSite.name != "LaunchPad")
                            {
                                if (selectedSite.recoveryrange > 0)
                                {
                                    rangekm = selectedSite.recoveryrange / 1000;
                                }
                                else
                                {
                                    rangekm = 0;
                                }

                                GUILayout.Label("Effective Range: " + rangekm.ToString() + " km", LabelInfo);
                            }
                            else
                            {
                                GUILayout.Label("Effective Range: Unlimited", LabelInfo);
                            }
                        }
                        else
                        {
                            GUILayout.Label("No Recovery Capability", LabelInfo);
                        }
                    }

                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Launch Refund: " + selectedSite.launchrefund.ToString() + "%", LabelInfo);
                }

                if (displayLog)
                {
                    logScrollPosition = GUILayout.BeginScrollView(logScrollPosition, GUILayout.Height(120));
                    {
                        GUILayout.Box("Feature is WIP");
                        GUILayout.Box("Log Entry");
                        GUILayout.Box("Log Entry");
                        GUILayout.Box("Log Entry");
                    }
                    GUILayout.EndScrollView();

                    GUILayout.FlexibleSpace();
                }

                isOpen      = (selectedSite.openclosestate == "Open");
                GUI.enabled = !isOpen;
                List <LaunchSite> sites = LaunchSiteManager.getLaunchSites();
                if (!isAlwaysOpen)
                {
                    if (!KerbalKonstructs.instance.disableRemoteBaseOpening)
                    {
                        if (GUILayout.Button("Open Base for \n" + iFundsOpen + " funds", GUILayout.Height(40)))
                        {
                            double currentfunds = Funding.Instance.Funds;

                            if (iFundsOpen > currentfunds)
                            {
                                MiscUtils.HUDMessage("Insufficient funds to open this base!", 10,
                                                     3);
                            }
                            else
                            {
                                selectedSite.openclosestate = "Open";
                                Funding.Instance.AddFunds(-iFundsOpen, TransactionReasons.Cheating);
                                PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK");
                            }
                        }
                    }
                }
                GUI.enabled = true;

                GUI.enabled = isOpen;
                if (!cannotBeClosed)
                {
                    if (GUILayout.Button("Close Base for \n" + iFundsClose + " funds", GUILayout.Height(40)))
                    {
                        Funding.Instance.AddFunds(iFundsClose, TransactionReasons.Cheating);
                        selectedSite.openclosestate = "Closed";

                        PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK");
                    }
                }
                GUI.enabled = true;

                GUILayout.FlexibleSpace();

                if (HighLogic.LoadedScene == GameScenes.EDITOR)
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (selectedSite.name == EditorLogic.fetch.launchSiteName)
                        {
                            tStatusLaunchsite = tSetLaunchsite;
                        }
                        else
                        if (isOpen || isAlwaysOpen)
                        {
                            tStatusLaunchsite = tOpenedLaunchsite;
                        }
                        else
                        {
                            tStatusLaunchsite = tClosedLaunchsite;
                        }

                        GUILayout.Label(tStatusLaunchsite, GUILayout.Height(32), GUILayout.Width(32));

                        GUI.enabled = (isOpen || isAlwaysOpen) && !(selectedSite.name == EditorLogic.fetch.launchSiteName);
                        if (GUILayout.Button("Set as \nLaunchsite", GUILayout.Height(40)))
                        {
                            LaunchSiteManager.setLaunchSite(selectedSite);
                            string smessage = sButtonName + " has been set as the launchsite";
                            MiscUtils.HUDMessage(smessage, 10, 0);
                        }
                        GUI.enabled = true;
                    }
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.Space(3);
            GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));
            GUILayout.Space(1);

            GUI.DragWindow(new Rect(0, 0, 10000, 10000));
        }
示例#7
0
 /// <summary>
 /// Caches the launchsites for later use
 /// </summary>
 private void CacheLaunchSites()
 {
     lauchSites = LaunchSiteManager.getLaunchSites().ToArray();
 }
示例#8
0
        public void drawLaunchsites(MapObject target)
        {
            displayingTooltip = false;
            int iPulseRate = 180;

            iRadarCounter = iRadarCounter + 1;
            if (iRadarCounter > iPulseRate)
            {
                iRadarCounter = 0;
            }

            // Then do launchsites
            List <LaunchSite> sites = LaunchSiteManager.getLaunchSites();

            for (int index = 0; index < sites.Count; index++)
            {
                LaunchSite site = sites[index];

                PSystemSetup.SpaceCenterFacility facility = PSystemSetup.Instance.GetSpaceCenterFacility(site.name);

                if (facility == null)
                {
                    continue;
                }

                PSystemSetup.SpaceCenterFacility.SpawnPoint sp = facility.GetSpawnPoint(site.name);

                if (sp == null)
                {
                    continue;
                }

                if (facility.facilityPQS != target.celestialBody.pqsController)
                {
                    continue;
                }

                Transform spawnPointTransform = sp.GetSpawnPointTransform();
                if (spawnPointTransform == null)
                {
                    continue;
                }

                if (isOccluded(spawnPointTransform.position, target.celestialBody))
                {
                    if (KerbalKonstructs.instance.mapHideIconsBehindBody)
                    {
                        continue;
                    }
                }

                Vector3 pos        = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(spawnPointTransform.position));
                Rect    screenRect = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16);

                // Distance between camera and spawnpoint sort of
                float fPosZ = pos.z;

                float fRadarRadius = 12800 / fPosZ;
                float fRadarOffset = fRadarRadius / 2;

                string openclosed = site.openclosestate;
                string category   = site.category;

                bool display = true;

                if (!KerbalKonstructs.instance.mapShowHelipads && category == "Helipad")
                {
                    display = false;
                }
                if (!KerbalKonstructs.instance.mapShowOther && category == "Other")
                {
                    display = false;
                }
                if (!KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad")
                {
                    display = false;
                }
                if (!KerbalKonstructs.instance.mapShowRunways && category == "Runway")
                {
                    display = false;
                }

                if (display && MiscUtils.isCareerGame())
                {
                    if (!KerbalKonstructs.instance.mapShowOpen && openclosed == "Open")
                    {
                        display = false;
                    }
                    if (!KerbalKonstructs.instance.mapShowClosed && openclosed == "Closed")
                    {
                        display = false;
                    }
                    if (KerbalKonstructs.instance.disableDisplayClosed && openclosed == "Closed")
                    {
                        display = false;
                    }
                    if (openclosed == "OpenLocked" || openclosed == "ClosedLocked")
                    {
                        display = false;
                    }
                }

                if (!display)
                {
                    continue;
                }

                if (KerbalKonstructs.instance.mapShowRadar)
                {
                    drawRadar(pos, category, openclosed);
                }

                if (openclosed == "Open" && KerbalKonstructs.instance.mapShowGroundComms)
                {
                    drawGroundComms(null, site);
                }

                if (site.icon != null)
                {
                    if (fRadarRadius > 15)
                    {
                        Graphics.DrawTexture(screenRect, site.icon);
                    }
                }
                else
                {
                    if (fRadarRadius > 15)
                    {
                        switch (site.type)
                        {
                        case SiteType.VAB:
                            Graphics.DrawTexture(screenRect, UIMain.VABIcon);
                            break;

                        case SiteType.SPH:
                            Graphics.DrawTexture(screenRect, UIMain.SPHIcon);
                            break;

                        default:
                            Graphics.DrawTexture(screenRect, UIMain.ANYIcon);
                            break;
                        }
                    }
                }

                // Tooltip
                if (screenRect.Contains(Event.current.mousePosition) && !displayingTooltip)
                {
                    //Only display one tooltip at a time
                    string sToolTip = "";
                    sToolTip = site.name;
                    if (site.name == "Runway")
                    {
                        sToolTip = "KSC Runway";
                    }
                    if (site.name == "LaunchPad")
                    {
                        sToolTip = "KSC LaunchPad";
                    }
                    displayMapIconToolTip(sToolTip, pos);

                    // Select a base by clicking on the icon
                    if (Event.current.type == EventType.mouseDown && Event.current.button == 0)
                    {
                        MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3);
                        BaseManager.setSelectedSite(site);
                        selectedSite = site;
                        NavGuidanceSystem.setTargetSite(selectedSite);
                        KerbalKonstructs.instance.showBaseManager = true;
                    }
                }
            }
        }