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); } }
public void drawIcons() { displayingTooltip = false; MapObject target = PlanetariumCamera.fetch.target; if (target.type == MapObject.MapObjectType.CELESTIALBODY) { // Do tracking stations first foreach (StaticObject obj in KerbalKonstructs.instance.getStaticDB().getAllStatics()) { bool display2 = false; if ((string)obj.getSetting("FacilityType") == "TrackingStation") { if (!isOccluded(obj.gameObject.transform.position, target.celestialBody)) { if (MiscUtils.isCareerGame()) { //PersistenceUtils.loadStaticPersistence(obj); string openclosed2 = (string)obj.getSetting("OpenCloseState"); // To do manage open and close state of tracking stations if (KerbalKonstructs.instance.mapShowOpenT) // && openclosed == "Open") { display2 = true; } if (!KerbalKonstructs.instance.mapShowClosed && openclosed2 == "Closed") { display2 = false; } if (!KerbalKonstructs.instance.mapShowOpen && openclosed2 == "Open") { display2 = false; } } else { // Not a career game } if (display2) { Vector3 pos = MapView.MapCamera.camera.WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(obj.gameObject.transform.position)); Rect screenRect2 = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16); Graphics.DrawTexture(screenRect2, TrackingStationIcon); if (screenRect2.Contains(Event.current.mousePosition) && !displayingTooltip) { CelestialBody cPlanetoid = (CelestialBody)obj.getSetting("CelestialBody"); var objectpos2 = cPlanetoid.transform.InverseTransformPoint(obj.gameObject.transform.position); var dObjectLat2 = NavUtils.GetLatitude(objectpos2); var dObjectLon2 = NavUtils.GetLongitude(objectpos2); var disObjectLat2 = dObjectLat2 * 180 / Math.PI; var disObjectLon2 = dObjectLon2 * 180 / Math.PI; if (disObjectLon2 < 0) { disObjectLon2 = disObjectLon2 + 360; } //Only display one tooltip at a time displayMapIconToolTip("Tracking Station " + "\n(Lat." + disObjectLat2.ToString("#0.00") + "/ Lon." + disObjectLon2.ToString("#0.00") + ")", pos); // TO DO Display Lat and Lon in tooltip too if (Event.current.type == EventType.mouseDown && Event.current.button == 0) { //MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3); Debug.Log("KK: Selected station in map"); float sTrackAngle = (float)obj.getSetting("TrackingAngle"); Debug.Log("KK: Before save load " + sTrackAngle.ToString()); float sTrackRange = (float)obj.getSetting("TrackingShort"); Debug.Log("KK: Before save load " + sTrackRange.ToString()); //PersistenceUtils.saveStaticPersistence(obj); PersistenceUtils.loadStaticPersistence(obj); float sTrackAngle2 = (float)obj.getSetting("TrackingAngle"); Debug.Log("KK: After save load " + sTrackAngle2.ToString()); float sTrackRange2 = (float)obj.getSetting("TrackingShort"); Debug.Log("KK: After save load " + sTrackRange2.ToString()); selectedFacility = obj; FacilityManager.setSelectedFacility(obj); KerbalKonstructs.instance.showFacilityManager = true; //EditorGUI.setTargetSite(selectedSite); } } else { // Mouse is not over tooltip } } else { // Filter set to not display } } else { // is occluded } } else { // Not a tracking station } } //end foreach // Then do launchsites List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { bool display = false; PSystemSetup.SpaceCenterFacility facility = PSystemSetup.Instance.GetSpaceCenterFacility(site.name); if (facility != null) { PSystemSetup.SpaceCenterFacility.SpawnPoint sp = facility.GetSpawnPoint(site.name); if (sp != null) { if (facility.facilityPQS == target.celestialBody.pqsController) { if (!isOccluded(sp.GetSpawnPointTransform().position, target.celestialBody)) { Vector3 pos = MapView.MapCamera.camera.WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(sp.GetSpawnPointTransform().position)); Rect screenRect = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16); string openclosed = site.openclosestate; string category = site.category; if (KerbalKonstructs.instance.mapShowHelipads && category == "Helipad") { display = true; } if (KerbalKonstructs.instance.mapShowOther && category == "Other") { display = true; } if (KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad") { display = true; } if (KerbalKonstructs.instance.mapShowRunways && category == "Runway") { display = true; } if (display && MiscUtils.isCareerGame()) { if (!KerbalKonstructs.instance.mapShowOpen && openclosed == "Open") { display = false; } if (!KerbalKonstructs.instance.mapShowClosed && openclosed == "Closed") { display = false; } if (KerbalKonstructs.instance.disableDisplayClosed && openclosed == "Closed") { display = false; } } if (display) { if (site.icon != null) { Graphics.DrawTexture(screenRect, site.icon); } else { switch (site.type) { case SiteType.VAB: Graphics.DrawTexture(screenRect, VABIcon); break; case SiteType.SPH: Graphics.DrawTexture(screenRect, SPHIcon); break; default: Graphics.DrawTexture(screenRect, ANYIcon); break; } } // Tooltip if (screenRect.Contains(Event.current.mousePosition) && !displayingTooltip) { //Only display one tooltip at a time string sToolTip = ""; sToolTip = site.name; if (site.name == "Runway") { sToolTip = "KSC Runway"; } if (site.name == "LaunchPad") { sToolTip = "KSC LaunchPad"; } displayMapIconToolTip(sToolTip, pos); // Select a base by clicking on the icon if (Event.current.type == EventType.mouseDown && Event.current.button == 0) { MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3); BaseManager.setSelectedSite(site); selectedSite = site; NavGuidanceSystem.setTargetSite(selectedSite); KerbalKonstructs.instance.showBaseManager = true; } } } } } } } } } }
public void drawKKSettingsWindow(int WindowID) { DeadButton = new GUIStyle(GUI.skin.button); DeadButton.normal.background = null; DeadButton.hover.background = null; DeadButton.active.background = null; DeadButton.focused.background = null; DeadButton.normal.textColor = Color.white; DeadButton.hover.textColor = Color.white; DeadButton.active.textColor = Color.white; DeadButton.focused.textColor = Color.white; DeadButton.fontSize = 14; DeadButton.fontStyle = FontStyle.Bold; DeadButtonRed = new GUIStyle(GUI.skin.button); DeadButtonRed.normal.background = null; DeadButtonRed.hover.background = null; DeadButtonRed.active.background = null; DeadButtonRed.focused.background = null; DeadButtonRed.normal.textColor = Color.red; DeadButtonRed.hover.textColor = Color.yellow; DeadButtonRed.active.textColor = Color.red; DeadButtonRed.focused.textColor = Color.red; DeadButtonRed.fontSize = 12; DeadButtonRed.fontStyle = FontStyle.Bold; BoxNoBorder = new GUIStyle(GUI.skin.box); BoxNoBorder.normal.background = null; BoxNoBorder.normal.textColor = Color.white; Yellowtext = new GUIStyle(GUI.skin.box); Yellowtext.normal.textColor = Color.yellow; Yellowtext.normal.background = null; LabelInfo = new GUIStyle(GUI.skin.label); LabelInfo.normal.background = null; LabelInfo.normal.textColor = Color.white; LabelInfo.fontSize = 13; LabelInfo.fontStyle = FontStyle.Normal; LabelInfo.padding.left = 3; LabelInfo.padding.top = 0; LabelInfo.padding.bottom = 0; LabelYellow = new GUIStyle(GUI.skin.label); LabelYellow.normal.background = null; LabelYellow.normal.textColor = Color.yellow; LabelYellow.fontSize = 13; LabelYellow.fontStyle = FontStyle.Bold; LabelYellow.padding.left = 3; LabelYellow.padding.top = 0; LabelYellow.padding.bottom = 0; GUILayout.BeginHorizontal(); { GUI.enabled = false; GUILayout.Button("-KK-", DeadButton, GUILayout.Height(16)); GUILayout.FlexibleSpace(); GUILayout.Button("Settings", DeadButton, GUILayout.Height(16)); GUILayout.FlexibleSpace(); GUI.enabled = true; if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(16))) { KerbalKonstructs.instance.showSettings = false; } } GUILayout.EndHorizontal(); GUILayout.Space(1); GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); scrollSettings = GUILayout.BeginScrollView(scrollSettings); GUILayout.Box("Default VAB Launchsite"); if (GUILayout.Button("" + KerbalKonstructs.instance.defaultVABlaunchsite, GUILayout.Height(23))) { bChangeVABDefault = true; } if (bChangeVABDefault) { if (sites == null) { sites = LaunchSiteManager.getLaunchSites(); } sites.Sort(delegate(LaunchSite a, LaunchSite b) { return((a.name).CompareTo(b.name)); }); GUILayout.Label("Select a default site from the list that follows.", LabelInfo); foreach (LaunchSite site in sites) { if (MiscUtils.isCareerGame()) { if (site.openclosestate != "Open" && site.opencost != 0) { continue; } } if (!KerbalKonstructs.instance.launchFromAnySite) { if (site.type == SiteType.SPH) { continue; } } string sButtonName = ""; sButtonName = site.name; if (site.name == "Runway") { sButtonName = "KSC Runway"; } if (site.name == "LaunchPad") { sButtonName = "KSC LaunchPad"; } if (GUILayout.Button(sButtonName, GUILayout.Height(21))) { KerbalKonstructs.instance.defaultVABlaunchsite = site.name; bChangeVABDefault = false; } } if (GUILayout.Button("CANCEL - NO CHANGE", GUILayout.Height(21))) { bChangeVABDefault = false; } } GUILayout.Box("Default SPH Launchsite"); if (GUILayout.Button("" + KerbalKonstructs.instance.defaultSPHlaunchsite, GUILayout.Height(23))) { bChangeSPHDefault = true; } if (bChangeSPHDefault) { if (sites == null) { sites = LaunchSiteManager.getLaunchSites(); } sites.Sort(delegate(LaunchSite a, LaunchSite b) { return((a.name).CompareTo(b.name)); }); GUILayout.Label("Select a default site from the list that follows.", LabelInfo); foreach (LaunchSite site in sites) { if (MiscUtils.isCareerGame()) { if (site.openclosestate != "Open" && site.opencost != 0) { continue; } } if (!KerbalKonstructs.instance.launchFromAnySite) { if (site.type == SiteType.VAB) { continue; } } string sButtonName = ""; sButtonName = site.name; if (site.name == "Runway") { sButtonName = "KSC Runway"; } if (site.name == "LaunchPad") { sButtonName = "KSC LaunchPad"; } if (GUILayout.Button(sButtonName, GUILayout.Height(21))) { KerbalKonstructs.instance.defaultSPHlaunchsite = site.name; bChangeSPHDefault = false; } } if (GUILayout.Button("CANCEL - NO CHANGE", GUILayout.Height(21))) { bChangeSPHDefault = false; } } GUILayout.Space(3); GUILayout.Box("General Settings"); GUILayout.Label("Does launching from the VAB or SPH limit the type of launchsite that can be used?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.launchFromAnySite) { if (GUILayout.Button("Launch From Any Site", GUILayout.Height(23))) { KerbalKonstructs.instance.launchFromAnySite = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Launch From Any Site", GUILayout.Height(23))) { KerbalKonstructs.instance.launchFromAnySite = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Label("Should the career strategy features of KK be enabled? WARNING: Disabling them in the middle of a career game is not advised!", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.disableCareerStrategyLayer) { if (GUILayout.Button("Disable Career Strategy", GUILayout.Height(23))) { KerbalKonstructs.instance.disableCareerStrategyLayer = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Disable Career Strategy", GUILayout.Height(23))) { KerbalKonstructs.instance.disableCareerStrategyLayer = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Label("Should it be possible to launch from sites other than the KSC?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.disableCustomLaunchsites) { if (GUILayout.Button("Disable Custom Launchsites", GUILayout.Height(23))) { KerbalKonstructs.instance.disableCustomLaunchsites = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Disable Custom Launchsites", GUILayout.Height(23))) { KerbalKonstructs.instance.disableCustomLaunchsites = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Label("Should it only be possible to open bases at the base?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.disableRemoteBaseOpening) { if (GUILayout.Button("Can Only Open Bases at the Base", GUILayout.Height(23))) { KerbalKonstructs.instance.disableRemoteBaseOpening = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Can Only Open Bases at the Base", GUILayout.Height(23))) { KerbalKonstructs.instance.disableRemoteBaseOpening = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Inflight Instruments Defaults"); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.enableATC) { if (GUILayout.Button("ATC Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableATC = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("ATC Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableATC = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.enableNGS) { if (GUILayout.Button("NGS Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableNGS = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("NGS Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableNGS = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.enableDownlink) { if (GUILayout.Button("Downlink Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableDownlink = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Downlink Enabled", GUILayout.Height(23))) { KerbalKonstructs.instance.enableDownlink = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Facility Defaults"); GUILayout.Label("Some facilities require a craft or kerbal to be close to use them.", LabelInfo); GUILayout.BeginHorizontal(); GUILayout.Label("Use Range: " + KerbalKonstructs.instance.facilityUseRange.ToString("#0") + " m", LabelYellow); GUILayout.FlexibleSpace(); sFacilityUseRange = GUILayout.TextField(sFacilityUseRange, 4, GUILayout.Width(70)); GUILayout.Label(" m", LabelYellow); GUILayout.FlexibleSpace(); if (GUILayout.Button("Update", GUILayout.Height(23))) { KerbalKonstructs.instance.facilityUseRange = float.Parse(sFacilityUseRange); if (KerbalKonstructs.instance.facilityUseRange < 1f) { KerbalKonstructs.instance.facilityUseRange = 1f; } if (KerbalKonstructs.instance.facilityUseRange > 5000f) { KerbalKonstructs.instance.facilityUseRange = 5000f; } } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Tracking/Map View Settngs"); GUILayout.Label("Never show the icons of closed launchsites?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.disableDisplayClosed) { if (GUILayout.Button("Never Display Closed Launchsites", GUILayout.Height(23))) { KerbalKonstructs.instance.disableDisplayClosed = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Never Display Closed Launchsites", GUILayout.Height(23))) { KerbalKonstructs.instance.disableDisplayClosed = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Label("Toggle icon display with Base Boss display?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.toggleIconsWithBB) { if (GUILayout.Button("Toggle Icons With Base Boss", GUILayout.Height(23))) { KerbalKonstructs.instance.toggleIconsWithBB = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Toggle Icons With Base Boss", GUILayout.Height(23))) { KerbalKonstructs.instance.toggleIconsWithBB = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Tracking/Map View Defaults"); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowOpen) { if (GUILayout.Button("Show Open Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOpen = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Open Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOpen = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowClosed) { if (GUILayout.Button("Show Closed Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowClosed = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Closed Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowClosed = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowOpenT) { if (GUILayout.Button("Show Tracking Stations", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOpenT = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Tracking Stations", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOpenT = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowHelipads) { if (GUILayout.Button("Show Helipads", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowHelipads = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Helipads", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowHelipads = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowRunways) { if (GUILayout.Button("Show Runways", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowRunways = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Runways", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowRunways = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowRocketbases) { if (GUILayout.Button("Show Rocket Bases", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowRocketbases = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Rocket Bases", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowRocketbases = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.mapShowOther) { if (GUILayout.Button("Show Other Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOther = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Show Other Sites", GUILayout.Height(23))) { KerbalKonstructs.instance.mapShowOther = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Base Recovery Settings"); GUILayout.Label("Should custom bases carry out recovery, or should it only be KSC?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.disableRemoteRecovery) { if (GUILayout.Button("Disable Recovery by Custom Bases", GUILayout.Height(23))) { KerbalKonstructs.instance.disableRemoteRecovery = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Disable Recovery by Custom Bases", GUILayout.Height(23))) { KerbalKonstructs.instance.disableRemoteRecovery = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Base Recovery Capability Defaults"); GUILayout.Label("A percentage of the base amount recovered (modified by distance per KSP functions), IF the recovery is made by a base outside its effective range.", LabelInfo); GUILayout.BeginHorizontal(); GUILayout.Label("Recovery Factor: " + KerbalKonstructs.instance.defaultRecoveryFactor.ToString("#0") + "%", LabelYellow); GUILayout.FlexibleSpace(); sDefaultFactor = GUILayout.TextField(sDefaultFactor, 3, GUILayout.Width(70)); GUILayout.Label("%", LabelYellow); GUILayout.FlexibleSpace(); if (GUILayout.Button("Update", GUILayout.Height(23))) { KerbalKonstructs.instance.defaultRecoveryFactor = float.Parse(sDefaultFactor); if (KerbalKonstructs.instance.defaultRecoveryFactor < 0f) { KerbalKonstructs.instance.defaultRecoveryFactor = 0f; } if (KerbalKonstructs.instance.defaultRecoveryFactor > 100f) { KerbalKonstructs.instance.defaultRecoveryFactor = 100f; } } GUILayout.EndHorizontal(); GUILayout.Label("100% of the base amount is recovered (modified by distance per KSP functions), IF the recovery is made by a base within its effective range.", LabelInfo); GUILayout.BeginHorizontal(); GUILayout.Label("Effective Range: " + KerbalKonstructs.instance.defaultEffectiveRange.ToString("#0") + "m", LabelYellow); GUILayout.FlexibleSpace(); sDefaultRange = GUILayout.TextField(sDefaultRange, 6, GUILayout.Width(70)); GUILayout.Label("m", LabelYellow); GUILayout.FlexibleSpace(); if (GUILayout.Button("Update", GUILayout.Height(23))) { KerbalKonstructs.instance.defaultEffectiveRange = float.Parse(sDefaultRange); if (KerbalKonstructs.instance.defaultEffectiveRange < 1000f) { KerbalKonstructs.instance.defaultEffectiveRange = 1000f; } if (KerbalKonstructs.instance.defaultEffectiveRange > 250000f) { KerbalKonstructs.instance.defaultEffectiveRange = 250000f; } } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Editor Tools Defaults"); GUILayout.BeginHorizontal(); GUILayout.Label("Max Visibility Range: " + KerbalKonstructs.instance.maxEditorVisRange.ToString("#0") + "m", LabelYellow); GUILayout.FlexibleSpace(); sVisRange = GUILayout.TextField(sVisRange, 15, GUILayout.Width(70)); GUILayout.Label(" m", LabelYellow); GUILayout.FlexibleSpace(); if (GUILayout.Button("Update", GUILayout.Height(23))) { KerbalKonstructs.instance.maxEditorVisRange = float.Parse(sVisRange); if (KerbalKonstructs.instance.maxEditorVisRange < 0f) { KerbalKonstructs.instance.maxEditorVisRange = 0f; } if (KerbalKonstructs.instance.maxEditorVisRange > 1000000000000f) { KerbalKonstructs.instance.maxEditorVisRange = 1000000000000f; } } GUILayout.EndHorizontal(); GUILayout.Label("Should a preview of a static model be spawned when editing a model config?", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.spawnPreviewModels) { if (GUILayout.Button("Spawn Preview Static Models", GUILayout.Height(23))) { KerbalKonstructs.instance.spawnPreviewModels = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Spawn Preview Static Models", GUILayout.Height(23))) { KerbalKonstructs.instance.spawnPreviewModels = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Box("Modes"); GUILayout.Label("WARNING: This will lag your game because of additional writes to KSP.log. Do not switch it on unless a developer of the mod asks you to.", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.DebugMode) { if (GUILayout.Button("Debug Mode", GUILayout.Height(23))) { KerbalKonstructs.instance.DebugMode = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Debug Mode", GUILayout.Height(23))) { KerbalKonstructs.instance.DebugMode = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.Label("WARNING: This will enable unfinished features that will NOT WORK properly. They may break your save games. Any changes made to static instances will NOT be tagged as custom and CANNOT be exported.", LabelInfo); GUILayout.BeginHorizontal(); if (!KerbalKonstructs.instance.DevMode) { if (GUILayout.Button("Developer Mode", GUILayout.Height(23))) { KerbalKonstructs.instance.DevMode = true; } GUILayout.Button(tCross, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } else { if (GUILayout.Button("Developer Mode", GUILayout.Height(23))) { KerbalKonstructs.instance.DevMode = false; } GUILayout.Button(tTick, DeadButton, GUILayout.Height(23), GUILayout.Width(23)); } GUILayout.EndHorizontal(); GUILayout.EndScrollView(); GUILayout.Space(2); GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); if (GUILayout.Button("Save Config Settings", GUILayout.Height(23))) { KerbalKonstructs.instance.saveConfig(); } if (GUILayout.Button("Reload Saved Settings", GUILayout.Height(23))) { KerbalKonstructs.instance.loadConfig(); } if (GUILayout.Button("Reset To Factory Settings", GUILayout.Height(23))) { KerbalKonstructs.instance.defaultVABlaunchsite = "LaunchPad"; KerbalKonstructs.instance.defaultSPHlaunchsite = "Runway"; KerbalKonstructs.instance.launchFromAnySite = false; KerbalKonstructs.instance.disableCareerStrategyLayer = false; KerbalKonstructs.instance.disableCustomLaunchsites = false; KerbalKonstructs.instance.disableRemoteBaseOpening = false; KerbalKonstructs.instance.enableATC = true; KerbalKonstructs.instance.enableNGS = true; KerbalKonstructs.instance.enableDownlink = true; KerbalKonstructs.instance.facilityUseRange = 100; KerbalKonstructs.instance.disableDisplayClosed = false; KerbalKonstructs.instance.toggleIconsWithBB = false; KerbalKonstructs.instance.mapShowOpen = true; KerbalKonstructs.instance.mapShowClosed = false; KerbalKonstructs.instance.mapShowOpenT = true; KerbalKonstructs.instance.mapShowHelipads = true; KerbalKonstructs.instance.mapShowRunways = true; KerbalKonstructs.instance.mapShowRocketbases = true; KerbalKonstructs.instance.mapShowOther = false; KerbalKonstructs.instance.disableRemoteRecovery = false; KerbalKonstructs.instance.defaultRecoveryFactor = 50; KerbalKonstructs.instance.defaultEffectiveRange = 100000; KerbalKonstructs.instance.maxEditorVisRange = 100000; KerbalKonstructs.instance.spawnPreviewModels = true; KerbalKonstructs.instance.DebugMode = false; KerbalKonstructs.instance.DevMode = false; KerbalKonstructs.instance.saveConfig(); } GUILayout.Space(2); GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); GUI.DragWindow(new Rect(0, 0, 10000, 10000)); }
public void drawSelectorWindow(int id) { ButtonKK = new GUIStyle(GUI.skin.button); ButtonKK.padding.left = 0; ButtonKK.padding.right = 0; DeadButton = new GUIStyle(GUI.skin.button); DeadButton.normal.background = null; DeadButton.hover.background = null; DeadButton.active.background = null; DeadButton.focused.background = null; DeadButton.normal.textColor = Color.white; DeadButton.hover.textColor = Color.white; DeadButton.active.textColor = Color.white; DeadButton.focused.textColor = Color.white; DeadButton.fontSize = 14; DeadButton.fontStyle = FontStyle.Bold; DeadButtonRed = new GUIStyle(GUI.skin.button); DeadButtonRed.normal.background = null; DeadButtonRed.hover.background = null; DeadButtonRed.active.background = null; DeadButtonRed.focused.background = null; DeadButtonRed.normal.textColor = Color.red; DeadButtonRed.hover.textColor = Color.yellow; DeadButtonRed.active.textColor = Color.red; DeadButtonRed.focused.textColor = Color.red; DeadButtonRed.fontSize = 12; DeadButtonRed.fontStyle = FontStyle.Bold; BoxNoBorder = new GUIStyle(GUI.skin.box); BoxNoBorder.normal.background = null; BoxNoBorder.normal.textColor = Color.white; KKToolTip = new GUIStyle(GUI.skin.box); KKToolTip.normal.textColor = Color.white; KKToolTip.fontSize = 11; KKToolTip.fontStyle = FontStyle.Normal; string smessage = ""; GUILayout.BeginHorizontal(); { GUI.enabled = false; GUILayout.Button("-KK-", DeadButton, GUILayout.Height(21)); GUILayout.FlexibleSpace(); GUILayout.Button("Launchsite Selector", DeadButton, GUILayout.Height(21)); GUILayout.FlexibleSpace(); GUI.enabled = true; if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(21))) { InputLockManager.RemoveControlLock("KKEditorLock"); InputLockManager.RemoveControlLock("KKEditorLock2"); this.Close(); return; } } GUILayout.EndHorizontal(); GUILayout.Space(1); GUILayout.Box(UIMain.tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); GUILayout.BeginHorizontal(); { GUILayout.Space(5); if (MiscUtils.isCareerGame()) { if (bOpenOn) { tHolder = UIMain.tOpenBasesOn; } else { tHolder = UIMain.tOpenBasesOff; } if (GUILayout.Button(new GUIContent(tHolder, "Open"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { if (bOpenOn) { bOpenOn = false; bClosedOn = true; } else { bOpenOn = true; } } if (bClosedOn) { tHolder = UIMain.tClosedBasesOn; } else { tHolder = UIMain.tClosedBasesOff; } if (GUILayout.Button(new GUIContent(tHolder, "Closed"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { if (bClosedOn) { bClosedOn = false; bOpenOn = true; } else { bClosedOn = true; } } GUILayout.FlexibleSpace(); } if (bFavesOnly) { tHolder = tFavesOn; } else { tHolder = tFavesOff; } if (GUILayout.Button(new GUIContent(tHolder, "Only Favourites"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { if (bFavesOnly) { bFavesOnly = false; } else { bFavesOnly = true; } } GUILayout.FlexibleSpace(); if (editorType == SiteType.SPH) { GUI.enabled = false; } if (bRocketpadsOn) { tHolder = UIMain.tLaunchpadsOn; } else { tHolder = UIMain.tLaunchpadsOff; } if (GUILayout.Button(new GUIContent(tHolder, "Rocketpads"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { bRocketpadsOn = true; bHelipadsOn = false; bRunwaysOn = false; bOtherOn = false; waterLaunchOn = false; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "RocketPad"); } GUI.enabled = true; GUILayout.Space(2); if (editorType == SiteType.VAB) { GUI.enabled = false; } if (bRunwaysOn) { tHolder = UIMain.tRunwaysOn; } else { tHolder = UIMain.tRunwaysOff; } if (GUILayout.Button(new GUIContent(tHolder, "Runways"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { bRunwaysOn = true; bHelipadsOn = false; bRocketpadsOn = false; bOtherOn = false; waterLaunchOn = false; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "Runway"); } GUI.enabled = true; GUILayout.Space(2); if (editorType == SiteType.VAB) { GUI.enabled = false; } if (bHelipadsOn) { tHolder = UIMain.tHelipadsOn; } else { tHolder = UIMain.tHelipadsOff; } if (GUILayout.Button(new GUIContent(tHolder, "Helipads"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { bRocketpadsOn = false; bHelipadsOn = true; bRunwaysOn = false; bOtherOn = false; waterLaunchOn = false; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "Helipad"); } GUI.enabled = true; GUILayout.Space(2); if (editorType == SiteType.VAB) { GUI.enabled = false; } if (waterLaunchOn) { tHolder = UIMain.tWaterOn; } else { tHolder = UIMain.tWaterOff; } if (GUILayout.Button(new GUIContent(tHolder, "WalterLaunch"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { bRocketpadsOn = false; bHelipadsOn = false; bRunwaysOn = false; bOtherOn = false; waterLaunchOn = true; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "Waterlaunch"); } GUI.enabled = true; GUILayout.Space(2); if (bOtherOn) { tHolder = UIMain.tOtherOn; } else { tHolder = UIMain.tOtherOff; } if (GUILayout.Button(new GUIContent(tHolder, "Other"), ButtonKK, GUILayout.Width(32), GUILayout.Height(32))) { bRocketpadsOn = false; bHelipadsOn = false; bRunwaysOn = false; bOtherOn = true; waterLaunchOn = false; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "Other"); } GUILayout.FlexibleSpace(); if (GUILayout.Button("ALL", GUILayout.Width(32), GUILayout.Height(32))) { bRocketpadsOn = true; bHelipadsOn = true; bRunwaysOn = true; bOtherOn = true; waterLaunchOn = true; sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "ALL"); } } GUILayout.EndHorizontal(); GUILayout.Space(10); sitesScrollPosition = GUILayout.BeginScrollView(sitesScrollPosition); { if (sites == null) { sites = (editorType == SiteType.Any) ? LaunchSiteManager.getLaunchSites() : LaunchSiteManager.getLaunchSites(editorType, true, "ALL"); } sites.Sort(delegate(LaunchSite a, LaunchSite b) { return((a.LaunchSiteName).CompareTo(b.LaunchSiteName)); }); foreach (LaunchSite site in sites) { if (bFavesOnly) { if (site.favouriteSite != "Yes") { continue; } } if (MiscUtils.isCareerGame()) { if (!bOpenOn) { if (site.isOpen) { continue; } } if (!bClosedOn) { if (!site.isOpen) { continue; } } // Don't show hidden closed Bases if (site.LaunchSiteIsHidden && (!site.isOpen)) { continue; } GUILayout.BeginHorizontal(); if (site.isOpen) { GUILayout.Label(UIMain.tIconOpen, GUILayout.Height(30), GUILayout.Width(30)); } else { GUILayout.Label(UIMain.tIconClosed, GUILayout.Height(30), GUILayout.Width(30)); } } GUI.enabled = !(selectedSite == site); string sButtonName = ""; sButtonName = site.LaunchSiteName; if (site.LaunchSiteName == "Runway") { sButtonName = "KSC Runway"; } if (site.LaunchSiteName == "LaunchPad") { sButtonName = "KSC LaunchPad"; } if (GUILayout.Button(sButtonName, GUILayout.Height(30))) { selectedSite = site; if (!MiscUtils.isCareerGame()) { LaunchSiteManager.setLaunchSite(site); smessage = "Launchsite set to " + sButtonName; MiscUtils.HUDMessage(smessage, 10, 2); } } GUI.enabled = true; if (MiscUtils.isCareerGame()) { if (site.isOpen) { GUILayout.Label(UIMain.tIconOpen, GUILayout.Height(30), GUILayout.Width(30)); } else { GUILayout.Label(UIMain.tIconClosed, GUILayout.Height(30), GUILayout.Width(30)); } GUILayout.EndHorizontal(); } } } GUILayout.EndScrollView(); GUILayout.Space(5); sCurrentSite = LaunchSiteManager.getCurrentLaunchSite(); if (sCurrentSite != null) { if (sCurrentSite == "Runway") { GUILayout.Box("Current Launchsite: KSC Runway"); } else if (sCurrentSite == "LaunchPad") { GUILayout.Box("Current Launchsite: KSC LaunchPad"); } else { GUILayout.Box("Current Launchsite: " + sCurrentSite); } } GUI.enabled = (selectedSite != null && !(selectedSite.LaunchSiteName == sCurrentSite) && LaunchSiteManager.getIsSiteOpen(selectedSite.LaunchSiteName)); GUILayout.BeginHorizontal(); if (GUILayout.Button("Set as Launchsite", GUILayout.Height(46))) { LaunchSiteManager.setLaunchSite(selectedSite); MiscUtils.HUDMessage(selectedSite.LaunchSiteName + " has been set as the launchsite", 10, 0); } GUILayout.EndHorizontal(); GUI.enabled = true; GUILayout.BeginHorizontal(); { if (editorType == SiteType.SPH) { GUI.enabled = (KerbalKonstructs.instance.defaultSPHlaunchsite != sCurrentSite); } if (editorType == SiteType.VAB) { GUI.enabled = (KerbalKonstructs.instance.defaultVABlaunchsite != sCurrentSite); } if (GUILayout.Button("Set as Default", GUILayout.Height(23))) { if (sCurrentSite != null) { if (editorType == SiteType.SPH) { KerbalKonstructs.instance.defaultSPHlaunchsite = sCurrentSite; } if (editorType == SiteType.VAB) { KerbalKonstructs.instance.defaultVABlaunchsite = sCurrentSite; } } } GUI.enabled = true; LaunchSite DefaultSite = null; if (GUILayout.Button("Use Default", GUILayout.Height(23))) { if (editorType == SiteType.SPH) { foreach (LaunchSite site in sites) { if (site.LaunchSiteName == KerbalKonstructs.instance.defaultSPHlaunchsite) { DefaultSite = site; } } if (DefaultSite != null) { if (MiscUtils.isCareerGame()) { if (!DefaultSite.isOpen) { smessage = "Default site is closed."; MiscUtils.HUDMessage(smessage, 10, 0); } else { LaunchSiteManager.setLaunchSite(DefaultSite); } } else { LaunchSiteManager.setLaunchSite(DefaultSite); } } } if (editorType == SiteType.VAB) { foreach (LaunchSite site in sites) { if (site.LaunchSiteName == KerbalKonstructs.instance.defaultVABlaunchsite) { DefaultSite = site; } } if (DefaultSite != null) { if (MiscUtils.isCareerGame()) { if (!DefaultSite.isOpen) { smessage = "Default site is closed."; MiscUtils.HUDMessage(smessage, 10, 0); } else { LaunchSiteManager.setLaunchSite(DefaultSite); } } else { LaunchSiteManager.setLaunchSite(DefaultSite); } } } if (DefaultSite != null) { smessage = DefaultSite.LaunchSiteName + " has been set as the launchsite"; MiscUtils.HUDMessage(smessage, 10, 0); } else { smessage = "KK could not determine the default launchsite."; MiscUtils.HUDMessage(smessage, 10, 0); } } } GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Box(UIMain.tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); GUI.enabled = true; if (selectedSite != null) { BaseManager.setSelectedSite(selectedSite); BaseManager.instance.Open(); } else { if (LaunchSiteManager.getLaunchSites().Count > 0) { selectedSite = LaunchSiteManager.getLaunchSites(editorType)[0]; LaunchSiteManager.setLaunchSite(selectedSite); BaseManager.setSelectedSite(selectedSite); BaseManager.instance.Open(); } else { Log.UserError("ERROR Launch Selector cannot find KSC Runway or Launch Pad! PANIC! Runaway! Hide!"); } } if (GUI.tooltip != "") { var labelSize = GUI.skin.GetStyle("Label").CalcSize(new GUIContent(GUI.tooltip)); GUI.Box(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y + 20, labelSize.x + 5, labelSize.y + 6), GUI.tooltip, KKToolTip); } GUI.DragWindow(new Rect(0, 0, 10000, 10000)); }
public void drawLaunchsites() { displayingTooltip = false; int iPulseRate = 180; CelestialBody body = PlanetariumCamera.fetch.target.GetReferenceBody(); iRadarCounter = iRadarCounter + 1; if (iRadarCounter > iPulseRate) { iRadarCounter = 0; } // Then do launchsites List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); for (int index = 0; index < sites.Count; index++) { LaunchSite site = sites[index]; // don't spam the logfile for the KSC. doesn't work roght now. if (site.name == "Runway" || site.name == "LaunchPad") { continue; } // check if we should display the site or not this is the fastst check, so it shoud be first string openclosed = site.openclosestate; string category = site.category; if (!KerbalKonstructs.instance.mapShowHelipads && category == "Helipad") { continue; } if (!KerbalKonstructs.instance.mapShowOther && category == "Other") { continue; } if (!KerbalKonstructs.instance.mapShowRocketbases && category == "RocketPad") { continue; } if (!KerbalKonstructs.instance.mapShowRunways && category == "Runway") { continue; } if (MiscUtils.isCareerGame()) { if (!KerbalKonstructs.instance.mapShowOpen && openclosed == "Open") { continue; } if (!KerbalKonstructs.instance.mapShowClosed && openclosed == "Closed") { continue; } if (KerbalKonstructs.instance.disableDisplayClosed && openclosed == "Closed") { continue; } if (openclosed == "OpenLocked" || openclosed == "ClosedLocked") { continue; } } PSystemSetup.SpaceCenterFacility facility = PSystemSetup.Instance.GetSpaceCenterFacility(site.name); if (facility == null) { continue; } PSystemSetup.SpaceCenterFacility.SpawnPoint sp = facility.GetSpawnPoint(site.name); if (sp == null) { Log.Error("No Spawn Point found for: " + site.name); continue; } if (facility.facilityPQS != body.pqsController) { Log.Error("No PQS found for: " + site.name); continue; } ; Transform spawnPointTransform = sp.GetSpawnPointTransform(); if (spawnPointTransform == null) { Log.Error("No Spawn PointTransform found for: " + site.name); continue; } if (isOccluded((spawnPointTransform.position), body)) { if (KerbalKonstructs.instance.mapHideIconsBehindBody) { continue; } } Vector3 pos = MapView.MapCamera.GetComponent <Camera>().WorldToScreenPoint(ScaledSpace.LocalToScaledSpace(spawnPointTransform.position)); Rect screenRect = new Rect((pos.x - 8), (Screen.height - pos.y) - 8, 16, 16); // Distance between camera and spawnpoint sort of float fPosZ = pos.z; float fRadarRadius = 12800 / fPosZ; // Log.Warning("fRadarRadius = " + Math.Round(fRadarRadius,2)); float fRadarOffset = fRadarRadius / 2; if (KerbalKonstructs.instance.mapShowRadar) { drawRadar(pos, category, openclosed); } if (openclosed == "Open" && KerbalKonstructs.instance.mapShowGroundComms) { drawGroundComms(null, site); } if (site.icon != null) { if (fRadarRadius > 15) { GUI.DrawTexture(screenRect, site.icon, ScaleMode.ScaleToFit, true); } } else { if (fRadarRadius > 15) { switch (site.type) { case SiteType.VAB: GUI.DrawTexture(screenRect, UIMain.VABIcon, ScaleMode.ScaleToFit, true); break; case SiteType.SPH: GUI.DrawTexture(screenRect, UIMain.SPHIcon, ScaleMode.ScaleToFit, true); break; default: GUI.DrawTexture(screenRect, UIMain.ANYIcon, ScaleMode.ScaleToFit, true); break; } } } // Tooltip if (screenRect.Contains(Event.current.mousePosition) && !displayingTooltip) { //Only display one tooltip at a time string sToolTip = ""; sToolTip = site.name; if (site.name == "Runway") { sToolTip = "KSC Runway"; } if (site.name == "LaunchPad") { sToolTip = "KSC LaunchPad"; } displayMapIconToolTip(sToolTip, pos); // Select a base by clicking on the icon if (Event.current.type == EventType.mouseDown && Event.current.button == 0) { MiscUtils.HUDMessage("Selected base is " + sToolTip + ".", 5f, 3); BaseManager.setSelectedSite(site); selectedSite = site; NavGuidanceSystem.setTargetSite(selectedSite); WindowManager.instance.OpenWindow(KerbalKonstructs.instance.GUI_BaseManager.drawBaseManager); } } } }
public void drawBaseManagerWindow(int windowID) { DeadButton = new GUIStyle(GUI.skin.button); DeadButton.normal.background = null; DeadButton.hover.background = null; DeadButton.active.background = null; DeadButton.focused.background = null; DeadButton.normal.textColor = Color.white; DeadButton.hover.textColor = Color.white; DeadButton.active.textColor = Color.white; DeadButton.focused.textColor = Color.white; DeadButton.fontSize = 14; DeadButton.fontStyle = FontStyle.Bold; DeadButtonRed = new GUIStyle(GUI.skin.button); DeadButtonRed.normal.background = null; DeadButtonRed.hover.background = null; DeadButtonRed.active.background = null; DeadButtonRed.focused.background = null; DeadButtonRed.normal.textColor = Color.red; DeadButtonRed.hover.textColor = Color.yellow; DeadButtonRed.active.textColor = Color.red; DeadButtonRed.focused.textColor = Color.red; DeadButtonRed.fontSize = 12; DeadButtonRed.fontStyle = FontStyle.Bold; Yellowtext = new GUIStyle(GUI.skin.box); Yellowtext.normal.textColor = Color.yellow; Yellowtext.normal.background = null; TextAreaNoBorder = new GUIStyle(GUI.skin.textArea); TextAreaNoBorder.normal.background = null; TextAreaNoBorder.normal.textColor = Color.white; TextAreaNoBorder.fontSize = 12; TextAreaNoBorder.padding.left = 1; TextAreaNoBorder.padding.right = 1; TextAreaNoBorder.padding.top = 4; BoxNoBorder = new GUIStyle(GUI.skin.box); BoxNoBorder.normal.background = null; BoxNoBorder.normal.textColor = Color.white; LabelWhite = new GUIStyle(GUI.skin.label); LabelWhite.normal.background = null; LabelWhite.normal.textColor = Color.white; LabelWhite.fontSize = 12; LabelWhite.padding.left = 1; LabelWhite.padding.right = 1; LabelWhite.padding.top = 4; LabelInfo = new GUIStyle(GUI.skin.label); LabelInfo.normal.background = null; LabelInfo.normal.textColor = Color.white; LabelInfo.fontSize = 13; LabelInfo.fontStyle = FontStyle.Bold; LabelInfo.padding.left = 3; LabelInfo.padding.top = 0; LabelInfo.padding.bottom = 0; KKWindowTitle = new GUIStyle(GUI.skin.box); KKWindowTitle.normal.background = null; KKWindowTitle.normal.textColor = Color.white; KKWindowTitle.fontSize = 14; KKWindowTitle.fontStyle = FontStyle.Bold; SmallButton = new GUIStyle(GUI.skin.button); SmallButton.normal.textColor = Color.red; SmallButton.hover.textColor = Color.white; SmallButton.padding.top = 1; SmallButton.padding.left = 1; SmallButton.padding.right = 1; SmallButton.padding.bottom = 4; SmallButton.normal.background = null; SmallButton.hover.background = null; SmallButton.fontSize = 12; if (!loadedPersistence && MiscUtils.isCareerGame()) { PersistenceFile <LaunchSite> .LoadList(LaunchSiteManager.AllLaunchSites, "LAUNCHSITES", "KK"); loadedPersistence = true; } string sButtonName = ""; sButtonName = selectedSite.name; if (selectedSite.name == "Runway") { sButtonName = "KSC Runway"; } if (selectedSite.name == "LaunchPad") { sButtonName = "KSC LaunchPad"; } GUILayout.BeginHorizontal(); { GUI.enabled = false; GUILayout.Button("-KK-", DeadButton, GUILayout.Height(21)); GUILayout.FlexibleSpace(); GUILayout.Button("Base Manager", DeadButton, GUILayout.Height(21)); GUILayout.FlexibleSpace(); GUI.enabled = true; if (HighLogic.LoadedScene != GameScenes.EDITOR) { if (GUILayout.Button("X", DeadButtonRed, GUILayout.Height(21))) { InputLockManager.RemoveControlLock("KKEditorLock"); selectedSite = null; loadedPersistence = false; KerbalKonstructs.instance.showBaseManager = false; } } } GUILayout.EndHorizontal(); GUILayout.Space(1); GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(2); if (selectedSite.name == "Runway") { GUILayout.Box("KSC Runway", Yellowtext); } else if (selectedSite.name == "LaunchPad") { GUILayout.Box("KSC LaunchPad", Yellowtext); } else { GUILayout.Box("" + selectedSite.name, Yellowtext); } if (!foldedIn) { GUILayout.Space(5); GUILayout.BeginHorizontal(); { GUILayout.Space(2); GUILayout.Box(tVerticalSep, BoxNoBorder, GUILayout.Width(4), GUILayout.Height(135)); GUILayout.FlexibleSpace(); GUILayout.Box(selectedSite.logo, BoxNoBorder, GUILayout.Height(135), GUILayout.Width(135)); GUILayout.FlexibleSpace(); GUILayout.Box(tVerticalSep, BoxNoBorder, GUILayout.Width(4), GUILayout.Height(135)); GUILayout.Space(2); } GUILayout.EndHorizontal(); GUILayout.Space(3); descriptionScrollPosition = GUILayout.BeginScrollView(descriptionScrollPosition, GUILayout.Height(120)); { GUI.enabled = false; GUILayout.Label(selectedSite.description, LabelWhite); GUI.enabled = true; } GUILayout.EndScrollView(); } GUILayout.Space(1); isFavourite = (selectedSite.favouritesite == "Yes"); GUILayout.BeginHorizontal(); { GUI.enabled = (!displayStats); if (GUILayout.Button("Stats", GUILayout.Height(23))) { displayLog = false; displayStats = true; } GUI.enabled = true; GUI.enabled = (!displayLog); if (GUILayout.Button("Log", GUILayout.Height(23))) { displayLog = true; displayStats = false; } GUI.enabled = true; if (isFavourite) { tFaveTemp = tIsFave; } else { tFaveTemp = tMakeFavourite; } if (GUILayout.Button(tFaveTemp, GUILayout.Height(23), GUILayout.Width(23))) { if (isFavourite) { selectedSite.favouritesite = "No"; } else { selectedSite.favouritesite = "Yes"; } List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK"); } if (foldedIn) { tFolded = tFoldOut; } if (!foldedIn) { tFolded = tFoldIn; } if (GUILayout.Button(tFolded, GUILayout.Height(23), GUILayout.Width(23))) { if (foldedIn) { foldedIn = false; } else { foldedIn = true; } } } GUILayout.EndHorizontal(); GUILayout.Space(1); if (displayStats) { GUILayout.Label("Altitude: " + selectedSite.refalt.ToString("#0.0") + " m", LabelInfo); GUILayout.Label("Longitude: " + selectedSite.reflon.ToString("#0.000"), LabelInfo); GUILayout.Label("Latitude: " + selectedSite.reflat.ToString("#0.000"), LabelInfo); GUILayout.Space(3); GUILayout.Label("Length: " + selectedSite.sitelength.ToString("#0" + " m"), LabelInfo); GUILayout.Label("Width: " + selectedSite.sitewidth.ToString("#0" + " m"), LabelInfo); GUILayout.FlexibleSpace(); } iFundsOpen = selectedSite.opencost; iFundsClose = selectedSite.closevalue; bool isAlwaysOpen = false; bool cannotBeClosed = false; if (iFundsOpen == 0) { isAlwaysOpen = true; } if (iFundsClose == 0) { cannotBeClosed = true; } if (MiscUtils.isCareerGame()) { if (displayStats) { if (!KerbalKonstructs.instance.disableRemoteRecovery) { if (selectedSite.recoveryfactor > 0) { GUILayout.Label("Recovery Factor: " + selectedSite.recoveryfactor.ToString() + "%", LabelInfo); if (selectedSite.name != "Runway" && selectedSite.name != "LaunchPad") { if (selectedSite.recoveryrange > 0) { rangekm = selectedSite.recoveryrange / 1000; } else { rangekm = 0; } GUILayout.Label("Effective Range: " + rangekm.ToString() + " km", LabelInfo); } else { GUILayout.Label("Effective Range: Unlimited", LabelInfo); } } else { GUILayout.Label("No Recovery Capability", LabelInfo); } } GUILayout.FlexibleSpace(); GUILayout.Label("Launch Refund: " + selectedSite.launchrefund.ToString() + "%", LabelInfo); } if (displayLog) { logScrollPosition = GUILayout.BeginScrollView(logScrollPosition, GUILayout.Height(120)); { GUILayout.Box("Feature is WIP"); GUILayout.Box("Log Entry"); GUILayout.Box("Log Entry"); GUILayout.Box("Log Entry"); } GUILayout.EndScrollView(); GUILayout.FlexibleSpace(); } isOpen = (selectedSite.openclosestate == "Open"); GUI.enabled = !isOpen; List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); if (!isAlwaysOpen) { if (!KerbalKonstructs.instance.disableRemoteBaseOpening) { if (GUILayout.Button("Open Base for \n" + iFundsOpen + " funds", GUILayout.Height(40))) { double currentfunds = Funding.Instance.Funds; if (iFundsOpen > currentfunds) { MiscUtils.HUDMessage("Insufficient funds to open this base!", 10, 3); } else { selectedSite.openclosestate = "Open"; Funding.Instance.AddFunds(-iFundsOpen, TransactionReasons.Cheating); PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK"); } } } } GUI.enabled = true; GUI.enabled = isOpen; if (!cannotBeClosed) { if (GUILayout.Button("Close Base for \n" + iFundsClose + " funds", GUILayout.Height(40))) { Funding.Instance.AddFunds(iFundsClose, TransactionReasons.Cheating); selectedSite.openclosestate = "Closed"; PersistenceFile <LaunchSite> .SaveList(sites, "LAUNCHSITES", "KK"); } } GUI.enabled = true; GUILayout.FlexibleSpace(); if (HighLogic.LoadedScene == GameScenes.EDITOR) { GUILayout.BeginHorizontal(); { if (selectedSite.name == EditorLogic.fetch.launchSiteName) { tStatusLaunchsite = tSetLaunchsite; } else if (isOpen || isAlwaysOpen) { tStatusLaunchsite = tOpenedLaunchsite; } else { tStatusLaunchsite = tClosedLaunchsite; } GUILayout.Label(tStatusLaunchsite, GUILayout.Height(32), GUILayout.Width(32)); GUI.enabled = (isOpen || isAlwaysOpen) && !(selectedSite.name == EditorLogic.fetch.launchSiteName); if (GUILayout.Button("Set as \nLaunchsite", GUILayout.Height(40))) { LaunchSiteManager.setLaunchSite(selectedSite); string smessage = sButtonName + " has been set as the launchsite"; MiscUtils.HUDMessage(smessage, 10, 0); } GUI.enabled = true; } GUILayout.EndHorizontal(); } } GUILayout.Space(3); GUILayout.Box(tHorizontalSep, BoxNoBorder, GUILayout.Height(4)); GUILayout.Space(1); GUI.DragWindow(new Rect(0, 0, 10000, 10000)); }
/// <summary> /// Caches the launchsites for later use /// </summary> private void CacheLaunchSites() { lauchSites = LaunchSiteManager.getLaunchSites().ToArray(); }
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; } } } }