internal static void CreateWPForLaunchSite(KKLaunchSite site)
        {
            FinePrint.Waypoint lsWP = new FinePrint.Waypoint();

            //lsWP.altitude = selectedSite.staticInstance.surfaceHeight + 20f;
            lsWP.altitude      = 0;
            lsWP.height        = 20f;
            lsWP.isOnSurface   = true;
            lsWP.latitude      = site.staticInstance.RefLatitude;
            lsWP.longitude     = site.staticInstance.RefLongitude;
            lsWP.name          = site.LaunchSiteName;
            lsWP.celestialName = site.body.name;
            lsWP.isNavigatable = true;

            lsWP.navigationId = Guid.NewGuid();
            lsWP.enableMarker = true;
            lsWP.fadeRange    = site.body.Radius;
            lsWP.seed         = site.LaunchSiteName.GetHashCode();
            lsWP.isCustom     = true;

            switch (site.sitecategory)
            {
            case LaunchSiteCategory.RocketPad:
                lsWP.id = "Squad/PartList/SimpleIcons/R&D_node_icon_heavierrocketry";
                break;

            case LaunchSiteCategory.Runway:
                lsWP.id = "Squad/PartList/SimpleIcons/RDicon_aerospaceTech2";
                break;

            case LaunchSiteCategory.Helipad:
                lsWP.id = "Squad/PartList/SimpleIcons/R&D_node_icon_landing";
                break;

            default:
                lsWP.id = "custom";
                break;
            }

            FinePrint.WaypointManager.AddWaypoint(lsWP);
            site.wayPoint = lsWP;
        }
Пример #2
0
 public static void setSelectedSite(KKLaunchSite soSite)
 {
     selectedSite = soSite;
 }
Пример #3
0
        public static KKLaunchSite getSelectedSite()
        {
            KKLaunchSite thisSite = selectedSite;

            return(thisSite);
        }
Пример #4
0
        public void drawBaseManagerWindow(int windowID)
        {
            if (!layoutIsInitialized)
            {
                InitializeLayout();
                layoutIsInitialized = true;
            }

            string sButtonName = "";

            sButtonName = selectedSite.LaunchSiteName;
            if (selectedSite.LaunchSiteName == "Runway")
            {
                sButtonName = "KSC Runway";
            }
            if (selectedSite.LaunchSiteName == "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;
                        this.Close();
                        return;
                    }
                }
            }
            GUILayout.EndHorizontal();

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

            GUILayout.Space(2);

            if (selectedSite.LaunchSiteName == "Runway")
            {
                GUILayout.Box("KSC Runway", Yellowtext);
            }
            else
            if (selectedSite.LaunchSiteName == "LaunchPad")
            {
                GUILayout.Box("KSC LaunchPad", Yellowtext);
            }
            else
            {
                GUILayout.Box("" + selectedSite.LaunchSiteName, 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.LaunchSiteDescription, 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";
                    }
                }

                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.LaunchSiteLength.ToString("#0" + " m"), LabelInfo);
                GUILayout.Label("Width: " + selectedSite.LaunchSiteWidth.ToString("#0" + " m"), LabelInfo);

                GUILayout.FlexibleSpace();
            }

            if (MiscUtils.isCareerGame())
            {
                if (displayLog)
                {
                    logScrollPosition = GUILayout.BeginScrollView(logScrollPosition, GUILayout.Height(120));
                    {
                        Char     csep        = '|';
                        string[] sLogEntries = selectedSite.MissionLog.Split(csep);
                        foreach (string sEntry in sLogEntries)
                        {
                            GUILayout.Label(sEntry, LabelInfo);
                        }
                    }
                    GUILayout.EndScrollView();

                    GUILayout.FlexibleSpace();
                }

                GUI.enabled = !selectedSite.isOpen;
                if (selectedSite.OpenCost > 0)
                {
                    if (!KerbalKonstructs.instance.disableRemoteBaseOpening)
                    {
                        if (GUILayout.Button("Open Base for \n" + selectedSite.OpenCost + " funds", GUILayout.Height(38)))
                        {
                            double currentfunds = Funding.Instance.Funds;

                            if (selectedSite.OpenCost > currentfunds)
                            {
                                MiscUtils.HUDMessage("Insufficient funds to open this base!", 10,
                                                     3);
                            }
                            else
                            {
                                selectedSite.SetOpen();
                                LaunchSiteManager.OpenLaunchSite(selectedSite);
                                Funding.Instance.AddFunds(-selectedSite.OpenCost, TransactionReasons.Cheating);
                            }
                        }
                    }
                }
                GUI.enabled = true;

                GUI.enabled = selectedSite.isOpen;
                if (selectedSite.CloseValue > 0)
                {
                    if (GUILayout.Button("Close Base for \n" + selectedSite.CloseValue + " funds", GUILayout.Height(38)))
                    {
                        Funding.Instance.AddFunds(selectedSite.CloseValue, TransactionReasons.Cheating);
                        LaunchSiteManager.CloseLaunchSite(selectedSite);
                        selectedSite.SetClosed();
                    }
                }
                GUI.enabled = true;

                GUILayout.FlexibleSpace();

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

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

                        GUI.enabled = (selectedSite.isOpen) && !(selectedSite.LaunchSiteName == EditorLogic.fetch.launchSiteName);
                        if (GUILayout.Button("Set as \nLaunchsite", GUILayout.Height(38)))
                        {
                            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));
        }
