コード例 #1
0
        // [ValidateAntiForgeryToken]
        public async Task <IActionResult> Edit(int id, [Bind("ID,ContactDetailID,Location,Name,Description,PhotoURL")] LaunchSite launchSite)
        {
            if (id != launchSite.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(launchSite);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!LaunchSiteExists(launchSite.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(launchSite));
        }
コード例 #2
0
            public WaypointData(WaypointData orig, Contract contract)
            {
                type                   = orig.type;
                names                  = orig.names.ToList();
                waypoint.altitude      = orig.waypoint.altitude;
                waypoint.celestialName = orig.waypoint.celestialName;
                waypoint.height        = orig.waypoint.height;
                waypoint.id            = orig.waypoint.id;
                waypoint.index         = orig.waypoint.index;
                waypoint.isClustered   = orig.waypoint.isClustered;
                waypoint.isExplored    = orig.waypoint.isExplored;
                waypoint.isOnSurface   = orig.waypoint.isOnSurface;
                waypoint.landLocked    = orig.waypoint.landLocked;
                waypoint.latitude      = orig.waypoint.latitude;
                waypoint.longitude     = orig.waypoint.longitude;
                waypoint.name          = orig.waypoint.name;
                waypoint.visible       = orig.waypoint.visible;

                randomAltitude  = orig.randomAltitude;
                waterAllowed    = orig.waterAllowed;
                forceEquatorial = orig.forceEquatorial;
                nearIndex       = orig.nearIndex;
                chained         = orig.chained;
                count           = orig.count;
                minDistance     = orig.minDistance;
                maxDistance     = orig.maxDistance;
                pqsCity         = orig.pqsCity;
                pqsOffset       = orig.pqsOffset;
                launchSite      = orig.launchSite;
                parameter       = orig.parameter.ToList();
                underwater      = orig.underwater;

                SetContract(contract);
            }
コード例 #3
0
        public LaunchSite GetLaunchSiteInformation(ref JArray data, int?id)
        {
            LaunchSite current = new LaunchSite();

            current.siteID  = (string)data[id]["launch_site"]["site_id"];
            current.locLong = (string)data[id]["launch_site"]["site_name_long"];

            return(current);
        }
コード例 #4
0
        public static LaunchSite ParseLaunchSiteValue(string siteName)
        {
            LaunchSite result = PSystemSetup.Instance.LaunchSites.Where(ls => ls.name == siteName).FirstOrDefault();

            if (result == null)
            {
                throw new ArgumentException("'" + siteName + "' is not a valid LaunchSite.");
            }
            return(result);
        }
コード例 #5
0
        // [ValidateAntiForgeryToken]
        public async Task <IActionResult> Create([Bind("ID,ContactDetailID,Location,Name,Description,PhotoURL")] LaunchSite launchSite)
        {
            if (ModelState.IsValid)
            {
                _context.Add(launchSite);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(launchSite));
        }
コード例 #6
0
        //create
        //test
        public bool CreateLaunchSite(LaunchSiteCreate model)
        {
            LaunchSite entity = new LaunchSite
            {
                Name       = model.Name,
                Location   = model.Location,
                CreatedUtc = DateTimeOffset.Now
            };

            _context.LaunchSites.Add(entity);
            return(_context.SaveChanges() == 1);
        }
コード例 #7
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);
            }
        }
