Decompiled source of REPOArena v1.0.0

REPOArena.dll

Decompiled a day ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using MenuLib;
using MenuLib.MonoBehaviors;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("REPORace")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("REPORace")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("6badc5fc-7016-4ffb-8376-ca64469840a4")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
internal static class MyPluginInfo
{
	internal const string PLUGIN_GUID = "nolex.repo.repoarena";

	internal const string PLUGIN_NAME = "REPOArena";

	internal const string PLUGIN_VERSION = "1.0.0";
}
[BepInPlugin("com.nolex.repoarena", "REPOArena", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
	[Serializable]
	[CompilerGenerated]
	private sealed class <>c
	{
		public static readonly <>c <>9 = new <>c();

		public static ScrollViewBuilderDelegate <>9__1_2;

		public static ScrollViewBuilderDelegate <>9__1_3;

		public static ScrollViewBuilderDelegate <>9__1_4;

		public static Action <>9__1_1;

		public static BuilderDelegate <>9__1_0;

		public static Predicate<Level> <>9__2_0;

		public static Predicate<Level> <>9__3_0;

		internal void <Awake>b__1_0(Transform parent)
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			REPOButton val = MenuAPI.CreateREPOButton("Arena Modes", (Action)delegate
			{
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0044: Expected O, but got Unknown
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0079: Expected O, but got Unknown
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00df: Expected O, but got Unknown
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Expected O, but got Unknown
				<>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0
				{
					popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f)
				};
				REPOPopupPage popup = CS$<>8__locals0.popup;
				object obj = <>9__1_2;
				if (obj == null)
				{
					ScrollViewBuilderDelegate val2 = delegate(Transform scrollView)
					{
						//IL_0013: Unknown result type (might be due to invalid IL or missing references)
						REPOButton val8 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero);
						return ((REPOElement)val8).rectTransform;
					};
					<>9__1_2 = val2;
					obj = (object)val2;
				}
				popup.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f);
				REPOPopupPage popup2 = CS$<>8__locals0.popup;
				object obj2 = <>9__1_3;
				if (obj2 == null)
				{
					ScrollViewBuilderDelegate val3 = delegate(Transform scrollView)
					{
						//IL_0013: Unknown result type (might be due to invalid IL or missing references)
						REPOButton val7 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero);
						return ((REPOElement)val7).rectTransform;
					};
					<>9__1_3 = val3;
					obj2 = (object)val3;
				}
				popup2.AddElementToScrollView((ScrollViewBuilderDelegate)obj2, 0f, 0f);
				REPOPopupPage popup3 = CS$<>8__locals0.popup;
				object obj3 = <>9__1_4;
				if (obj3 == null)
				{
					ScrollViewBuilderDelegate val4 = delegate(Transform scrollView)
					{
						//IL_0013: Unknown result type (might be due to invalid IL or missing references)
						REPOButton val6 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero);
						return ((REPOElement)val6).rectTransform;
					};
					<>9__1_4 = val4;
					obj3 = (object)val4;
				}
				popup3.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f);
				CS$<>8__locals0.popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView)
				{
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					REPOButton val5 = MenuAPI.CreateREPOButton("Close", (Action)delegate
					{
						CS$<>8__locals0.popup.ClosePage(true);
					}, scrollView, Vector2.zero);
					return ((REPOElement)val5).rectTransform;
				}, 0f, 0f);
				CS$<>8__locals0.popup.OpenPage(false);
			}, parent, new Vector2(360f, 261f));
		}

		internal void <Awake>b__1_1()
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Expected O, but got Unknown
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Expected O, but got Unknown
			<>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0
			{
				popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f)
			};
			REPOPopupPage popup = CS$<>8__locals0.popup;
			object obj = <>9__1_2;
			if (obj == null)
			{
				ScrollViewBuilderDelegate val = delegate(Transform scrollView)
				{
					//IL_0013: Unknown result type (might be due to invalid IL or missing references)
					REPOButton val7 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero);
					return ((REPOElement)val7).rectTransform;
				};
				<>9__1_2 = val;
				obj = (object)val;
			}
			popup.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f);
			REPOPopupPage popup2 = CS$<>8__locals0.popup;
			object obj2 = <>9__1_3;
			if (obj2 == null)
			{
				ScrollViewBuilderDelegate val2 = delegate(Transform scrollView)
				{
					//IL_0013: Unknown result type (might be due to invalid IL or missing references)
					REPOButton val6 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero);
					return ((REPOElement)val6).rectTransform;
				};
				<>9__1_3 = val2;
				obj2 = (object)val2;
			}
			popup2.AddElementToScrollView((ScrollViewBuilderDelegate)obj2, 0f, 0f);
			REPOPopupPage popup3 = CS$<>8__locals0.popup;
			object obj3 = <>9__1_4;
			if (obj3 == null)
			{
				ScrollViewBuilderDelegate val3 = delegate(Transform scrollView)
				{
					//IL_0013: Unknown result type (might be due to invalid IL or missing references)
					REPOButton val5 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero);
					return ((REPOElement)val5).rectTransform;
				};
				<>9__1_4 = val3;
				obj3 = (object)val3;
			}
			popup3.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f);
			CS$<>8__locals0.popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView)
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				REPOButton val4 = MenuAPI.CreateREPOButton("Close", (Action)delegate
				{
					CS$<>8__locals0.popup.ClosePage(true);
				}, scrollView, Vector2.zero);
				return ((REPOElement)val4).rectTransform;
			}, 0f, 0f);
			CS$<>8__locals0.popup.OpenPage(false);
		}

		internal RectTransform <Awake>b__1_2(Transform scrollView)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			REPOButton val = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero);
			return ((REPOElement)val).rectTransform;
		}

		internal RectTransform <Awake>b__1_3(Transform scrollView)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			REPOButton val = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero);
			return ((REPOElement)val).rectTransform;
		}

		internal RectTransform <Awake>b__1_4(Transform scrollView)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			REPOButton val = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero);
			return ((REPOElement)val).rectTransform;
		}

		internal bool <OnArenaRaceButtonClicked>b__2_0(Level l)
		{
			return ((Object)l).name == "Level - Arena Race";
		}

		internal bool <OnArenaFightButtonClicked>b__3_0(Level l)
		{
			return ((Object)l).name == "Level - Arena Fight";
		}
	}

	[CompilerGenerated]
	private sealed class <>c__DisplayClass1_0
	{
		public REPOPopupPage popup;

		public Action <>9__6;

		internal RectTransform <Awake>b__5(Transform scrollView)
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			REPOButton val = MenuAPI.CreateREPOButton("Close", (Action)delegate
			{
				popup.ClosePage(true);
			}, scrollView, Vector2.zero);
			return ((REPOElement)val).rectTransform;
		}

		internal void <Awake>b__6()
		{
			popup.ClosePage(true);
		}
	}

	internal static ManualLogSource Log;

	private void Awake()
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Expected O, but got Unknown
		Log = ((BaseUnityPlugin)this).Logger;
		object obj = <>c.<>9__1_0;
		if (obj == null)
		{
			BuilderDelegate val = delegate(Transform parent)
			{
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				REPOButton val2 = MenuAPI.CreateREPOButton("Arena Modes", (Action)delegate
				{
					//IL_0039: Unknown result type (might be due to invalid IL or missing references)
					//IL_003e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0044: Expected O, but got Unknown
					//IL_006e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0073: Unknown result type (might be due to invalid IL or missing references)
					//IL_0079: Expected O, but got Unknown
					//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
					//IL_00df: Expected O, but got Unknown
					//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ae: Expected O, but got Unknown
					REPOPopupPage popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f);
					REPOPopupPage obj2 = popup;
					object obj3 = <>c.<>9__1_2;
					if (obj3 == null)
					{
						ScrollViewBuilderDelegate val3 = delegate(Transform scrollView)
						{
							//IL_0013: Unknown result type (might be due to invalid IL or missing references)
							REPOButton val9 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero);
							return ((REPOElement)val9).rectTransform;
						};
						<>c.<>9__1_2 = val3;
						obj3 = (object)val3;
					}
					obj2.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f);
					REPOPopupPage obj4 = popup;
					object obj5 = <>c.<>9__1_3;
					if (obj5 == null)
					{
						ScrollViewBuilderDelegate val4 = delegate(Transform scrollView)
						{
							//IL_0013: Unknown result type (might be due to invalid IL or missing references)
							REPOButton val8 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero);
							return ((REPOElement)val8).rectTransform;
						};
						<>c.<>9__1_3 = val4;
						obj5 = (object)val4;
					}
					obj4.AddElementToScrollView((ScrollViewBuilderDelegate)obj5, 0f, 0f);
					REPOPopupPage obj6 = popup;
					object obj7 = <>c.<>9__1_4;
					if (obj7 == null)
					{
						ScrollViewBuilderDelegate val5 = delegate(Transform scrollView)
						{
							//IL_0013: Unknown result type (might be due to invalid IL or missing references)
							REPOButton val7 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero);
							return ((REPOElement)val7).rectTransform;
						};
						<>c.<>9__1_4 = val5;
						obj7 = (object)val5;
					}
					obj6.AddElementToScrollView((ScrollViewBuilderDelegate)obj7, 0f, 0f);
					popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView)
					{
						//IL_0026: Unknown result type (might be due to invalid IL or missing references)
						REPOButton val6 = MenuAPI.CreateREPOButton("Close", (Action)delegate
						{
							popup.ClosePage(true);
						}, scrollView, Vector2.zero);
						return ((REPOElement)val6).rectTransform;
					}, 0f, 0f);
					popup.OpenPage(false);
				}, parent, new Vector2(360f, 261f));
			};
			<>c.<>9__1_0 = val;
			obj = (object)val;
		}
		MenuAPI.AddElementToLobbyMenu((BuilderDelegate)obj);
		Log.LogMessage((object)"REPOArena loaded !");
	}

	private static void OnArenaRaceButtonClicked()
	{
		if (CheckHost())
		{
			Level val = RunManager.instance.levelArena.Find((Level l) => ((Object)l).name == "Level - Arena Race");
			if ((Object)(object)val == (Object)null)
			{
				Log.LogWarning((object)"[REPORace] Level 'Level - Arena Race' not found !");
				return;
			}
			RunManager.instance.levelCurrent = val;
			StartArena();
		}
	}

	private static void OnArenaFightButtonClicked()
	{
		if (CheckHost())
		{
			Level val = RunManager.instance.levelArena.Find((Level l) => ((Object)l).name == "Level - Arena Fight");
			if ((Object)(object)val == (Object)null)
			{
				Log.LogWarning((object)"[REPORace] Level 'Level - Arena Fight' not found !");
				return;
			}
			RunManager.instance.levelCurrent = val;
			StartArena();
		}
	}

	private static void OnRandomArenaButtonClicked()
	{
		if (CheckHost())
		{
			int index = Random.Range(0, RunManager.instance.levelArena.Count);
			RunManager.instance.levelCurrent = RunManager.instance.levelArena[index];
			StartArena();
		}
	}

	private static void StartArena()
	{
		Log.LogInfo((object)("[REPORace] Launch of the arena → " + ((Object)RunManager.instance.levelCurrent).name));
		SemiFunc.SaveFileCreate();
		RunManager.instance.ChangeLevel(false, false, (ChangeLevelType)0);
	}

	private static bool CheckHost()
	{
		if (!SemiFunc.IsMasterClientOrSingleplayer())
		{
			Log.LogWarning((object)"[REPORace] Only host can launch arena modes.");
			return false;
		}
		if (!SemiFunc.RunIsLobbyMenu())
		{
			Log.LogWarning((object)"[REPORace] Not in the menu lobby, action cancels.");
			return false;
		}
		if (RunManager.instance.levelArena == null || RunManager.instance.levelArena.Count == 0)
		{
			Log.LogWarning((object)"[REPORace] No arena level found in RunManager.");
			return false;
		}
		return true;
	}
}