Add time loop patches

This commit is contained in:
Noah Pilarski 2022-11-27 22:11:40 -05:00
parent 041e915fa5
commit c4aafce3d8
2 changed files with 51 additions and 0 deletions

View File

@ -58,6 +58,7 @@ namespace NewHorizons
public string DefaultStarSystem => SystemDict.ContainsKey(_defaultSystemOverride) ? _defaultSystemOverride : _defaultStarSystem;
public string CurrentStarSystem => _currentStarSystem;
public bool TimeLoopEnabled => SystemDict[CurrentStarSystem]?.Config?.enableTimeLoop ?? true;
public bool IsWarpingFromShip { get; private set; } = false;
public bool IsWarpingFromVessel { get; private set; } = false;
public bool IsWarpingBackToEye { get; internal set; } = false;

View File

@ -0,0 +1,50 @@
using HarmonyLib;
namespace NewHorizons.Patches
{
[HarmonyPatch]
public static class TimeLoopPatches
{
/// <summary>
/// Disables starfield updates
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(StarfieldController), nameof(StarfieldController.Update))]
public static bool StarfieldController_Update() => Main.Instance.TimeLoopEnabled;
/// <summary>
/// Disables interloper destruction
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(TempCometCollisionFix), nameof(TempCometCollisionFix.Update))]
public static bool TempCometCollisionFix_Update() => Main.Instance.TimeLoopEnabled;
/// <summary>
/// Disables sun logic
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(SunController), nameof(SunController.Update))]
public static bool SunController_Update(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
/// <summary>
/// Disables sun expansion
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(SunController), nameof(SunController.UpdateScale))]
public static bool SunController_UpdateScale(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
/// <summary>
/// Disables sun collapse SFX
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(SunController), nameof(SunController.OnTriggerSupernova))]
public static bool SunController_OnTriggerSupernova(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
/// <summary>
/// Disables end times music
/// </summary>
[HarmonyPrefix]
[HarmonyPatch(typeof(GlobalMusicController), nameof(GlobalMusicController.UpdateEndTimesMusic))]
public static bool GlobalMusicController_UpdateEndTimesMusic() => Main.Instance.TimeLoopEnabled;
}
}