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());
}
}