// [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)); }
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); }
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); }
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); }
// [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)); }
//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); }
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); } }
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); }
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 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 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); }
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); } } }
public static void setTargetSite(LaunchSite lsTarget, string sName = "") { lTargetSite = lsTarget; }
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(); }
/// <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)); }
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 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(); } }
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)); }
public static void setSelectedSite(LaunchSite soSite) { selectedSite = soSite; }
public static LaunchSite getSelectedSite() { LaunchSite thisSite = selectedSite; return(thisSite); }
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; } } } }
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(); } } } }