Decompiled source of OldMainMenu v1.0.1

OldMenuOverride.dll

Decompiled 3 weeks ago
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("OldMenuOverride")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("OldMenuOverride")]
[assembly: AssemblyTitle("OldMenuOverride")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace OldMenuOverride;

[BepInPlugin("com.yourname.oldmenuoverride", "Old Menu Override", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
	private class Runner : MonoBehaviour
	{
		public IEnumerator DelayedToggle()
		{
			yield return 0;
			Toggle("MainCamera (1)", enable: false);
			Toggle("MainCamera", enable: true);
			Toggle("Theme (1)", enable: false);
			Toggle("Desert", enable: false);
			Toggle("Desert (1)", enable: false);
			Toggle("Tornado", enable: false);
			Toggle("Beach", enable: true);
			GameObject val = FindEvenIfInactive("Title Music");
			if ((Object)(object)val != (Object)null)
			{
				Transform val2 = val.transform.Find("Mesa Title");
				if ((Object)(object)val2 != (Object)null)
				{
					((Component)val2).gameObject.SetActive(false);
					Debug.Log((object)"[OldMenuOverride] Disabled Mesa Title");
				}
				Transform val3 = val.transform.Find("Regular");
				if ((Object)(object)val3 != (Object)null)
				{
					((Component)val3).gameObject.SetActive(true);
					Debug.Log((object)"[OldMenuOverride] Enabled Regular");
				}
			}
			Transform val4 = val.transform.Find("Regular/Music Title Regular");
			if ((Object)(object)val4 != (Object)null)
			{
				AudioSource component = ((Component)val4).GetComponent<AudioSource>();
				if ((Object)(object)component != (Object)null)
				{
					component.loop = true;
					Debug.Log((object)"[OldMenuOverride] Enabled looping for Title Music Regular.");
				}
				else
				{
					Debug.LogWarning((object)"[OldMenuOverride] Could not find AudioSource on Music Title Regular.");
				}
			}
			else
			{
				Debug.LogWarning((object)"[OldMenuOverride] Could not find Regular/Music Title Regular object.");
			}
			Debug.Log((object)"[OldMenuOverride] All overrides applied");
			static void Toggle(string name, bool enable)
			{
				GameObject val5 = FindEvenIfInactive(name);
				if ((Object)(object)val5 != (Object)null)
				{
					val5.SetActive(enable);
					Debug.Log((object)("[OldMenuOverride] " + (enable ? "Enabled" : "Disabled") + " " + name));
				}
				else
				{
					Debug.LogWarning((object)("[OldMenuOverride] Could not find " + name));
				}
			}
		}
	}

	private void Awake()
	{
		Harmony.CreateAndPatchAll(typeof(Plugin), (string)null);
		Debug.Log((object)"[OldMenuOverride] Plugin loaded!");
	}

	private static GameObject FindEvenIfInactive(string name)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		Scene activeScene = SceneManager.GetActiveScene();
		GameObject[] rootGameObjects = ((Scene)(ref activeScene)).GetRootGameObjects();
		for (int i = 0; i < rootGameObjects.Length; i++)
		{
			Transform val = FindInChildren(rootGameObjects[i].transform, name);
			if ((Object)(object)val != (Object)null)
			{
				return ((Component)val).gameObject;
			}
		}
		return null;
	}

	private static Transform FindInChildren(Transform parent, string name)
	{
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Expected O, but got Unknown
		if (((Object)parent).name == name)
		{
			return parent;
		}
		foreach (Transform item in parent)
		{
			Transform val = FindInChildren(item, name);
			if ((Object)(object)val != (Object)null)
			{
				return val;
			}
		}
		return null;
	}

	[HarmonyPatch(typeof(MainMenu), "Start")]
	[HarmonyPostfix]
	private static void MainMenuStart_Postfix()
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		Runner runner = new GameObject("OldMenuOverrideRunner")
		{
			hideFlags = (HideFlags)61
		}.AddComponent<Runner>();
		((MonoBehaviour)runner).StartCoroutine(runner.DelayedToggle());
	}
}