コード例 #8
0
ファイル: KSC2.cs プロジェクト: DerpyFirework/KerbalCities
        void Awake()
        {
            // get Kerbins PQS
            PQS bodyPQS = FlightGlobals.GetHomeBody().pqsController;

            // search for the KSC2 object and check it exists
            Transform KSC2 = bodyPQS.transform.Find("KSC2");

            if (KSC2 == null)
            {
                return;
            }

            // try setting the launch platform convex
            // this is needed as the concave collider causes vessels to bug on physics load
            // an alternative solution would be ideal
            Transform platform = KSC2.Find("launchpad/Launchpad Platform");

            if (platform != null)
            {
                platform.GetComponent <MeshCollider>().convex = true;
            }

            // create the spawnpoint
            LaunchSite.SpawnPoint spawnPoint = new LaunchSite.SpawnPoint();
            spawnPoint.name = "Baikerbanur";

            // create the launchsite
            LaunchSite launchSite = new LaunchSite("Baikerbanur", bodyPQS.name, KSP.Localization.Localizer.GetStringByTag("#autoLOC_6002142"), new LaunchSite.SpawnPoint[] { spawnPoint }, "KSC2/launchpad/PlatformPlane", EditorFacility.VAB);

            launchSite.nodeType = KSP.UI.Screens.Mapview.MapNode.SiteType.LaunchSite;

            // finalize the LaunchSite
            launchSite.Setup(KSC2.gameObject.GetComponent <PQSCity>(), new PQS[] { bodyPQS });
            PSystemSetup.Instance.AddLaunchSite(launchSite);
        }
コード例 #9
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;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #10
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));
        }
コード例 #11
0
        public ActivityAssignment GetAssignmentForLaunch(string clientId, string courseId, string learnerId, LaunchSite courseLaunchSite)
        {
            var assignment = _courseAssignmentRepository.GetForCoursePlayer(clientId, courseId, learnerId);

            if (String.IsNullOrEmpty(assignment.ID) && courseLaunchSite == LaunchSite.Admin)
            {
                assignment = AddAdminAssignment(clientId, courseId, learnerId);
            }
            return(assignment);
        }
