Decompiled source of LongerDays Il2cpp v1.11.0

longerdays.dll

Decompiled 3 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using Il2CppScheduleOne.GameTime;
using MelonLoader;
using MelonLoader.Preferences;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(LongerDaysMod), "LongerDays", "1.11", "xVilho", null)]
[assembly: MelonColor(255, 200, 150, 255)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("longerdays")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+d7007bd0163ada4000dd1eb63453fb0c3c284587")]
[assembly: AssemblyProduct("longerdays")]
[assembly: AssemblyTitle("longerdays")]
[assembly: AssemblyVersion("1.0.0.0")]
public class LongerDaysMod : MelonMod
{
	[CompilerGenerated]
	private sealed class <FindTimeManagerLoop>d__6 : IEnumerator<object>, IEnumerator, IDisposable
	{
		private int <>1__state;

		private object <>2__current;

		public LongerDaysMod <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <FindTimeManagerLoop>d__6(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Expected O, but got Unknown
			int num = <>1__state;
			LongerDaysMod longerDaysMod = <>4__this;
			switch (num)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = null;
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				break;
			case 2:
				<>1__state = -1;
				break;
			}
			if (!longerDaysMod.initialized)
			{
				if (longerDaysMod.cfgMultiplier == null)
				{
					Log("❌ cfgMultiplier is null — config was not initialized?");
					return false;
				}
				TimeManager val = Object.FindObjectOfType<TimeManager>();
				if ((Object)(object)val != (Object)null)
				{
					float num3 = (val.TimeProgressionMultiplier = Mathf.Clamp(longerDaysMod.cfgMultiplier.Value, 0.1f, 2f));
					Log($"⏳ Time slowed down to {num3:0.##}x ({num3 * 100f:0.#}% of normal speed).");
					longerDaysMod.initialized = true;
					return false;
				}
				<>2__current = (object)new WaitForSeconds(2f);
				<>1__state = 2;
				return true;
			}
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	private MelonPreferences_Category cfgCategory;

	private MelonPreferences_Entry<float> cfgMultiplier;

	private static Instance Logger;

	private bool initialized;

	public override void OnInitializeMelon()
	{
		Logger = ((MelonBase)this).LoggerInstance;
		cfgCategory = MelonPreferences.CreateCategory("LongerDays", "Longer Days Mod Settings");
		cfgMultiplier = cfgCategory.CreateEntry<float>("TimeMultiplier", 0.5f, "Time Speed Multiplier", "Controls how fast in-game time passes.\n1.0 = normal speed (100%), 0.5 = 50% (slower), 2.0 = 200% (faster).\nAllowed range: 0.1 (very slow) to 2.0 (very fast).", false, false, (ValueValidator)null, (string)null);
	}

	public override void OnSceneWasInitialized(int buildIndex, string sceneName)
	{
		if (sceneName == "Menu")
		{
			initialized = false;
			Log("\ud83d\udd01 Scene 'menu' loaded — reset mod state.");
		}
		if (sceneName == "Main")
		{
			Log("\ud83e\udde9 Scene 'main' initialized. Will begin checking for TimeManager every 2s...");
			MelonCoroutines.Start(FindTimeManagerLoop());
		}
	}

	[IteratorStateMachine(typeof(<FindTimeManagerLoop>d__6))]
	private IEnumerator FindTimeManagerLoop()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <FindTimeManagerLoop>d__6(0)
		{
			<>4__this = this
		};
	}

	private static void Log(string msg)
	{
		Logger.Msg(msg ?? "");
	}
}