private static IEnumerator SetSimOrbit(SimulationParams simParams) { yield return(new WaitForEndOfFrame()); KCTDebug.Log($"Moving vessel to orbit. {simParams.SimulationBody.bodyName}:{simParams.SimOrbitAltitude}:{simParams.SimInclination}"); HyperEdit_Utilities.PutInOrbitAround(simParams.SimulationBody, simParams.SimOrbitAltitude, simParams.SimInclination); }
internal IEnumerator AirlaunchRoutine(AirlaunchParams launchParams, Guid vesselId, bool skipCountdown = false) { if (!skipCountdown) { yield return(_wfsTwo); } for (int i = 10; i > 0 && !skipCountdown; i--) { if (FlightGlobals.ActiveVessel == null || FlightGlobals.ActiveVessel.id != vesselId) { ScreenMessages.PostScreenMessage("[KCT] Airlaunch cancelled", 5f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield break; } if (i == 1 && FlightGlobals.ActiveVessel.situation == Vessel.Situations.PRELAUNCH) { // Make sure that the vessel situation transitions from Prelaunch to Landed before airlaunching FlightGlobals.ActiveVessel.situation = Vessel.Situations.LANDED; } ScreenMessages.PostScreenMessage($"[KCT] Launching in {i}...", 1f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield return(_wfsOne); } HyperEdit_Utilities.DoAirlaunch(launchParams); if (Utilities.IsPrincipiaInstalled) { StartCoroutine(ClobberPrincipia()); } }
private IEnumerator AirlaunchRoutine(AirlaunchParams launchParams, Guid vesselId) { yield return(new WaitForSeconds(2)); for (int i = 10; i > 0; i--) { if (FlightGlobals.ActiveVessel == null || FlightGlobals.ActiveVessel.id != vesselId) { ScreenMessages.PostScreenMessage("[KCT] Airlaunch cancelled", 5f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield break; } ScreenMessages.PostScreenMessage($"[KCT] Launching in {i}...", 1f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield return(new WaitForSeconds(1)); } HyperEdit_Utilities.DoAirlaunch(launchParams); }
private void ProcessSimulation() { HighLogic.CurrentGame.Parameters.Flight.CanAutoSave = false; SimulationParams simParams = KCTGameStates.SimulationParams; if (FlightGlobals.ActiveVessel.loaded && !FlightGlobals.ActiveVessel.packed && !simParams.IsVesselMoved) { if (simParams.DisableFailures) { Utilities.ToggleFailures(!simParams.DisableFailures); } if (!simParams.SimulateInOrbit || !FlightDriver.CanRevertToPrelaunch) { // Either the player does not want to start in orbit or they saved and then loaded back into that save simParams.IsVesselMoved = true; return; } int secondsForMove = simParams.DelayMoveSeconds; if (_simMoveDeferTime == DateTime.MaxValue) { _simMoveDeferTime = DateTime.Now; } else if (DateTime.Now.CompareTo(_simMoveDeferTime.AddSeconds(secondsForMove)) > 0) { KCTDebug.Log($"Moving vessel to orbit. {simParams.SimulationBody.bodyName}:{simParams.SimOrbitAltitude}:{simParams.SimInclination}"); HyperEdit_Utilities.PutInOrbitAround(simParams.SimulationBody, simParams.SimOrbitAltitude, simParams.SimInclination); simParams.IsVesselMoved = true; _simMoveDeferTime = DateTime.MaxValue; } if (_simMoveDeferTime != DateTime.MaxValue && _simMoveSecondsRemain != (_simMoveDeferTime.AddSeconds(secondsForMove) - DateTime.Now).Seconds) { double remaining = (_simMoveDeferTime.AddSeconds(secondsForMove) - DateTime.Now).TotalSeconds; ScreenMessages.PostScreenMessage($"Moving vessel in {Math.Round(remaining)} seconds", (float)(remaining - Math.Floor(remaining)), ScreenMessageStyle.UPPER_CENTER); _simMoveSecondsRemain = (int)remaining; } } }
private IEnumerator AirlaunchRoutine(AirlaunchParams launchParams, Guid vesselId) { yield return(wfsTwo); // new WaitForSeconds(2); for (int i = 10; i > 0; i--) { if (FlightGlobals.ActiveVessel == null || FlightGlobals.ActiveVessel.id != vesselId) { ScreenMessages.PostScreenMessage("[KCT] Airlaunch cancelled", 5f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield break; } if (i == 1 && FlightGlobals.ActiveVessel.situation == Vessel.Situations.PRELAUNCH) { // Make sure that the vessel situation transitions from Prelaunch to Landed before airlaunching FlightGlobals.ActiveVessel.situation = Vessel.Situations.LANDED; } ScreenMessages.PostScreenMessage($"[KCT] Launching in {i}...", 1f, ScreenMessageStyle.UPPER_CENTER, XKCDColors.Red); yield return(wfsOne); // new WaitForSeconds(1); } HyperEdit_Utilities.DoAirlaunch(launchParams); }