Пример #5
0
 public static void setTargetSite(KKLaunchSite lsTarget, string sName = "")
 {
     lTargetSite = lsTarget;
 }
Пример #6
0
        internal void SaveSettings()
        {
            bool addToDB = false;

            if (!selectedObject.hasLauchSites)
            {
                Log.Normal("Creating LaunchSite");
                KKLaunchSite lsite = new KKLaunchSite();
                selectedObject.launchSite = lsite;
                Log.Normal("created; lsite = " + lsite + "; launch site = " + selectedObject.launchSite);
                selectedObject.hasLauchSites   = true;
                lsite.staticInstance           = selectedObject;
                selectedObject.launchSite.body = selectedObject.CelestialBody;
                addToDB = true;
            }

            string             oldName     = selectedObject.launchSite.LaunchSiteName;
            LaunchSiteCategory oldCategory = category;
            bool oldState = selectedObject.launchSite.ILSIsActive;

            selectedObject.launchSite.LaunchSiteName        = siteName;
            selectedObject.launchSite.LaunchSiteLength      = float.Parse(stLength);
            selectedObject.launchSite.LaunchSiteWidth       = float.Parse(stWidth);
            selectedObject.launchSite.LaunchSiteType        = siteType;
            selectedObject.launchSite.LaunchPadTransform    = siteTrans;
            selectedObject.launchSite.LaunchSiteDescription = siteDesc;
            selectedObject.launchSite.OpenCost              = float.Parse(stOpenCost);
            selectedObject.launchSite.CloseValue            = float.Parse(stCloseValue);
            selectedObject.launchSite.LaunchSiteIsHidden    = bool.Parse(siteHidden);
            selectedObject.launchSite.ILSIsActive           = bool.Parse(ILSActive);
            selectedObject.launchSite.LaunchSiteAuthor      = siteAuthor;
            selectedObject.launchSite.refLat                = (float)selectedObject.RefLatitude;
            selectedObject.launchSite.refLon                = (float)selectedObject.RefLongitude;
            selectedObject.launchSite.refAlt                = selectedObject.RadiusOffset;
            selectedObject.launchSite.sitecategory          = category;
            selectedObject.launchSite.InitialCameraRotation = float.Parse(initialCameraRotation);

            if (ILSConfig.DetectNavUtils())
            {
                Log.Normal("NavUtils detected");
                Log.Debug("object: " + selectedObject);
                Log.Debug("launchsite: " + selectedObject.launchSite);
                Log.Debug("body: " + selectedObject.launchSite.body);

                bool regenerateILSConfig = false;
                Log.Debug("old name: " + oldName);
                Log.Debug("new name: " + selectedObject.launchSite.LaunchSiteName);
                if (oldName != null && !oldName.Equals(siteName))
                {
                    ILSConfig.RenameSite(selectedObject.launchSite.LaunchSiteName, siteName);
                    regenerateILSConfig = true;
                }

                Log.Debug("old category: " + oldCategory);
                if ((oldCategory != category))
                {
                    ILSConfig.HandleCategoryChange(selectedObject);
                    regenerateILSConfig = true;
                }

                bool state = bool.Parse(ILSActive);
                Log.Normal("new state: " + state + "; old state: " + oldState);
                if (oldState != state || regenerateILSConfig)
                {
                    if (state)
                    {
                        ILSConfig.GenerateFullILSConfig(selectedObject);
                    }
                    else
                    {
                        ILSConfig.DropILSConfig(selectedObject.launchSite.LaunchSiteName, true);
                    }
                }
            }


            if (addToDB)
            {
                selectedObject.launchSite.ParseLSConfig(selectedObject, null);
                selectedObject.SaveConfig();
                EditorGUI.instance.enableColliders = true;
                selectedObject.ToggleAllColliders(true);
                LaunchSiteManager.RegisterLaunchSite(selectedObject.launchSite);
            }
            selectedObject.SaveConfig();
        }
        public void DrawSelectorWindow(int id)
        {
            GUILayout.BeginHorizontal();
            {
                GUI.enabled = false;
                GUILayout.Button("-KK-", UIMain.DeadButton, GUILayout.Height(21));

                GUILayout.FlexibleSpace();

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

                GUILayout.FlexibleSpace();

                GUI.enabled = true;

                if (GUILayout.Button("X", UIMain.DeadButtonRed, GUILayout.Height(21)))
                {
                    this.Close();
                    return;
                }
            }
            GUILayout.EndHorizontal();

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

            GUILayout.Space(2);

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

                if (MiscUtils.isCareerGame())
                {
                    if (GUILayout.Button(new GUIContent(showOpen ? UIMain.tOpenBasesOn : UIMain.tOpenBasesOff, "Open"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                    {
                        if (showOpen)
                        {
                            showOpen   = false;
                            showClosed = true;
                        }
                        else
                        {
                            showOpen = true;
                        }
                    }

                    if (GUILayout.Button(new GUIContent(showClosed ? UIMain.tClosedBasesOn : UIMain.tClosedBasesOff, "Closed"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                    {
                        if (showClosed)
                        {
                            showClosed = false;
                            showOpen   = true;
                        }
                        else
                        {
                            showClosed = true;
                        }
                    }

                    GUILayout.FlexibleSpace();
                }

                if (GUILayout.Button(new GUIContent(showFavOnly ? UIMain.tFavesOn : UIMain.tFavesOff, "Only Favourites"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    showFavOnly = !showFavOnly;
                }

                GUILayout.FlexibleSpace();

                if (EditorDriver.editorFacility == EditorFacility.SPH)
                {
                    GUI.enabled = false;
                }

                isSelected = (showAllcategorys || (category == LaunchSiteCategory.RocketPad));
                if (GUILayout.Button(new GUIContent(isSelected? UIMain.tLaunchpadsOn : UIMain.tLaunchpadsOff, "Rocketpads"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    category         = LaunchSiteCategory.RocketPad;
                    showAllcategorys = false;
                }

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

                if (EditorDriver.editorFacility == EditorFacility.VAB)
                {
                    GUI.enabled = false;
                }
                isSelected = (showAllcategorys || (category == LaunchSiteCategory.RocketPad));
                if (GUILayout.Button(new GUIContent(isSelected ? UIMain.tRunwaysOn : UIMain.tRunwaysOff, "Runways"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    category         = LaunchSiteCategory.Runway;
                    showAllcategorys = false;
                }

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

                if (EditorDriver.editorFacility == EditorFacility.VAB)
                {
                    GUI.enabled = false;
                }
                isSelected = (showAllcategorys || (category == LaunchSiteCategory.Helipad));
                if (GUILayout.Button(new GUIContent(isSelected ? UIMain.tHelipadsOn: UIMain.tHelipadsOff, "Helipads"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    category         = LaunchSiteCategory.Helipad;
                    showAllcategorys = false;
                }

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

                if (EditorDriver.editorFacility == EditorFacility.VAB)
                {
                    GUI.enabled = false;
                }

                isSelected = (showAllcategorys || (category == LaunchSiteCategory.Waterlaunch));
                if (GUILayout.Button(new GUIContent(isSelected ? UIMain.tWaterOn : UIMain.tWaterOff, "WalterLaunch"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    category         = LaunchSiteCategory.Waterlaunch;
                    showAllcategorys = false;
                }

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

                isSelected = (showAllcategorys || (category == LaunchSiteCategory.Other));
                if (GUILayout.Button(new GUIContent(isSelected ? UIMain.tOtherOn : UIMain.tOtherOff, "Other"), UIMain.ButtonKK, GUILayout.Width(32), GUILayout.Height(32)))
                {
                    category         = LaunchSiteCategory.Other;
                    showAllcategorys = false;
                }

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("ALL", GUILayout.Width(32), GUILayout.Height(32)))
                {
                    showAllcategorys = true;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            sitesScrollPosition = GUILayout.BeginScrollView(sitesScrollPosition);
            {
                foreach (KKLaunchSite site in LaunchSiteManager.allLaunchSites)
                {
                    if (showFavOnly && (site.favouriteSite != "Yes"))
                    {
                        continue;
                    }

                    if (category != site.sitecategory && !showAllcategorys)
                    {
                        continue;
                    }

                    if (LaunchSiteManager.CheckLaunchSiteIsValid(site) == false)
                    {
                        continue;
                    }

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

                    GUILayout.BeginHorizontal();
                    {
                        ShowOpenStatus(site);

                        launchButtonName = site.LaunchSiteName;
                        if (site.LaunchSiteName == "Runway")
                        {
                            launchButtonName = "KSC Runway";
                        }

                        if (site.LaunchSiteName == "LaunchPad")
                        {
                            launchButtonName = "KSC LaunchPad";
                        }

                        GUI.enabled = (selectedSite != site);
                        if (GUILayout.Button(launchButtonName, GUILayout.Height(30)))
                        {
                            selectedSite             = site;
                            BaseManager.selectedSite = selectedSite;

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

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

            GUILayout.Space(5);

            sCurrentSite = LaunchSiteManager.getCurrentLaunchSite();

            switch (sCurrentSite)
            {
            case "Runway":
                GUILayout.Box("Current Launchsite: KSC Runway");
                break;

            case "LaunchPad":
                GUILayout.Box("Current Launchsite: KSC LaunchPad");
                break;

            default:
                GUILayout.Box("Current Launchsite: " + sCurrentSite);
                break;
            }

            GUI.enabled = (selectedSite.isOpen && (selectedSite.LaunchSiteName != sCurrentSite));
            if (GUILayout.Button("Set as Launchsite", GUILayout.Height(46)))
            {
                LaunchSiteManager.setLaunchSite(selectedSite);
                MiscUtils.HUDMessage(selectedSite.LaunchSiteName + " has been set as the launchsite", 10, 0);
            }
            GUI.enabled = true;

            GUILayout.BeginHorizontal();
            {
                GUI.enabled = false;
                if ((selectedSite.isOpen) && (EditorDriver.editorFacility == EditorFacility.SPH) && (KerbalKonstructs.instance.defaultSPHlaunchsite != selectedSite.LaunchSiteName))
                {
                    GUI.enabled = true;
                }

                if ((selectedSite.isOpen) && (EditorDriver.editorFacility == EditorFacility.VAB) && (KerbalKonstructs.instance.defaultVABlaunchsite != selectedSite.LaunchSiteName))
                {
                    GUI.enabled = true;
                }

                if (GUILayout.Button("Set as Default", GUILayout.Height(23)))
                {
                    if (selectedSite != null)
                    {
                        MiscUtils.HUDMessage(selectedSite.LaunchSiteName + " has been set as the default", 10, 0);
                        if (EditorDriver.editorFacility == EditorFacility.SPH)
                        {
                            KerbalKonstructs.instance.defaultSPHlaunchsite = selectedSite.LaunchSiteName;
                        }

                        if (EditorDriver.editorFacility == EditorFacility.VAB)
                        {
                            KerbalKonstructs.instance.defaultVABlaunchsite = selectedSite.LaunchSiteName;
                        }
                    }
                }
                GUI.enabled = true;

                if (GUILayout.Button("Use Default", GUILayout.Height(23)))
                {
                    selectedSite = LaunchSiteManager.GetDefaultSite();
                    LaunchSiteManager.setLaunchSite(selectedSite);
                    MiscUtils.HUDMessage(selectedSite.LaunchSiteName + " has been set as the launchsite", 10, 0);
                    BaseManager.selectedSite = selectedSite;
                }
            }
            GUILayout.EndHorizontal();

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

            GUILayout.Space(2);

            GUI.enabled = true;

            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, UIMain.KKToolTip);
            }

            GUI.DragWindow(new Rect(0, 0, 10000, 10000));
        }
Пример #8
0
 public LaunchsiteItem(KKLaunchSite launchsite)
 {
     this.launchsite = launchsite;
 }
Пример #9
0
        public void DrawLaunchsites()
        {
            displayingTooltip = false;
            body = PlanetariumCamera.fetch.target.GetReferenceBody();

            bool isOpen = false;

            // Then do launchsites
            for (int index = 0; index < lauchSites.Length; index++)
            {
                launchSite = lauchSites[index];
                // check if we should display the site or not this is the fastst check, so it shoud be first
                isOpen = launchSite.isOpen;

                if (!KerbalKonstructs.instance.mapShowHelipads && launchSite.sitecategory == LaunchSiteCategory.Helipad)
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowOther && (launchSite.sitecategory == LaunchSiteCategory.Other))
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowWaterLaunch && (launchSite.sitecategory == LaunchSiteCategory.Waterlaunch))
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRocketbases && launchSite.sitecategory == LaunchSiteCategory.RocketPad)
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRunways && launchSite.sitecategory == LaunchSiteCategory.Runway)
                {
                    continue;
                }

                if (MiscUtils.isCareerGame())
                {
                    if (!KerbalKonstructs.instance.mapShowOpen && isOpen)
                    {
                        continue;
                    }
                    if (!KerbalKonstructs.instance.mapShowClosed && !isOpen)
                    {
                        continue;
                    }
                    // don't show hidden bases when closed
                    if (launchSite.LaunchSiteIsHidden && !isOpen)
                    {
                        continue;
                    }
                }

                launchSitePosition = (Vector3)launchSite.body.GetWorldSurfacePosition(launchSite.refLat, launchSite.refLon, launchSite.refAlt) - MapView.MapCamera.GetComponent <Camera>().transform.position;

                if (mapHideIconsBehindBody && IsOccluded(launchSitePosition, body))
                {
                    continue;
                }

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

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

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


                if (launchSite.icon != null)
                {
                    if (fRadarRadius > 15)
                    {
                        GUI.DrawTexture(screenRect, launchSite.icon, ScaleMode.ScaleToFit, true);
                    }
                }
                else
                {
                    if (fRadarRadius > 15)
                    {
                        switch (launchSite.sitecategory)
                        {
                        case LaunchSiteCategory.RocketPad:
                            GUI.DrawTexture(screenRect, UIMain.VABIcon, ScaleMode.ScaleToFit, true);
                            break;

                        case LaunchSiteCategory.Runway:
                            GUI.DrawTexture(screenRect, UIMain.runWayIcon, ScaleMode.ScaleToFit, true);
                            break;

                        case LaunchSiteCategory.Helipad:
                            GUI.DrawTexture(screenRect, UIMain.heliPadIcon, ScaleMode.ScaleToFit, true);
                            break;

                        case LaunchSiteCategory.Waterlaunch:
                            GUI.DrawTexture(screenRect, UIMain.waterLaunchIcon, ScaleMode.ScaleToFit, true);
                            break;

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

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

                    // 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(launchSite);
                        selectedSite = launchSite;
                        NavGuidanceSystem.setTargetSite(selectedSite);
                        BaseManager.instance.Open();
                    }
                }
            }
        }
 void UseDefault()
 {
     selectedSite = LaunchSiteManager.GetDefaultSite();
     SetLaunchsite();
 }
Пример #11
0
        void UpdateUI()
        {
            landingGuide.SetIsOnWithoutNotify(LandingGuideUI.instance.IsOpen());
            navGuidance.SetIsOnWithoutNotify(NavGuidanceSystem.instance.IsOpen());

            var Range = float.PositiveInfinity;

            //FIXME atmo scaling? other worlds? ...
            if (FlightGlobals.ActiveVessel.altitude > 75000)
            {
                center = null;
                noBasesBeacon.SetActive(true);
                noNearestBase.SetActive(false);
                nearestBaseGroup.SetActive(false);
            }
            else
            {
                center = StaticDatabase.GetClosestLaunchCenter();;
                if (center == null)
                {
                    noBasesBeacon.SetActive(false);
                    noNearestBase.SetActive(true);
                    nearestBaseGroup.SetActive(false);
                }
                else
                {
                    noBasesBeacon.SetActive(false);
                    noNearestBase.SetActive(false);
                    nearestBaseGroup.SetActive(true);

                    Vector3 vPosition = FlightGlobals.ActiveVessel.GetTransform().position;
                    ngsSite = LaunchSiteManager.getNearestBase(center, vPosition);
                    Range   = Vector3.Distance(center.gameObject.transform.position, vPosition);
                    string info;
                    if (Range < 10000)
                    {
                        info = center.Group + " at " + Range.ToString("#0.0") + " m";
                    }
                    else
                    {
                        info = center.Group + " at " + (Range / 1000).ToString("#0.0") + " km";
                    }
                    nearestBase.Info(info);
                    bool ngs = NavGuidanceSystem.instance.IsOpen();
                    ngsFiller.SetActive(!ngs);
                    setNGSTarget.SetActive(ngs);
                }
            }

            if (!MiscUtils.isCareerGame())
            {
                careerGroup.SetActive(false);
            }
            else
            {
                careerGroup.SetActive(true);

                if (!FlightGlobals.ActiveVessel.Landed || Range > 5000)
                {
                    //FIXME a bouncy landing will be laggy
                    if (launchsiteItems.Count > 0)
                    {
                        launchsiteItems.Clear();
                        UIKit.UpdateListContent(launchsiteItems);
                    }
                    basesCanBeOpened.SetActive(true);
                    openSite.SetActive(false);
                    siteIsOpen.SetActive(false);
                    siteCannoteBeOpened.SetActive(false);
                }
                else
                {
                    basesCanBeOpened.SetActive(false);
                    if (launchsiteItems.Count != center.launchsites.Count)
                    {
                        BuildLaunchsites();
                    }
                    UpdateLaunchsite();
                }

                //if (Range > 100000)
                //{
                //    if (bLanded)
                //    {
                //        GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));
                //        GUILayout.Space(2);
                //        GUILayout.Label("This feature is WIP.", LabelInfo);
                //        GUI.enabled = false;
                //        if (GUILayout.Button("Found a New Base", GUILayout.Height(23)))
                //        {
                //            foundingBase = true;
                //        }
                //        GUI.enabled = true;
                //        GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4));
                //        GUILayout.Space(2);
                //    }
                //}
                //else
                //{
                //    GUILayout.Label("This feature is WIP.", LabelInfo);
                //}
            }

            UpdateFaclilitiesGroup();
        }
Пример #12
0
 void OnLaunchsiteSelected(LaunchsiteItem site)
 {
     selectedSite = site.launchsite;
     UpdateUI();
 }