mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
34 lines
1.6 KiB
C#
34 lines
1.6 KiB
C#
using NewHorizons.OtherMods;
|
|
using UnityEngine;
|
|
|
|
namespace NewHorizons.Utility.OuterWilds
|
|
{
|
|
public static class TimeLoopUtilities
|
|
{
|
|
public const float LOOP_DURATION_IN_SECONDS = TimeLoop.LOOP_DURATION_IN_MINUTES * 60;
|
|
public static void SetLoopDuration(float minutes)
|
|
{
|
|
TimeLoop._loopDuration = minutes * 60f;
|
|
|
|
// If slow time mod is on give them at least an hour
|
|
// This won't slow down time based events like sand sizes but oh well
|
|
if (OtherModUtil.IsEnabled("dnlwtsn.SlowTime"))
|
|
{
|
|
TimeLoop._loopDuration = Mathf.Max(TimeLoop._loopDuration, 60f * 60f);
|
|
}
|
|
}
|
|
public static void SetSecondsElapsed(float secondsElapsed) => TimeLoop._timeOffset = secondsElapsed - Time.timeSinceLevelLoad;
|
|
public static void SetMinutesRemaining(float minutes) => TimeLoop.SetSecondsRemaining(minutes * 60);
|
|
public static float GetMinutesRemaining() => TimeLoop.GetSecondsRemaining() / 60f;
|
|
public static float GetVanillaSecondsRemaining() => LOOP_DURATION_IN_SECONDS - TimeLoop.GetSecondsElapsed();
|
|
public static float GetVanillaMinutesRemaining() => GetVanillaSecondsRemaining() / 60f;
|
|
public static float GetVanillaFractionElapsed() => TimeLoop.GetSecondsElapsed() / LOOP_DURATION_IN_SECONDS;
|
|
public static void SetSecondsRemainingIfLessThan(float seconds)
|
|
{
|
|
if (TimeLoop.GetSecondsRemaining() >= seconds) return;
|
|
TimeLoop.SetSecondsRemaining(seconds);
|
|
}
|
|
public static void SetMinutesRemainingIfLessThan(float minutes) => SetSecondsRemainingIfLessThan(minutes * 60);
|
|
}
|
|
}
|