コード例 #12
0
        void Awake()
        {
            foreach (ConfigNode city in GameDatabase.Instance.GetConfigNodes("CITY"))
            {
                // check for a name, we need one
                if (!city.HasValue("name"))
                {
                    continue;
                }

                // create the new city
                GameObject cityObject = new GameObject();
                cityObject.name = city.GetValue("name");
                PQSCity2 pqsCity = cityObject.AddComponent <PQSCity2>();
                pqsCity.objectName = cityObject.name;

                // read and set values, using defaults when none are defined
                if (city.HasValue("verticalOffset"))
                {
                    pqsCity.alt = double.Parse(city.GetValue("verticalOffset"));
                    pqsCity.snapHeightOffset = double.Parse(city.GetValue("verticalOffset"));
                }
                CelestialBody body = FlightGlobals.GetHomeBody();
                if (city.HasValue("body"))
                {
                    body = FlightGlobals.GetBodyByName(city.GetValue("body"));
                }
                pqsCity.sphere = body.pqsController;
                if (city.HasValue("lat"))
                {
                    pqsCity.lat = double.Parse(city.GetValue("lat"));
                }
                if (city.HasValue("lon"))
                {
                    pqsCity.lon = double.Parse(city.GetValue("lon"));
                }
                if (city.HasValue("rotation"))
                {
                    pqsCity.rotation = double.Parse(city.GetValue("rotation"));
                }
                if (city.HasValue("snapToSurface"))
                {
                    pqsCity.snapToSurface = city.GetValue("snapToSurface").Equals("true", StringComparison.OrdinalIgnoreCase);
                }
                if (city.HasValue("displayName"))
                {
                    pqsCity.displayobjectName = city.GetValue("displayName");
                }
                else
                {
                    pqsCity.displayobjectName = cityObject.name;
                }

                // all the subnodes
                ConfigNode[] lods           = city.GetNodes("LOD");
                String[]     flagTransforms = city.GetValues("flagTransform");
                ConfigNode[] launchSites    = city.GetNodes("LAUNCHSITE");

                // load the LODs and models
                List <PQSCity2.LodObject> lodObjects = new List <PQSCity2.LodObject>();
                foreach (ConfigNode lod in lods)
                {
                    // create a new LodObject
                    PQSCity2.LodObject lodObject = new PQSCity2.LodObject();

                    // define the distance to stop rendering
                    if (lod.HasValue("visibleRange"))
                    {
                        lodObject.visibleRange = float.Parse(lod.GetValue("visibleRange"));
                    }
                    else
                    {
                        lodObject.visibleRange = 25000;
                    }

                    // read the models attached to this LOD
                    ConfigNode[]      models  = lod.GetNodes("MODEL");
                    List <GameObject> objects = new List <GameObject>();
                    foreach (ConfigNode model in models)
                    {
                        // make sure the model exists
                        if (!model.HasValue("model") | !GameDatabase.Instance.ExistsModel(model.GetValue("model")))
                        {
                            continue;
                        }

                        // get an instance of the model
                        GameObject modelInstance = GameDatabase.Instance.GetModel(model.GetValue("model"));

                        // attach it to the city
                        modelInstance.transform.parent = cityObject.transform;

                        // set the transform values if defined
                        if (model.HasValue("position"))
                        {
                            modelInstance.transform.localPosition = ConfigNode.ParseVector3(model.GetValue("position"));
                        }
                        if (model.HasValue("rotation"))
                        {
                            modelInstance.transform.localEulerAngles = ConfigNode.ParseVector3(model.GetValue("rotation"));
                        }
                        if (model.HasValue("scale"))
                        {
                            modelInstance.transform.localScale = ConfigNode.ParseVector3(model.GetValue("scale"));
                        }

                        // move to the local scenery layer
                        modelInstance.SetLayerRecursive(15);

                        // add the model to the list
                        //objects.Add(modelInstance);
                        modelInstance.SetActive(true);

                        // force all colliders to be concave
                        MeshCollider[] mColliders = modelInstance.GetComponentsInChildren <MeshCollider>(true);
                        foreach (MeshCollider collider in mColliders)
                        {
                            collider.convex = false;
                        }
                    }

                    // add the object list to the lodObject
                    lodObject.objects = objects.ToArray();

                    // add the lodObject to the lodObject list
                    lodObjects.Add(lodObject);
                }

                // add the LODs to the PQSCity
                pqsCity.objects = lodObjects.ToArray();

                // set the flag transforms
                if (flagTransforms.Length != 0)
                {
                    // add the flag handler component
                    CityFlag cityFlag = cityObject.AddComponent <CityFlag>();

                    // add each transform to the handler
                    foreach (string flagTransform in flagTransforms)
                    {
                        cityFlag.flagObjects.Add(CityUtils.FindChild(flagTransform, cityObject));
                    }
                }

                // finalize the PQSCity
                cityObject.transform.parent = body.pqsController.transform;
                pqsCity.Orientate();

                // add a CommNet antenna if defined
                if (city.HasNode("COMMNET"))
                {
                    // reference the confignode for future reference
                    ConfigNode commNet = city.GetNode("COMMNET");

                    // create the CommNetHome
                    CommNet.CommNetHome cNetHome = cityObject.AddComponent <CommNet.CommNetHome>();

                    // set the internal name
                    cNetHome.nodeName = cityObject.name;

                    // get the values from the config
                    if (commNet.HasValue("nodeName"))
                    {
                        cNetHome.displaynodeName = commNet.GetValue("nodeName");
                    }
                    else
                    {
                        cNetHome.displaynodeName = pqsCity.displayobjectName;
                    }
                    if (commNet.HasValue("antennaPower"))
                    {
                        cNetHome.antennaPower = double.Parse(commNet.GetValue("antennaPower"));
                    }
                    if (commNet.HasValue("isKSC"))
                    {
                        cNetHome.isKSC = commNet.GetValue("isKSC").Equals("true", StringComparison.OrdinalIgnoreCase);
                    }
                    if (commNet.HasValue("isPermanent"))
                    {
                        cNetHome.isPermanent = commNet.GetValue("isPermanent").Equals("true", StringComparison.OrdinalIgnoreCase);
                    }
                    if (city.HasValue("commNetTransform"))
                    {
                        cNetHome.nodeTransform = CityUtils.FindChild(city.GetValue("commNetTransform"), cityObject).transform;
                    }
                    else
                    {
                        cNetHome.nodeTransform = cityObject.transform;
                    }
                }

                // setup the launch sites (Making History required)
                foreach (ConfigNode site in launchSites)
                {
                    // we need a name
                    if (!site.HasValue("name"))
                    {
                        continue;
                    }

                    // create the spawnpoint
                    LaunchSite.SpawnPoint spawnPoint = new LaunchSite.SpawnPoint();
                    spawnPoint.name = site.GetValue("name");

                    // select the facility
                    EditorFacility facility = EditorFacility.VAB;
                    if (site.HasValue("facility") && site.GetValue("facility") == "SPH")
                    {
                        facility = EditorFacility.SPH;
                    }

                    // find and reparent the spawnTransform
                    // reparenting is done to ensure that it works
                    Transform spawnTransform = CityUtils.FindChild(site.GetValue("transform"), cityObject).transform;
                    spawnTransform.SetParent(cityObject.transform);

                    // create the launchsite
                    LaunchSite launchSite = new LaunchSite(site.GetValue("name"), body.pqsController.name, site.GetValue("title"), new LaunchSite.SpawnPoint[] { spawnPoint }, cityObject.name + "/" + spawnTransform.name, facility);

                    // change the mapIcon
                    // todo: remove mapIcon
                    if (facility == EditorFacility.VAB)
                    {
                        launchSite.nodeType = KSP.UI.Screens.Mapview.MapNode.SiteType.LaunchSite;
                    }
                    else
                    {
                        launchSite.nodeType = KSP.UI.Screens.Mapview.MapNode.SiteType.Runway;
                    }

                    // finalize the LaunchSite
                    launchSite.Setup(pqsCity, new PQS[] { body.pqsController });
                    PSystemSetup.Instance.AddLaunchSite(launchSite);
                }
            }
        }
