public void ToggleSK() { VesselData.UpdateStationKeeping(this.vessel, VesselData.FetchStationKeeping(vessel)); stationKeepData.IsStationKeeping = !stationKeepData.IsStationKeeping; updatedisplayedData(); }
public void InformationTab() { GUILayout.BeginHorizontal(); GUI.skin.label.fontSize = 16; GUI.skin.label.alignment = TextAnchor.MiddleCenter; GUILayout.Label("Vessel Information", GUILayout.Width(290)); GUI.skin.label.alignment = TextAnchor.MiddleLeft; GUI.skin.label.fontSize = 12; GUILayout.EndHorizontal(); GUILayout.BeginVertical(); // 1.5.2 Filtering // GUILayout.Space(3); GUILayout.BeginHorizontal(); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/R&D_node_icon_unmannedtech", false))) { if (FilterTypes.Contains(VesselType.Probe)) { FilterTypes.Remove(VesselType.Probe); } else { FilterTypes.Add(VesselType.Probe); } } GUILayout.Space(3); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/R&D_node_icon_advunmanned", false))) { if (FilterTypes.Contains(VesselType.Relay)) { FilterTypes.Remove(VesselType.Relay); } else { FilterTypes.Add(VesselType.Relay); } } GUILayout.Space(3); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/RDicon_commandmodules", false))) { if (FilterTypes.Contains(VesselType.Ship)) { FilterTypes.Remove(VesselType.Ship); } else { FilterTypes.Add(VesselType.Ship); } } GUILayout.Space(3); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/R&D_node_icon_specializedconstruction", false))) { if (FilterTypes.Contains(VesselType.Station)) { FilterTypes.Remove(VesselType.Station); } else { FilterTypes.Add(VesselType.Station); } } GUILayout.Space(3); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/RDicon_telescope", false))) { if (FilterTypes.Contains(VesselType.SpaceObject)) { FilterTypes.Remove(VesselType.SpaceObject); } else { FilterTypes.Add(VesselType.SpaceObject); } if (FilterTypes.Contains(VesselType.Unknown)) { FilterTypes.Remove(VesselType.Unknown); } else { FilterTypes.Add(VesselType.Unknown); } } GUILayout.Space(3); if (GUILayout.Button(GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/R&D_node_icon_composites", false))) { if (FilterTypes.Contains(VesselType.Debris)) { FilterTypes.Remove(VesselType.Debris); } else { FilterTypes.Add(VesselType.Debris); } } GUILayout.Space(3); GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.Label("_______________________________________"); GUILayout.EndVertical(); scrollPosition1 = GUILayout.BeginScrollView(scrollPosition1, GUILayout.Width(290), GUILayout.Height(350)); bool Realistic = Settings.ReadRD(); var ClockType = Settings.Read24Hr(); //151var Resource = Settings.ReadStationKeepingResource(); foreach (Vessel vessel in FlightGlobals.Vessels) { if (FilterTypes.Contains(vessel.vesselType)) { if (vessel.situation == Vessel.Situations.ORBITING) { var StationKeeping = VesselData.FetchStationKeeping(vessel).ToString(); var StationKeepingFuelRemaining = ResourceManager.GetResources(vessel).ToString("F3"); var Resource = ResourceManager.GetResourceNames(vessel); var ButtonText = ""; var HoursInDay = 6.0; double DaysInYear = 0; bool KerbinTime = GameSettings.KERBIN_TIME; if (KerbinTime == true) { DaysInYear = 9203545 / (60 * 60 * HoursInDay); } else { DaysInYear = 31557600 / (60 * 60 * HoursInDay); } if (StationKeeping == "True") { ButtonText = "Disable Station Keeping"; } else { ButtonText = "Enable Station Keeping"; } if (ClockType == true) { HoursInDay = 24.0; } else { HoursInDay = 6.0; } GUILayout.BeginVertical(); // GUILayout.Label("Vessels count" + VesselData.VesselInformation.CountNodes.ToString()); GUILayout.Label("Vessel Name: " + vessel.vesselName); // GUILayout.Label("Vessel Area: " + VesselData.FetchArea(vessel).ToString()); // GUILayout.Label("Vessel Mass: " + VesselData.FetchMass(vessel).ToString()); GUILayout.Space(2); GUILayout.Label("Orbiting Body: " + vessel.orbitDriver.orbit.referenceBody.GetName()); GUILayout.Space(2); if (StationKeeping == "True") { GUILayout.Label("Current Total Decay Rate: Vessel is Station Keeping"); GUILayout.Space(2); } else { double TotalDecayRatePerSecond = Math.Abs(DecayManager.DecayRateAtmosphericDrag(vessel)) + Math.Abs(DecayManager.DecayRateRadiationPressure(vessel)) + Math.Abs(DecayManager.DecayRateYarkovskyEffect(vessel)); //+ Math.Abs(DecayManager.DecayRateGravitationalPertubation(vessel)); double ADDR = DecayManager.DecayRateAtmosphericDrag(vessel); double GPDR = DecayManager.DecayRateGravitationalPertubation(vessel); double PRDR = DecayManager.DecayRateRadiationPressure(vessel); double YEDR = DecayManager.DecayRateYarkovskyEffect(vessel); GUILayout.Label("Current Total Decay Rate: " + FormatDecayRateToString(TotalDecayRatePerSecond)); GUILayout.Space(2); if (GUILayout.Button("Toggle Decay Rate Breakdown")) // Display a new window here? { subwindowVessel = vessel; DecayBreakdownVisible = !DecayBreakdownVisible; } // 1.7.0 maybe? if (Settings.ReadNB()) { GUILayout.Space(2); if (GUILayout.Button("Toggle NBody Breakdown")) // New Window for NBody { subwindowVessel = vessel; NBodyVesselAccelTimes.Clear(); NBodyBreakdownVisible = !NBodyBreakdownVisible; } } GUILayout.Space(2); double TimeUntilDecayInUnits = 0.0; string TimeUntilDecayInDays = ""; if (ADDR != 0) { TimeUntilDecayInUnits = DecayManager.DecayTimePredictionExponentialsVariables(vessel); TimeUntilDecayInDays = FormatTimeUntilDecayInDaysToString(TimeUntilDecayInUnits); } else { TimeUntilDecayInUnits = DecayManager.DecayTimePredictionLinearVariables(vessel); TimeUntilDecayInDays = FormatTimeUntilDecayInSecondsToString(TimeUntilDecayInUnits); } GUILayout.Label("Approximate Time Until Decay: " + TimeUntilDecayInDays); GUILayout.Space(2); } GUILayout.Label("Station Keeping: " + StationKeeping); GUILayout.Space(2); GUILayout.Label("Station Keeping Fuel Remaining: " + StationKeepingFuelRemaining); GUILayout.Space(2); GUILayout.Label("Using Fuel Type: " + Resource); //151 GUILayout.Space(2); //151 if (StationKeeping == "True") { double DecayRateSKL = 0; DecayRateSKL = DecayManager.DecayRateAtmosphericDrag(vessel) + DecayManager.DecayRateRadiationPressure(vessel) + DecayManager.DecayRateYarkovskyEffect(vessel); double StationKeepingLifetime = (double.Parse(StationKeepingFuelRemaining) / ((DecayRateSKL / TimeWarp.CurrentRate) * VesselData.FetchEfficiency(vessel) /*ResourceManager.GetEfficiency(Resource)*/ * Settings.ReadResourceRateDifficulty())) / (60 * 60 * HoursInDay); if (StationKeepingLifetime < -5) // SRP Fixes { GUILayout.Label("Station Keeping Fuel Lifetime: > 1000 years."); } else { if (StationKeepingLifetime > 365000 && HoursInDay == 24) { GUILayout.Label("Station Keeping Fuel Lifetime: > 1000 years."); } else if (StationKeepingLifetime > 425000 && HoursInDay == 6) { GUILayout.Label("Station Keeping Fuel Lifetime: > 1000 years."); } else { if (StationKeepingLifetime > 425 && HoursInDay == 6) { GUILayout.Label("Station Keeping Fuel Lifetime: " + (StationKeepingLifetime / 425).ToString("F1") + " years."); } else if (StationKeepingLifetime > 365 && HoursInDay == 24) { GUILayout.Label("Station Keeping Fuel Lifetime: " + (StationKeepingLifetime / 365).ToString("F1") + " years."); } else { GUILayout.Label("Station Keeping Fuel Lifetime: " + StationKeepingLifetime.ToString("F1") + " days."); } } } GUILayout.Space(3); } if (GUILayout.Button(ButtonText)) { if (StationKeeping == "True") { VesselData.UpdateStationKeeping(vessel, false); ScreenMessages.PostScreenMessage("Vessel: " + vessel.vesselName + (": Station Keeping Disabled")); } if (StationKeeping == "False") { if (StationKeepingManager.EngineCheck(vessel) == true) { if ((double.Parse(StationKeepingFuelRemaining) > 0.01)) // Good enough... { VesselData.UpdateStationKeeping(vessel, true); ScreenMessages.PostScreenMessage("Vessel: " + vessel.vesselName + (": Station Keeping Enabled")); } else { ScreenMessages.PostScreenMessage("Vessel: " + vessel.vesselName + (" has no fuel to Station Keep!")); } } else { ScreenMessages.PostScreenMessage("Vessel: " + vessel.vesselName + (" has no Engines or RCS modules on board!")); } } } GUILayout.Space(2); GUILayout.Label("_____________________________________"); GUILayout.Space(3); GUILayout.EndVertical(); } } } GUILayout.EndScrollView(); }