// Returns a specific Launchsite, keyed by site.name public static LaunchSite getLaunchSiteByName(string sSiteName, bool bRemember = false) { if (bRemember) { if (sBaseMem == sSiteName) { return(launchsitemem); } } List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { if (bRemember) { sBaseMem = sSiteName; launchsitemem = site; } return(site); } } return(null); }
// Returns whether a site is closed public static bool getIsSiteClosed(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { return(!site.isOpen); } } return(false); }
// Lock a launchsite so it cannot be opened or closed or launched from public static void setSiteLocked(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { site.OpenCloseState = site.OpenCloseState + "Locked"; return; } } }
// Returns if a launchsite exists. Hook used by KerKonConConExt public static bool checkLaunchSiteExists(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { return(true); } } return(false); }
// Returns the GameObject of a site public static GameObject getSiteGameObject(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { return(site.lsGameObject); } } return(null); }
// Returns the launch refund percentage of a site public static void getSiteLaunchRefund(string sSiteName, out float fRefund) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { fRefund = site.LaunchRefund; return; } } fRefund = 0; }
// Returns whether a site is locked public static bool getIsSiteLocked(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { if (site.OpenCloseState == "OpenLocked" || site.OpenCloseState == "ClosedLocked") { return(true); } } } return(false); }
// Returns whether a site is open or closed and how much it costs to open public static void getSiteOpenCloseState(string sSiteName, out string sOpenCloseState, out float fOpenCost) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { sOpenCloseState = site.OpenCloseState; fOpenCost = site.OpenCost; return; } } sOpenCloseState = "Open"; fOpenCost = 0; }
//// Closes all launchsites. Necessary when leaving a career game and going to the main menu //public static void setAllLaunchsitesClosed() //{ // List<LaunchSite> sites = LaunchSiteManager.getLaunchSites(); // foreach (LaunchSite site in sites) // { // site.OpenCloseState = "Closed"; // } //} // Returns the distance in m from a position to a specified Launchsite public static float getDistanceToBase(Vector3 position, LaunchSite lTarget) { float flRange = 0f; List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site == lTarget) { var radialposition = site.lsGameObject.transform.position; var dist = Vector3.Distance(position, radialposition); flRange = dist; } } return(flRange); }
// Unlock a launchsite so it can be opened or closed or launched from public static void setSiteUnlocked(string sSiteName) { List <LaunchSite> sites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in sites) { if (site.LaunchSiteName == sSiteName) { if (site.OpenCloseState == "OpenLocked") { site.OpenCloseState = "Open"; } else { site.OpenCloseState = "Closed"; } return; } } }
// Returns the nearest Launchsite to a position and range in m to the Launchsite, regardless of whether it is open or closed public static void getNearestBase(Vector3 position, out string sBase, out string sBase2, out float flRange, out LaunchSite lSite, out LaunchSite lSite2) { SpaceCenter KSC = SpaceCenter.Instance; var smallestDist = Vector3.Distance(KSC.gameObject.transform.position, position); var lastSmallestDist = Vector3.Distance(KSC.gameObject.transform.position, position); string sNearestBase = ""; LaunchSite lTargetSite = null; LaunchSite lLastSite = null; LaunchSite lKSC = null; string sLastNearest = ""; List <LaunchSite> basesites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in basesites) { if (site.lsGameObject == null) { continue; } var radialposition = site.lsGameObject.transform.position; var dist = Vector3.Distance(position, radialposition); if (radialposition == position) { continue; } if (site.LaunchSiteName == "Runway" || site.LaunchSiteName == "LaunchPad") { lKSC = site; } else { if ((float)dist < (float)smallestDist) { sLastNearest = sNearestBase; lLastSite = lTargetSite; lastSmallestDist = smallestDist; sNearestBase = site.LaunchSiteName; smallestDist = dist; lTargetSite = site; } else if (dist < lastSmallestDist) { sLastNearest = site.LaunchSiteName; lastSmallestDist = dist; lLastSite = site; } } } if (sNearestBase == "") { sNearestBase = "KSC"; lTargetSite = lKSC; } if (sLastNearest == "") { sLastNearest = "KSC"; lLastSite = lKSC; } rangeNearestBase = (float)smallestDist; sBase = sNearestBase; sBase2 = sLastNearest; flRange = rangeNearestBase; lSite = lTargetSite; lSite2 = lLastSite; }
// Returns the nearest open Launchsite to a position and range to the Launchsite in m // The basic ATC feature is in here for now public static void GetNearestOpenBase(Vector3 position, out string sBase, out float flRange, out LaunchSite lNearest) { SpaceCenter KSC = SpaceCenter.Instance; var smallestDist = Vector3.Distance(KSC.gameObject.transform.position, position); string sNearestBase = ""; LaunchSite lNearestBase = null; LaunchSite lKSC = null; List <LaunchSite> basesites = LaunchSiteManager.getLaunchSites(); foreach (LaunchSite site in basesites) { if (site.isOpen) { var radialposition = site.lsGameObject.transform.position; var dist = Vector3.Distance(position, radialposition); if (site.LaunchSiteName == "Runway") { if (lNearestBase == null) { lNearestBase = site; } lKSC = site; } else if (site.LaunchSiteName != "LaunchPad") { if ((float)dist < (float)smallestDist) { { sNearestBase = site.LaunchSiteName; lNearestBase = site; smallestDist = dist; } } } else { lKSC = site; } } } if (sNearestBase == "") { sNearestBase = "KSC"; lNearestBase = lKSC; } rangeNearestOpenBase = (float)smallestDist; // Air traffic control messaging if (LandingGuideUI.instance.IsOpen()) { if (sNearestBase != nearestOpenBase) { if (rangeNearestOpenBase < 25000) { nearestOpenBase = sNearestBase; MessageSystemButton.MessageButtonColor color = MessageSystemButton.MessageButtonColor.BLUE; MessageSystem.Message m = new MessageSystem.Message("KK ATC", "You have entered the airspace of " + sNearestBase + " ATC. Please keep this channel open and obey all signal lights. Thank you. " + sNearestBase + " Air Traffic Control out.", color, MessageSystemButton.ButtonIcons.MESSAGE); MessageSystem.Instance.AddMessage(m); } else if (nearestOpenBase != "") { // you have left ... MessageSystemButton.MessageButtonColor color = MessageSystemButton.MessageButtonColor.GREEN; MessageSystem.Message m = new MessageSystem.Message("KK ATC", "You are now leaving the airspace of " + sNearestBase + ". Safe journey. " + sNearestBase + " Air Traffic Control out.", color, MessageSystemButton.ButtonIcons.MESSAGE); MessageSystem.Instance.AddMessage(m); nearestOpenBase = ""; } } } sBase = sNearestBase; flRange = rangeNearestOpenBase; lNearest = lNearestBase; }