コード例 #13
0
 public static void setTargetSite(LaunchSite lsTarget, string sName = "")
 {
     lTargetSite = lsTarget;
 }
コード例 #14
0
 public LaunchSiteViewModel(LaunchSite dbmodel)
 {
     this.Dbmodel  = dbmodel;
     this.Location = LunarSportsDBContext.getInstance().EventLocations.Where(loc => this.Dbmodel.Location == loc.ID).FirstOrDefault();
     this.Contact  = LunarSportsDBContext.getInstance().EventLocationContactDetails.Where(c => c.ID == this.Location.ContactDetail).FirstOrDefault();
 }
コード例 #15
0
        /// <summary>
        /// Launchsite Editor
        /// </summary>
        /// <param name="id"></param>
        void drawLaunchSiteEditorWindow(int id)
        {
            BoxNoBorder = new GUIStyle(GUI.skin.box);
            BoxNoBorder.normal.background = null;
            BoxNoBorder.normal.textColor  = Color.white;

            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.yellow;
            DeadButton.hover.textColor    = Color.white;
            DeadButton.active.textColor   = Color.yellow;
            DeadButton.focused.textColor  = Color.yellow;
            DeadButton.fontSize           = 14;
            DeadButton.fontStyle          = FontStyle.Normal;

            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;


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

                GUILayout.FlexibleSpace();

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

                GUILayout.FlexibleSpace();

                GUI.enabled = true;

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

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

            GUILayout.Space(2);

            GUILayout.Box(selectedObject.model.title);

            GUILayout.BeginHorizontal();
            GUILayout.Label("Site Name: ", GUILayout.Width(120));
            siteName = GUILayout.TextField(siteName, GUILayout.Height(19));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Transform: ", GUILayout.Width(120));
            GUILayout.Box("" + siteTrans);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Length: ", GUILayout.Width(120));
            stLength = GUILayout.TextField(stLength, GUILayout.Height(19));
            GUILayout.Label(" m");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Width: ", GUILayout.Width(120));
            stWidth = GUILayout.TextField(stWidth, GUILayout.Height(19));
            GUILayout.Label(" m");
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Site Category: ", GUILayout.Width(115));
            GUILayout.Label(siteCategory, GUILayout.Width(85));
            GUILayout.FlexibleSpace();
            GUI.enabled = !(siteCategory == "RocketPad");
            if (GUILayout.Button("RP", GUILayout.Width(25), GUILayout.Height(23)))
            {
                siteCategory = "RocketPad";
            }
            GUI.enabled = !(siteCategory == "Runway");
            if (GUILayout.Button("RW", GUILayout.Width(25), GUILayout.Height(23)))
            {
                siteCategory = "Runway";
            }
            GUI.enabled = !(siteCategory == "Helipad");
            if (GUILayout.Button("HP", GUILayout.Width(25), GUILayout.Height(23)))
            {
                siteCategory = "Helipad";
            }
            GUI.enabled = !(siteCategory == "Waterlaunch");
            if (GUILayout.Button("WA", GUILayout.Width(25), GUILayout.Height(23)))
            {
                siteCategory = "Waterlaunch";
            }
            GUI.enabled = !(siteCategory == "Other");
            if (GUILayout.Button("OT", GUILayout.Width(25), GUILayout.Height(23)))
            {
                siteCategory = "Other";
            }
            GUILayout.EndHorizontal();

            GUI.enabled = true;

            GUILayout.BeginHorizontal();
            GUILayout.Label("Site Type: ", GUILayout.Width(120));
            if (siteType == SiteType.VAB)
            {
                GUILayout.Label("VAB", GUILayout.Width(40));
            }
            if (siteType == SiteType.SPH)
            {
                GUILayout.Label("SPH", GUILayout.Width(40));
            }
            if (siteType == SiteType.Any)
            {
                GUILayout.Label("Any", GUILayout.Width(40));
            }
            GUILayout.FlexibleSpace();
            GUI.enabled = !(siteType == (SiteType)0);
            if (GUILayout.Button("VAB", GUILayout.Height(23)))
            {
                siteType = SiteType.VAB;
            }
            GUI.enabled = !(siteType == (SiteType)1);
            if (GUILayout.Button("SPH", GUILayout.Height(23)))
            {
                siteType = SiteType.SPH;
            }
            GUI.enabled = !(siteType == (SiteType)2);
            if (GUILayout.Button("Any", GUILayout.Height(23)))
            {
                siteType = SiteType.Any;
            }
            GUILayout.EndHorizontal();

            GUI.enabled = true;

            GUILayout.BeginHorizontal();
            GUILayout.Label("Author: ", GUILayout.Width(120));
            siteAuthor = GUILayout.TextField(siteAuthor, GUILayout.Height(19));
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Open Cost: ", GUILayout.Width(120));
            stOpenCost = GUILayout.TextField(stOpenCost, GUILayout.Height(19));
            GUILayout.Label(" \\F");
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Close Value: ", GUILayout.Width(120));
            stCloseValue = GUILayout.TextField(stCloseValue, GUILayout.Height(19));
            GUILayout.Label(" \\F");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Recovery Factor: ", GUILayout.Width(120));
            stRecoveryFactor = GUILayout.TextField(stRecoveryFactor, GUILayout.Height(19));
            GUILayout.Label(" %");
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Effective Range: ", GUILayout.Width(120));
            stRecoveryRange = GUILayout.TextField(stRecoveryRange, GUILayout.Height(19));
            GUILayout.Label(" m");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Launch Refund: ", GUILayout.Width(120));
            stLaunchRefund = GUILayout.TextField(stLaunchRefund, GUILayout.Height(19));
            GUILayout.Label(" %");
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Site is hidden: ", GUILayout.Width(115));
            GUILayout.Label(siteHidden, GUILayout.Width(85));
            GUILayout.FlexibleSpace();
            GUI.enabled = !(siteHidden == "false");
            if (GUILayout.Button("No", GUILayout.Width(40), GUILayout.Height(23)))
            {
                siteHidden = "false";
            }
            GUI.enabled = !(siteHidden == "true");
            if (GUILayout.Button("Yes", GUILayout.Width(40), GUILayout.Height(23)))
            {
                siteHidden = "true";
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();

            //if (ILSConfig.DetectNavUtils ()) {
            // NavUtilities config generator
            GUILayout.BeginHorizontal();
            GUILayout.Label("ILS/HSI on (NavUtilities)", GUILayout.Width(115));
            GUILayout.Label(ILSActive, GUILayout.Width(85));
            GUILayout.FlexibleSpace();
            GUI.enabled = !(ILSActive == "false");
            if (GUILayout.Button("No", GUILayout.Width(40), GUILayout.Height(23)))
            {
                ILSActive = "false";
            }
            GUI.enabled = !(ILSActive == "true");
            if (GUILayout.Button("Yes", GUILayout.Width(40), GUILayout.Height(23)))
            {
                ILSActive = "true";
            }
            GUILayout.EndHorizontal();
            //}
            GUI.enabled = true;
            GUILayout.Label("Description: ");
            descScroll = GUILayout.BeginScrollView(descScroll);
            siteDesc   = GUILayout.TextArea(siteDesc, GUILayout.ExpandHeight(true));
            GUILayout.EndScrollView();

            GUI.enabled = true;
            GUILayout.BeginHorizontal();
            GUI.enabled = siteName.Length > 0;
            if (GUILayout.Button("Save", GUILayout.Width(115), GUILayout.Height(23)))
            {
                bool addToDB = false;
                if (!selectedObject.hasLauchSites)
                {
                    Log.Normal("Creating LaunchSite");
                    LaunchSite lsite = new LaunchSite();
                    selectedObject.launchSite = lsite;
                    Log.Normal("created; lsite = " + lsite + "; launch site = " + selectedObject.launchSite);
                    selectedObject.hasLauchSites   = true;
                    lsite.parentInstance           = selectedObject;
                    selectedObject.launchSite.body = selectedObject.CelestialBody;
                    addToDB = true;
                }

                string oldName     = selectedObject.launchSite.LaunchSiteName;
                string oldCategory = selectedObject.launchSite.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.RecoveryFactor     = float.Parse(stRecoveryFactor);
                selectedObject.launchSite.RecoveryRange      = float.Parse(stRecoveryRange);
                selectedObject.launchSite.LaunchRefund       = float.Parse(stLaunchRefund);
                selectedObject.launchSite.OpenCloseState     = "Open";
                selectedObject.launchSite.Category           = siteCategory;
                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;

                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 != null && !oldCategory.Equals(siteCategory))
                    {
                        ILSConfig.HandleCategoryChange(selectedObject.launchSite.Category,
                                                       siteCategory, 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.name, true);
                        }
                    }
                }


                if (addToDB)
                {
                    KerbalKonstructs.instance.SaveInstanceByCfg(selectedObject.configPath);
                    LaunchSiteManager.RegisterLaunchSite(selectedObject.launchSite);
                }
                KerbalKonstructs.instance.SaveInstanceByCfg(selectedObject.configPath);
                this.Close();
            }
            GUI.enabled = true;
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Cancel", GUILayout.Width(115), GUILayout.Height(23)))
            {
                this.Close();
            }
            GUILayout.EndHorizontal();

            GUILayout.Label("NOTE: If a newly created launchsite object does not display when launched from, a restart of KSP will be required for the site to be correctly rendered.");

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

            GUILayout.Space(2);

            GUI.DragWindow(new Rect(0, 0, 10000, 10000));
        }
コード例 #16
0
        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);
                    }
                }
            }
        }
コード例 #17
0
        public void drawGroundComms(StaticObject obj, LaunchSite lSite = null)
        {
            string     Base   = "";
            string     Base2  = "";
            float      Range  = 0f;
            LaunchSite lBase  = null;
            LaunchSite lBase2 = null;
            Vector3    pos    = Vector3.zero;

            if (lSite != null)
            {
                GameObject golSite = lSite.GameObject;
                pos = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(golSite.transform.position));
                LaunchSiteManager.getNearestBase(golSite.transform.position, out Base, out Base2, out Range, out lBase, out lBase2);
            }

            if (obj != null)
            {
                pos = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(obj.gameObject.transform.position));
                LaunchSiteManager.getNearestBase(obj.gameObject.transform.position, out Base, out Base2, out Range, out lBase, out lBase2);
            }

            Vector3 vNeighbourPos  = Vector3.zero;
            Vector3 vNeighbourPos2 = Vector3.zero;
            Vector3 vBasePos       = Vector3.zero;
            Vector3 vBasePos2      = Vector3.zero;

            GameObject goNeighbour  = null;
            GameObject goNeighbour2 = null;

            if (Base != "")
            {
                if (Base == "KSC")
                {
                    goNeighbour = SpaceCenterManager.KSC.gameObject;
                }
                else
                {
                    goNeighbour = LaunchSiteManager.getSiteGameObject(Base);
                }
            }

            if (Base2 != "")
            {
                if (Base2 == "KSC")
                {
                    goNeighbour2 = SpaceCenterManager.KSC.gameObject;
                }
                else
                {
                    goNeighbour2 = LaunchSiteManager.getSiteGameObject(Base2);
                }
            }

            if (goNeighbour != null)
            {
                vNeighbourPos = goNeighbour.transform.position;
                vBasePos      = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(vNeighbourPos));
            }

            if (goNeighbour2 != null)
            {
                vNeighbourPos2 = goNeighbour2.transform.position;
                vBasePos2      = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(vNeighbourPos2));
            }

            if (goNeighbour != null && vNeighbourPos != Vector3.zero && vBasePos != Vector3.zero)
            {
                NavUtils.CreateLineMaterial(1);

                GL.Begin(GL.LINES);
                NavUtils.lineMaterial1.SetPass(0);
                GL.Color(new Color(1f, 1f, 1f, 0.7f));
                GL.Vertex3(pos.x - Screen.width / 2, pos.y - Screen.height / 2, pos.z);
                GL.Vertex3(vBasePos.x - Screen.width / 2, vBasePos.y - Screen.height / 2, vBasePos.z);
                GL.End();
            }

            if (goNeighbour2 != null && vNeighbourPos2 != Vector3.zero && vBasePos2 != Vector3.zero)
            {
                NavUtils.CreateLineMaterial(2);

                GL.Begin(GL.LINES);
                NavUtils.lineMaterial2.SetPass(0);
                GL.Color(new Color(1f, 1f, 1f, 0.7f));
                GL.Vertex3(pos.x - Screen.width / 2, pos.y - Screen.height / 2, pos.z);
                GL.Vertex3(vBasePos2.x - Screen.width / 2, vBasePos2.y - Screen.height / 2, vBasePos2.z);
                GL.End();
            }
        }
コード例 #18
0
        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));
        }
コード例 #19
0
 public static void setSelectedSite(LaunchSite soSite)
 {
     selectedSite = soSite;
 }
コード例 #20
0
        public static LaunchSite getSelectedSite()
        {
            LaunchSite thisSite = selectedSite;

            return(thisSite);
        }
コード例 #21
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;
                    }
                }
            }
        }
コード例 #22
0
        public void DrawLaunchsites()
        {
            displayingTooltip = false;
            LaunchSite    launchSite;
            CelestialBody body = PlanetariumCamera.fetch.target.GetReferenceBody();
            string        category;
            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;
                category = launchSite.Category;

                if (!KerbalKonstructs.instance.mapShowHelipads && category == "Helipad")
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowOther && (category == "Other"))
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowWaterLaunch && (category == "Waterlaunch"))
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad")
                {
                    continue;
                }
                if (!KerbalKonstructs.instance.mapShowRunways && category == "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;
                    }
                }

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

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

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

                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;


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

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

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

                        case "Waterlaunch":
                            GUI.DrawTexture(screenRect, UIMain.waterLaunchIcon, 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 = launchSite.LaunchSiteName;
                    if (launchSite.LaunchSiteName == "Runway")
                    {
                        sToolTip = "KSC Runway";
                    }
                    if (launchSite.LaunchSiteName == "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(launchSite);
                        selectedSite = launchSite;
                        NavGuidanceSystem.setTargetSite(selectedSite);
                        BaseManager.instance.Open();
                    }
                }
            }
        }