using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using MenuLib; using MenuLib.MonoBehaviors; using Microsoft.CodeAnalysis; using SpawnManager.Extensions; using SpawnManager.Managers; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SpawnManager")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.6.9.0")] [assembly: AssemblyInformationalVersion("0.6.9+b84b571ec93b72a5b7dc1e989a48b7ac2b555358")] [assembly: AssemblyProduct("SpawnManager")] [assembly: AssemblyTitle("SpawnManager")] [assembly: AssemblyVersion("0.6.9.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace SpawnManager { public static class Constants { public const string MenuLibGuid = "nickklmao.menulib"; } [BepInPlugin("soundedsquash.spawnmanager", "Enemy/Valuable Spawn Manager", "0.6.9.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SpawnManagerBase : BaseUnityPlugin { private const string PluginGuid = "soundedsquash.spawnmanager"; private const string PluginName = "Enemy/Valuable Spawn Manager"; private const string PluginVersion = "0.6.9.0"; private readonly Harmony _harmony = new Harmony("soundedsquash.spawnmanager"); private static readonly ManualLogSource ManualLogSource = Logger.CreateLogSource("soundedsquash.spawnmanager"); public void Awake() { Settings.Initialize(((BaseUnityPlugin)this).Config, ManualLogSource); if (PluginManager.IsPluginInstalled("nickklmao.menulib")) { MenuModManager.Initialize(); } else { Settings.Logger.LogWarning((object)"MenuLib not loaded. Cannot add button to main menu."); } _harmony.PatchAll(); ManualLogSource.LogInfo((object)"Enemy/Valuable Spawn Manager loaded"); } } public static class Settings { private const string HideFromRepoConfig = "HideREPOConfig"; public static ConfigEntry ShowSpawnManagerButton { get; private set; } = null; public static ConfigEntry DisabledEnemies { get; private set; } = null; public static ConfigEntry DisabledValuables { get; private set; } = null; public static IDictionary> DisabledLevelValuables { get; private set; } = new Dictionary>(); public static ConfigEntry DisabledLevels { get; private set; } = null; public static IDictionary> DisabledLevelEnemies { get; private set; } = new Dictionary>(); public static ConfigEntry DisabledItems { get; private set; } = null; public static IDictionary> DisabledLevelItems { get; private set; } = new Dictionary>(); public static ConfigEntry DefaultValuable { get; private set; } = null; public static ManualLogSource Logger { get; private set; } = null; private static ConfigFile Config { get; set; } = null; private static bool LevelsInitialized { get; set; } = false; private static bool ValuablesInitialized { get; set; } = false; internal static void Initialize(ConfigFile config, ManualLogSource logger) { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Expected O, but got Unknown //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Expected O, but got Unknown Config = config; Logger = logger; (ShowSpawnManagerButton = Config.Bind("General", "ShowSpawnManagerButton", true, "Set to false to hide the Spawn Manager button on the main menu.")).SettingChanged += MenuModManager.OnShowSpawnManagerButtonChanged; Config.Bind("Do Not Use", "Use Spawn Manager button on main menu", 0f, "Use Spawn Manager button on main menu"); DisabledEnemies = Config.Bind("Enemies", "DisabledList", "", new ConfigDescription("Comma-separated list of enemy names to disable. (e.g. \"Apex Predator,Headman\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DefaultValuable = Config.Bind("Valuables", "Default", "Valuable Goblet", new ConfigDescription("A single tiny valuable used to fill when there aren't enough valuables enabled in the level. (e.g. \"Valuable Diamond\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledValuables = Config.Bind("Valuables", "DisabledList", "", new ConfigDescription("Comma-separated list of valuable names to disable. (e.g. \"Valuable Television,Valuable Diamond Display\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledLevels = Config.Bind("Levels", "DisabledList", "", new ConfigDescription("Comma-separated list of level names to disable. (e.g. \"Level - Manor\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledItems = Config.Bind("Items", "DisabledList", "", new ConfigDescription("Comma-separated list of item names to disable. (e.g. \"Cart Medium\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); } internal static void InitializeEnemiesLevels() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown if (LevelsInitialized) { return; } foreach (Level allLevel in LevelManager.GetAllLevels()) { ConfigEntry value = Config.Bind("Levels", allLevel.FriendlyName() + " - Disabled Enemies", "", new ConfigDescription("Comma-separated list of enemy names to disable in this level. (e.g. \"Apex Predator,Headman\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledLevelEnemies.Add(((Object)allLevel).name, value); } LevelsInitialized = true; } internal static void InitializeItemsLevels() { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown foreach (Level item in (from level in LevelManager.GetAllLevelsForItems() where !DisabledLevelItems.ContainsKey(((Object)level).name) select level).ToList()) { ConfigEntry value = Config.Bind("Items", item.FriendlyName() + " - Disabled Items", "", new ConfigDescription("Comma-separated list of item names to disable in this level. (e.g. \"Cart Medium\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledLevelItems.Add(((Object)item).name, value); } } internal static void InitializeValuablesLevels() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown if (ValuablesInitialized || !LevelManager.RunManagerLevelVariableIsAvailable) { return; } foreach (Level allLevel in LevelManager.GetAllLevels()) { ConfigEntry value = Config.Bind("Valuables", allLevel.FriendlyName() + " - Disabled Valuables", "", new ConfigDescription("Comma-separated list of valuable names to disable. (e.g. \"Valuable Television,Valuable Diamond Display\")", (AcceptableValueBase)null, new object[1] { "HideREPOConfig" })); DisabledLevelValuables.Add(((Object)allLevel).name, value); } ValuablesInitialized = true; } public static ISet GetDisabledEnemiesForLevel(string level) { if (DisabledLevelEnemies.TryGetValue(level, out ConfigEntry value)) { return new HashSet(ConvertStringToList(value.Value)); } return new HashSet(); } public static ISet GetDisabledItemsForLevel(string level) { if (DisabledLevelItems.TryGetValue(level, out ConfigEntry value)) { return new HashSet(ConvertStringToList(value.Value)); } return new HashSet(); } public static ISet GetDisabledValuablesForLevel(string level) { if (DisabledLevelValuables.TryGetValue(level, out ConfigEntry value)) { return new HashSet(ConvertStringToList(value.Value)); } return new HashSet(); } public static List GetDisabledSettingsEntryListNames(ConfigEntry settingsVariable) { return ConvertStringToList(settingsVariable.Value); } private static List ConvertStringToList(string str) { if (string.IsNullOrEmpty(str)) { return new List(); } return new List(from s in str.Split(',', StringSplitOptions.RemoveEmptyEntries) select s.Trim()); } public static void UpdateSettingsListEntry(ConfigEntry settingsVariable, string entry, bool enabled) { List disabledSettingsEntryListNames = GetDisabledSettingsEntryListNames(settingsVariable); if (enabled) { disabledSettingsEntryListNames.Remove(entry); } else if (!disabledSettingsEntryListNames.Contains(entry)) { disabledSettingsEntryListNames.Add(entry); } settingsVariable.Value = string.Join(",", disabledSettingsEntryListNames); } public static bool IsSettingsListEntryEnabled(ConfigEntry settingsVariable, string entry) { return !GetDisabledSettingsEntryListNames(settingsVariable).Contains(entry); } } } namespace SpawnManager.Patches { [HarmonyPatch("Arena")] public class ArenaPatches { public static void ClearItems() { if (!SemiFunc.IsNotMasterClient()) { List disabledSettingsEntryListNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledItems); ISet disabledItemsForLevel = Settings.GetDisabledItemsForLevel("Arena"); disabledSettingsEntryListNames.AddRange(disabledItemsForLevel); ItemManager.instance.purchasedItems.RemoveItems(disabledSettingsEntryListNames); Traverse.Create((object)Arena.instance).Field("itemsMid").GetValue>() .RemoveItems(disabledSettingsEntryListNames); ItemManager.instance.purchasedItems.RemoveItems(disabledSettingsEntryListNames); } } [HarmonyPatch(typeof(Arena), "ArenaInitMultiplayer")] [HarmonyTranspiler] private static IEnumerable ArenaInitMultiplayerTranspiler(IEnumerable instructions) { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown List list = new List(instructions); MethodInfo methodInfo = AccessTools.Method(typeof(ItemManager), "GetAllItemVolumesInScene", (Type[])null, (Type[])null); MethodInfo methodInfo2 = AccessTools.Method(typeof(ArenaPatches), "ClearItems", (Type[])null, (Type[])null); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Callvirt && list[i].operand is MethodInfo methodInfo3 && methodInfo3 == methodInfo) { list.InsertRange(i, (IEnumerable)(object)new CodeInstruction[1] { new CodeInstruction(OpCodes.Call, (object)methodInfo2) }); return list; } } throw new Exception("Could not find GetAllItemVolumesInScene"); } } [HarmonyPatch(typeof(EnemyDirector))] public static class EnemyDirectorPatches { private static List _startingEnemyList = new List(); private static bool _isListSet; [HarmonyPatch("Start")] [HarmonyPostfix] private static void EnemyDirectorStartPostfix() { EnemyManager.RefreshAllEnemyNames(); if (SemiFunc.RunIsLevel()) { Settings.Logger.LogDebug((object)"Not on menu level, removing enemies."); EnemyManager.RemoveEnemies(); } } [HarmonyPatch("PickEnemies")] [HarmonyPostfix] private static void EnemyDirectorPickEnemiesPostfix(ref List ___enemyList) { if (___enemyList.Count != 0) { ___enemyList.RemoveAll((EnemySetup e) => (Object)(object)e == (Object)null); Settings.Logger.LogDebug((object)("Level starting with enemies: " + string.Join(", ", ___enemyList))); } } [HarmonyPatch("GetEnemy")] [HarmonyPrefix] private static void EnemyDirectorGetEnemyPrefix(EnemyDirector __instance, ref List ___enemyList, int ___enemyListIndex) { if (___enemyList.Count == 0) { EnemySetup val = ScriptableObject.CreateInstance(); val.spawnObjects = new List(); ___enemyList.Add(val); } if (!_isListSet) { _startingEnemyList = new List(___enemyList); _isListSet = true; } while (___enemyList.Count < ___enemyListIndex + 1) { int index = Random.Range(0, _startingEnemyList.Count); ___enemyList.Add(___enemyList[index]); } } } [HarmonyPatch(typeof(LevelGenerator))] public static class LevelGeneratorPatches { [HarmonyPatch("ItemSetup")] [HarmonyPrefix] [HarmonyPriority(0)] private static void LevelGeneratorItemSetupPrefix() { Settings.Logger.LogDebug((object)"Removing items."); Settings.InitializeItemsLevels(); ItemsManager.RemoveItems(); } } [HarmonyPatch(typeof(RunManager))] public static class RunManagerPatches { [HarmonyPatch("Awake")] [HarmonyPrefix] [HarmonyPriority(0)] private static void RunManagerAwakePrefix() { try { if (!SemiFunc.MenuLevel()) { Settings.Logger.LogDebug((object)"Removing valuables."); ValuableManager.RemoveValuables(); } } catch (Exception) { Settings.Logger.LogInfo((object)"Failed to determine if it is the menu level."); } } [HarmonyPatch("ChangeLevel")] [HarmonyPrefix] private static void RunManagerChangeLevelPrefix(RunManager __instance, ref Level ___previousRunLevel) { Settings.Logger.LogDebug((object)"Removing levels."); LevelManager.RemoveLevels(); if (__instance.levels.Count == 1) { ___previousRunLevel = null; } } } [HarmonyPatch(typeof(ValuableDirector))] public static class ValuableDirectorPatches { [HarmonyPatch("SpawnValuable")] [HarmonyPrefix] private static void ValuableDirectorSpawnPrefix(GameObject _valuable, ValuableVolume _volume, ref string _path) { if (ValuableManager.AllItems.TryGetValue(((Object)_valuable).name, out ValuableMetaData value)) { _path = ValuableManager.GetValuablePresetTypePath(value.PresetType); } } } } namespace SpawnManager.Managers { public static class EnemyManager { public static Dictionary> EnemySpawnList = new Dictionary>(); public static void RefreshAllEnemyNames() { EnemyDirector instance = EnemyDirector.instance; EnemySpawnList = (from so in instance.enemiesDifficulty1.Concat(instance.enemiesDifficulty2).Concat(instance.enemiesDifficulty3).SelectMany((EnemySetup ed) => ed.spawnObjects) group so by ((Object)so.Prefab).GetInstanceID() into so select so.First() into so where (Object)(object)so.Prefab.GetComponent() != (Object)null group so by so.Prefab.GetComponent().enemyName).ToDictionary((IGrouping g) => g.Key, (IGrouping g) => g.AsEnumerable()); } public static void RemoveEnemies() { if (SemiFunc.IsNotMasterClient()) { return; } Settings.InitializeEnemiesLevels(); List disabledEnemyNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledEnemies); Level levelCurrent = RunManager.instance.levelCurrent; string text = ((levelCurrent != null) ? ((Object)levelCurrent).name : null); if (text != null) { ISet disabledEnemiesForLevel = Settings.GetDisabledEnemiesForLevel(text); disabledEnemyNames.AddRange(disabledEnemiesForLevel); } if (disabledEnemyNames.Count == 0) { return; } if (EnemySpawnList.Count == 0) { RefreshAllEnemyNames(); } EnemyDirector instance = EnemyDirector.instance; List spawnObjectsToRemove = EnemySpawnList.Where>>((KeyValuePair> kvp) => disabledEnemyNames.Contains(kvp.Key)).SelectMany((KeyValuePair> kvp) => kvp.Value).ToList(); Settings.Logger.LogDebug((object)string.Format("Enemies to disable: {0} | Removing {1} spawnObjects from enemy director.", string.Join(", ", disabledEnemyNames), spawnObjectsToRemove.Count)); List list = (from s in instance.enemiesDifficulty1.Concat(instance.enemiesDifficulty2).Concat(instance.enemiesDifficulty3) where s.spawnObjects.Any((PrefabRef so) => spawnObjectsToRemove.Any((PrefabRef removeRef) => (Object)(object)removeRef.Prefab == (Object)(object)so.Prefab)) select s).ToList(); for (int num = list.Count - 1; num >= 0; num--) { EnemySetup val = list[num]; Settings.Logger.LogDebug((object)("Removed enemy setup " + ((Object)val).name)); instance.enemiesDifficulty1.Remove(val); instance.enemiesDifficulty2.Remove(val); instance.enemiesDifficulty3.Remove(val); } } } public static class ItemsManager { private static Dictionary _removedList = new Dictionary(); private static bool StatsManagerItemDictionaryIsAvailable { get { if ((Object)(object)StatsManager.instance != (Object)null) { return StatsManager.instance.itemDictionary != null; } return false; } } public static Dictionary GetAllItems() { return _removedList.Concat>(StatsManager.instance.itemDictionary).ToDictionary((KeyValuePair pair) => pair.Key, (KeyValuePair pair) => pair.Value); } public static void RemoveItems() { RestoreItems(); Traverse.Create((object)StatsManager.instance).Method("LoadItemsFromFolder", Array.Empty()).GetValue(); if (SemiFunc.IsNotMasterClient() || SemiFunc.RunIsArena()) { return; } List disabledItemNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledItems); Level levelCurrent = RunManager.instance.levelCurrent; string text = ((levelCurrent != null) ? ((Object)levelCurrent).name : null); if (text != null) { if (SemiFunc.RunIsShop()) { text = "Shop"; } ISet disabledItemsForLevel = Settings.GetDisabledItemsForLevel(text); disabledItemNames.AddRange(disabledItemsForLevel); } if (StatsManagerItemDictionaryIsAvailable && StatsManager.instance.itemDictionary.Count != 0) { StatsManager.instance.item.Where((KeyValuePair keyValuePair) => disabledItemNames.Contains(keyValuePair.Key.ToItemFriendlyName())).ToList().ForEach(delegate(KeyValuePair keyValuePair) { StatsManager.instance.item.Remove(keyValuePair.Key); }); StatsManager.instance.itemDictionary.Where((KeyValuePair keyValuePair) => disabledItemNames.Contains(keyValuePair.Key.ToItemFriendlyName())).ToList().ForEach(delegate(KeyValuePair keyValuePair) { Settings.Logger.LogDebug((object)("Removed item " + keyValuePair.Key.ToItemFriendlyName() + ".")); _removedList.TryAdd(keyValuePair.Key, keyValuePair.Value); StatsManager.instance.itemDictionary.Remove(keyValuePair.Key); }); } } public static void RestoreItems() { if (StatsManagerItemDictionaryIsAvailable && _removedList.Count != 0) { for (int num = _removedList.Count - 1; num >= 0; num--) { KeyValuePair keyValuePair = _removedList.ElementAt(num); Settings.Logger.LogDebug((object)("Restored item " + keyValuePair.Key.ToItemFriendlyName() + ".")); StatsManager.instance.itemDictionary.TryAdd(keyValuePair.Key, keyValuePair.Value); _removedList.Remove(keyValuePair.Key); } } } } public static class LevelManager { private static List _removedList = new List(); private static List _removedListArena = new List(); private static List _removedListShop = new List(); public const string GenericArenaLevelName = "Arena"; public const string GenericShopLevelName = "Shop"; public static bool RunManagerLevelVariableIsAvailable { get { if ((Object)(object)RunManager.instance != (Object)null) { return RunManager.instance.levels != null; } return false; } } public static List GetAllLevels() { return _removedList.Concat(RunManager.instance.levels).ToList(); } public static List GetAllArenaLevels() { return _removedListArena.Concat(RunManager.instance.levelArena).ToList(); } public static List GetAllShopLevels() { return _removedListShop.Concat(RunManager.instance.levelShop).ToList(); } public static IEnumerable GetAllLevelsForItems() { List allLevels = GetAllLevels(); if (RunManagerLevelVariableIsAvailable) { Level val = ScriptableObject.CreateInstance(); ((Object)val).name = "Shop"; Level val2 = ScriptableObject.CreateInstance(); ((Object)val2).name = "Arena"; allLevels.Add(val); allLevels.Add(val2); } return allLevels; } public static void RemoveLevels() { if (!SemiFunc.IsNotMasterClient() && RunManagerLevelVariableIsAvailable) { List disabledLevelNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledLevels); RunManager.instance.levels.Where((Level l) => disabledLevelNames.Contains(((Object)l).name)).ToList().ForEach(delegate(Level level) { Settings.Logger.LogDebug((object)("Removed level " + ((Object)level).name + ".")); _removedList.Add(level); RunManager.instance.levels.Remove(level); }); RunManager.instance.levelArena.Where((Level l) => disabledLevelNames.Contains(((Object)l).name)).ToList().ForEach(delegate(Level level) { Settings.Logger.LogDebug((object)("Removed level " + ((Object)level).name + ".")); _removedListArena.Add(level); RunManager.instance.levelArena.Remove(level); }); RunManager.instance.levelShop.Where((Level l) => disabledLevelNames.Contains(((Object)l).name)).ToList().ForEach(delegate(Level level) { Settings.Logger.LogDebug((object)("Removed level " + ((Object)level).name + ".")); _removedListShop.Add(level); RunManager.instance.levelShop.Remove(level); }); if (RunManager.instance.levels.Count == 0) { Settings.Logger.LogError((object)"No levels left in RunManager. Quitting to Main Menu."); ((MonoBehaviour)RunManager.instance).StartCoroutine(RunManager.instance.LeaveToMainMenu()); } } } public static void RestoreLevels() { if (RunManagerLevelVariableIsAvailable && (_removedList.Count != 0 || _removedListArena.Count != 0 || _removedListShop.Count != 0)) { for (int num = _removedList.Count - 1; num >= 0; num--) { Level val = _removedList[num]; Settings.Logger.LogDebug((object)("Restored level " + ((Object)val).name + ".")); RunManager.instance.levels.Add(val); _removedList.RemoveAt(num); } for (int num2 = _removedListArena.Count - 1; num2 >= 0; num2--) { Level val2 = _removedListArena[num2]; Settings.Logger.LogDebug((object)("Restored level " + ((Object)val2).name + ".")); RunManager.instance.levelArena.Add(val2); _removedListArena.RemoveAt(num2); } for (int num3 = _removedListShop.Count - 1; num3 >= 0; num3--) { Level val3 = _removedListShop[num3]; Settings.Logger.LogDebug((object)("Restored level " + ((Object)val3).name + ".")); RunManager.instance.levelShop.Add(val3); _removedListShop.RemoveAt(num3); } } } public static bool IsValid() { List disabledLevelNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledLevels); if (RunManager.instance.levels.Any((Level l) => !disabledLevelNames.Contains(((Object)l).name)) && RunManager.instance.levelArena.Any((Level l) => !disabledLevelNames.Contains(((Object)l).name))) { return RunManager.instance.levelShop.Any((Level l) => !disabledLevelNames.Contains(((Object)l).name)); } return false; } } public static class MenuModManager { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action <>9__3_0; public static Func>, string> <>9__8_8; public static ScrollViewBuilderDelegate <>9__8_0; public static Func <>9__9_0; public static Func>, string> <>9__9_9; public static Func <>9__10_12; public static Func, bool> <>9__10_4; public static Func, string> <>9__10_5; public static Action <>9__10_13; public static Func <>9__10_7; public static ScrollViewBuilderDelegate <>9__10_0; public static Func <>9__12_0; public static Func <>9__12_10; public static Func <>9__12_5; public static Func <>9__13_13; public static Func <>9__13_14; public static Func <>9__13_15; public static Func <>9__13_4; public static Func <>9__13_5; public static Func <>9__13_6; public static ScrollViewBuilderDelegate <>9__13_7; public static ScrollViewBuilderDelegate <>9__13_8; public static Func, string> <>9__16_10; public static Func <>9__16_4; public static Func <>9__16_5; public static ScrollViewBuilderDelegate <>9__16_0; public static Func <>9__17_0; public static Func, string> <>9__17_11; public static Func <>9__17_5; public static Func <>9__17_6; internal void b__3_0() { CreatePopup().OpenPage(false); } internal RectTransform b__8_0(Transform parent) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass8_0 CS$<>8__locals0 = new <>c__DisplayClass8_0(); CS$<>8__locals0.button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, new Vector2(0f, -80f)); CS$<>8__locals0.button.onClick = 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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown if (_currentPageButton != CS$<>8__locals0.button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = CS$<>8__locals0.<>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; CS$<>8__locals0.<>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = CS$<>8__locals0.<>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; CS$<>8__locals0.<>9__3 = val4; obj2 = val3; } val.AddElement(obj2); EnemyManager.RefreshAllEnemyNames(); Settings.Logger.LogDebug((object)"Refreshed enemy names for menu."); List list = EnemyManager.EnemySpawnList.Keys.ToList(); list.Sort(); using (List.Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass8_1 { name = enumerator.Current }.b__9), 0f, 0f); } } _currentPageButton = CS$<>8__locals0.button; val.OpenPage(true); } }; return ((REPOElement)CS$<>8__locals0.button).rectTransform; } internal string b__8_8(KeyValuePair> kvp) { return kvp.Key; } internal string b__9_0(Level vo) { return ((Object)vo).name; } internal string b__9_9(KeyValuePair> kvp) { return kvp.Key; } internal RectTransform b__10_0(Transform parent) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass10_0 CS$<>8__locals0 = new <>c__DisplayClass10_0(); CS$<>8__locals0.button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, default(Vector2)); CS$<>8__locals0.button.onClick = delegate { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_004b: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_0070: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown <>c__DisplayClass10_1 CS$<>8__locals1 = new <>c__DisplayClass10_1(); if (_currentPageButton != CS$<>8__locals0.button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = CS$<>8__locals0.<>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; CS$<>8__locals0.<>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = CS$<>8__locals0.<>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; CS$<>8__locals0.<>9__3 = val4; obj2 = val3; } val.AddElement(obj2); ValuableManager.RefreshAllValuables(); Settings.Logger.LogDebug((object)$"Refreshed {ValuableManager.ValuableList.Count} valuable names for menu."); CS$<>8__locals1.tinyItems = from ai in ValuableManager.AllItems where ai.Value.PresetType == ValuableManager.ValuablePresetType.Tiny select ai into i select i.Key; val.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform valuablePageParent) => ((REPOElement)MenuAPI.CreateREPOSlider("Default Valuable", "This is used when not enough valuables are enabled for certain sizes. Only tiny items are allowed.", (Action)delegate(string stringValue) { Settings.DefaultValuable.Value = stringValue; }, valuablePageParent, CS$<>8__locals1.tinyItems.ToArray(), Settings.DefaultValuable.Value, default(Vector2), "", "", (BarBehavior)0)).rectTransform), 0f, 0f); using (IEnumerator enumerator = ValuableManager.ValuableList.OrderBy((ValuableObject vo) => ((Object)vo).name).GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass10_2 { valuableObject = enumerator.Current }.b__14), 0f, 0f); } } _currentPageButton = CS$<>8__locals0.button; val.OpenPage(true); } }; return ((REPOElement)CS$<>8__locals0.button).rectTransform; } internal string b__10_12(ValuableObject vo) { return ((Object)vo).name; } internal bool b__10_4(KeyValuePair ai) { return ai.Value.PresetType == ValuableManager.ValuablePresetType.Tiny; } internal string b__10_5(KeyValuePair i) { return i.Key; } internal void b__10_13(string stringValue) { Settings.DefaultValuable.Value = stringValue; } internal string b__10_7(ValuableObject vo) { return ((Object)vo).name; } internal string b__12_0(Level vo) { return ((Object)vo).name; } internal string b__12_10(ValuableObject vo) { return ((Object)vo).name; } internal string b__12_5(ValuableObject vo) { return ((Object)vo).name; } internal string b__13_13(Level l) { return ((Object)l).name; } internal string b__13_14(Level l) { return ((Object)l).name; } internal string b__13_15(Level l) { return ((Object)l).name; } internal string b__13_4(Level vo) { return ((Object)vo).name; } internal string b__13_5(Level vo) { return ((Object)vo).name; } internal string b__13_6(Level vo) { return ((Object)vo).name; } internal RectTransform b__13_7(Transform levelPageParent) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOLabel("Arenas (keep one)", levelPageParent, default(Vector2))).rectTransform; } internal RectTransform b__13_8(Transform levelPageParent) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOLabel("Shops (keep one)", levelPageParent, default(Vector2))).rectTransform; } internal RectTransform b__16_0(Transform parent) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass16_0 CS$<>8__locals0 = new <>c__DisplayClass16_0(); CS$<>8__locals0.button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, default(Vector2)); CS$<>8__locals0.button.onClick = 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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown if (_currentPageButton != CS$<>8__locals0.button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = CS$<>8__locals0.<>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; CS$<>8__locals0.<>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = CS$<>8__locals0.<>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; CS$<>8__locals0.button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; CS$<>8__locals0.<>9__3 = val4; obj2 = val3; } val.AddElement(obj2); using (IEnumerator enumerator = (from item in ItemsManager.GetAllItems().Keys select item.ToItemFriendlyName() into itemName orderby itemName select itemName).GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass16_1 { item = enumerator.Current }.b__11), 0f, 0f); } } _currentPageButton = CS$<>8__locals0.button; val.OpenPage(true); } }; return ((REPOElement)CS$<>8__locals0.button).rectTransform; } internal string b__16_10(KeyValuePair l) { return l.Key.ToItemFriendlyName(); } internal string b__16_4(string item) { return item.ToItemFriendlyName(); } internal string b__16_5(string itemName) { return itemName; } internal string b__17_0(Level vo) { return ((Object)vo).name; } internal string b__17_11(KeyValuePair kvp) { return kvp.Key.ToItemFriendlyName(); } internal string b__17_5(string item) { return item.ToItemFriendlyName(); } internal string b__17_6(string itemName) { return itemName; } } [CompilerGenerated] private sealed class <>c__DisplayClass10_0 { public REPOButton button; public Action <>9__9; public Action <>9__8; public BuilderDelegate <>9__2; public Action <>9__11; public Action <>9__10; public BuilderDelegate <>9__3; internal void b__1() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_004b: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_0070: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown <>c__DisplayClass10_1 CS$<>8__locals0 = new <>c__DisplayClass10_1(); if (_currentPageButton == button) { return; } MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = <>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; <>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = <>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; <>9__3 = val4; obj2 = val3; } val.AddElement(obj2); ValuableManager.RefreshAllValuables(); Settings.Logger.LogDebug((object)$"Refreshed {ValuableManager.ValuableList.Count} valuable names for menu."); CS$<>8__locals0.tinyItems = from ai in ValuableManager.AllItems where ai.Value.PresetType == ValuableManager.ValuablePresetType.Tiny select ai into i select i.Key; val.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform valuablePageParent) => ((REPOElement)MenuAPI.CreateREPOSlider("Default Valuable", "This is used when not enough valuables are enabled for certain sizes. Only tiny items are allowed.", (Action)delegate(string stringValue) { Settings.DefaultValuable.Value = stringValue; }, valuablePageParent, CS$<>8__locals0.tinyItems.ToArray(), Settings.DefaultValuable.Value, default(Vector2), "", "", (BarBehavior)0)).rectTransform), 0f, 0f); using (IEnumerator enumerator = ValuableManager.ValuableList.OrderBy((ValuableObject vo) => ((Object)vo).name).GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass10_2 { valuableObject = enumerator.Current }.b__14), 0f, 0f); } } _currentPageButton = button; val.OpenPage(true); } internal void b__2(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(367f, 20f)); } internal void b__8() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__9() { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; button.onClick(); } internal void b__3(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(536f, 20f)); } internal void b__10() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__11() { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); } } [CompilerGenerated] private sealed class <>c__DisplayClass10_1 { public IEnumerable tinyItems; internal RectTransform b__6(Transform valuablePageParent) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOSlider("Default Valuable", "This is used when not enough valuables are enabled for certain sizes. Only tiny items are allowed.", (Action)delegate(string stringValue) { Settings.DefaultValuable.Value = stringValue; }, valuablePageParent, tinyItems.ToArray(), Settings.DefaultValuable.Value, default(Vector2), "", "", (BarBehavior)0)).rectTransform; } } [CompilerGenerated] private sealed class <>c__DisplayClass10_2 { public ValuableObject valuableObject; public Action <>9__15; internal RectTransform b__14(Transform valuablePageParent) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOToggle(valuableObject.FriendlyName(), (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledValuables, ((Object)valuableObject).name, b); }, valuablePageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledValuables, ((Object)valuableObject).name))).rectTransform; } internal void b__15(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledValuables, ((Object)valuableObject).name, b); } } [CompilerGenerated] private sealed class <>c__DisplayClass16_0 { public REPOButton button; public Action <>9__7; public Action <>9__6; public BuilderDelegate <>9__2; public Action <>9__9; public Action <>9__8; public BuilderDelegate <>9__3; internal void b__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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown if (_currentPageButton == button) { return; } MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = <>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; <>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = <>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; <>9__3 = val4; obj2 = val3; } val.AddElement(obj2); using (IEnumerator enumerator = (from item in ItemsManager.GetAllItems().Keys select item.ToItemFriendlyName() into itemName orderby itemName select itemName).GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass16_1 { item = enumerator.Current }.b__11), 0f, 0f); } } _currentPageButton = button; val.OpenPage(true); } internal void b__2(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(367f, 20f)); } internal void b__6() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__7() { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; button.onClick(); } internal void b__3(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(536f, 20f)); } internal void b__8() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__9() { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); } } [CompilerGenerated] private sealed class <>c__DisplayClass16_1 { public string item; public Action <>9__12; internal RectTransform b__11(Transform itemPageParent) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOToggle(item, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledItems, item, b); }, itemPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledItems, item))).rectTransform; } internal void b__12(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledItems, item, b); } } [CompilerGenerated] private sealed class <>c__DisplayClass8_0 { public REPOButton button; public Action <>9__5; public Action <>9__4; public BuilderDelegate <>9__2; public Action <>9__7; public Action <>9__6; public BuilderDelegate <>9__3; internal void b__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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown if (_currentPageButton == button) { return; } MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj = <>9__2; if (obj == null) { BuilderDelegate val2 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val3 = val2; <>9__2 = val2; obj = val3; } val.AddElement(obj); BuilderDelegate obj2 = <>9__3; if (obj2 == null) { BuilderDelegate val4 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val3 = val4; <>9__3 = val4; obj2 = val3; } val.AddElement(obj2); EnemyManager.RefreshAllEnemyNames(); Settings.Logger.LogDebug((object)"Refreshed enemy names for menu."); List list = EnemyManager.EnemySpawnList.Keys.ToList(); list.Sort(); using (List.Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext()) { val.AddElementToScrollView(new ScrollViewBuilderDelegate(new <>c__DisplayClass8_1 { name = enumerator.Current }.b__9), 0f, 0f); } } _currentPageButton = button; val.OpenPage(true); } internal void b__2(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(367f, 20f)); } internal void b__4() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__5() { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; button.onClick(); } internal void b__3(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(536f, 20f)); } internal void b__6() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); }, (Action)null); } internal void b__7() { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); } } [CompilerGenerated] private sealed class <>c__DisplayClass8_1 { public string name; public Action <>9__10; internal RectTransform b__9(Transform enemyPageParent) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) return ((REPOElement)MenuAPI.CreateREPOToggle(name, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledEnemies, name, b); }, enemyPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledEnemies, name))).rectTransform; } internal void b__10(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledEnemies, name, b); } } private static object? _currentPageButton; private static object? _mainMenuButton; public static void Initialize() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown MenuAPI.AddElementToMainMenu(new BuilderDelegate(CreateMainMenuButton)); } private static void CreateMainMenuButton(Transform parent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) _mainMenuButton = MenuAPI.CreateREPOButton("Spawn Manager", (Action)delegate { CreatePopup().OpenPage(false); }, parent, new Vector2(550f, 22f)); SetMainMenuButtonVisibility(); } private static void SetMainMenuButtonVisibility() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.IsMainMenu() && _mainMenuButton != null) { ((Component)(REPOButton)_mainMenuButton).gameObject.SetActive(Settings.ShowSpawnManagerButton.Value); } } public static void OnShowSpawnManagerButtonChanged(object sender, EventArgs args) { SetMainMenuButtonVisibility(); } private static REPOPopupPage CreatePopup() { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown REPOPopupPage menu = MenuAPI.CreateREPOPopupPage("Spawn Manager", (PresetSide)0, false, true, 0f); LevelManager.RestoreLevels(); ValuableManager.RestoreValuableObjects(); ItemsManager.RestoreItems(); Settings.InitializeEnemiesLevels(); Settings.InitializeItemsLevels(); Settings.InitializeValuablesLevels(); CreateSubMenuEnemies(menu); CreateLevelPage(menu, out REPOButton levelButton); CreateSubMenuItems(menu); CreateSubMenuValuables(menu); menu.AddElement((BuilderDelegate)delegate(Transform parent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Back", (Action)delegate { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (!LevelManager.IsValid()) { MenuAPI.OpenPopup("Invalid Levels", Color.red, "Please make sure you have at least one level enabled in each category. Would you like to edit the selections now?", (Action)delegate { levelButton.onClick(); }, (Action)null); } else { menu.ClosePage(true); } }, parent, new Vector2(77f, 20f)); }); return menu; } private static void CreateSubMenuEnemies(REPOPopupPage menu) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown REPOPopupPage menu2 = menu; menu2.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) REPOButton obj = MenuAPI.CreateREPOButton("Enemies", (Action)null, parent, default(Vector2)); obj.onClick = delegate { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown REPOPopupPage subMenu = MenuAPI.CreateREPOPopupPage("Enemies", (PresetSide)0, false, true, 0f); CreateEnemyPage(subMenu); CreateLevelEnemyPage(subMenu); subMenu.AddElement((BuilderDelegate)delegate(Transform subMenuparent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Back", (Action)delegate { subMenu.ClosePage(true); CreatePopup().OpenPage(false); }, subMenuparent, new Vector2(77f, 20f)); }); menu2.ClosePage(true); subMenu.OpenPage(false); }; return ((REPOElement)obj).rectTransform; }, 0f, 0f); } private static void CreateEnemyPage(REPOPopupPage menu) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__8_0; if (obj == null) { ScrollViewBuilderDelegate val = delegate(Transform parent) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) REPOButton button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, new Vector2(0f, -80f)); BuilderDelegate val2 = default(BuilderDelegate); BuilderDelegate val3 = default(BuilderDelegate); button.onClick = 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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val4 = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val5 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledEnemies).BoxedValue = ((ConfigEntryBase)Settings.DisabledEnemies).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val6 = val5; val2 = val5; obj2 = val6; } val4.AddElement(obj2); BuilderDelegate obj3 = val3; if (obj3 == null) { BuilderDelegate val7 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { Settings.DisabledEnemies.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); }, (Action)null); }, enemyPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val6 = val7; val3 = val7; obj3 = val6; } val4.AddElement(obj3); EnemyManager.RefreshAllEnemyNames(); Settings.Logger.LogDebug((object)"Refreshed enemy names for menu."); List list = EnemyManager.EnemySpawnList.Keys.ToList(); list.Sort(); foreach (string name in list) { val4.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform enemyPageParent) => ((REPOElement)MenuAPI.CreateREPOToggle(name, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledEnemies, name, b); }, enemyPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledEnemies, name))).rectTransform), 0f, 0f); } _currentPageButton = button; val4.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }; <>c.<>9__8_0 = val; obj = (object)val; } menu.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f); } private static void CreateLevelEnemyPage(REPOPopupPage menu) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown foreach (Level level in from vo in LevelManager.GetAllLevels() orderby ((Object)vo).name select vo) { menu.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) string friendlyName = level.FriendlyName(); REPOButton button = MenuAPI.CreateREPOButton(friendlyName ?? "", (Action)null, parent, default(Vector2)); BuilderDelegate val = default(BuilderDelegate); BuilderDelegate val2 = default(BuilderDelegate); button.onClick = delegate { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_004f: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_0074: Expected O, but got Unknown //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val3 = MenuAPI.CreateREPOPopupPage(friendlyName ?? "", (PresetSide)1, false, false, 0f); BuilderDelegate obj = val; if (obj == null) { BuilderDelegate val4 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all enemies?", (Action)delegate { if (Settings.DisabledLevelEnemies.TryGetValue(((Object)level).name, out ConfigEntry value2)) { ((ConfigEntryBase)value2).BoxedValue = ((ConfigEntryBase)value2).DefaultValue; _currentPageButton = null; button.onClick(); } }, (Action)null); }, enemyPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val5 = val4; val = val4; obj = val5; } val3.AddElement(obj); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val6 = delegate(Transform enemyPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all enemies?", (Action)delegate { if (Settings.DisabledLevelEnemies.TryGetValue(((Object)level).name, out ConfigEntry value)) { value.Value = string.Join(',', EnemyManager.EnemySpawnList.Select>, string>((KeyValuePair> kvp) => kvp.Key)); _currentPageButton = null; button.onClick(); } }, (Action)null); }, enemyPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val5 = val6; val2 = val6; obj2 = val5; } val3.AddElement(obj2); EnemyManager.RefreshAllEnemyNames(); Settings.Logger.LogDebug((object)"Refreshed enemy names for menu."); List list = EnemyManager.EnemySpawnList.Keys.ToList(); list.Sort(); foreach (string name in list) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform enemyPageParent) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) ConfigEntry configEntry = Settings.DisabledLevelEnemies[((Object)level).name]; return ((REPOElement)MenuAPI.CreateREPOToggle(name, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(configEntry, name, b); }, enemyPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(configEntry, name))).rectTransform; }, 0f, 0f); } _currentPageButton = button; val3.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }, 0f, 0f); } } private static void CreateValuablePage(REPOPopupPage menu) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__10_0; if (obj == null) { ScrollViewBuilderDelegate val = delegate(Transform parent) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) REPOButton button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, default(Vector2)); BuilderDelegate val2 = default(BuilderDelegate); BuilderDelegate val3 = default(BuilderDelegate); button.onClick = delegate { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_004b: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_0070: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val4 = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val5 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledValuables).BoxedValue = ((ConfigEntryBase)Settings.DisabledValuables).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(367f, 20f)); }; BuilderDelegate val6 = val5; val2 = val5; obj2 = val6; } val4.AddElement(obj2); BuilderDelegate obj3 = val3; if (obj3 == null) { BuilderDelegate val7 = delegate(Transform valuablePageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { Settings.DisabledValuables.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); }, (Action)null); }, valuablePageParent, new Vector2(536f, 20f)); }; BuilderDelegate val6 = val7; val3 = val7; obj3 = val6; } val4.AddElement(obj3); ValuableManager.RefreshAllValuables(); Settings.Logger.LogDebug((object)$"Refreshed {ValuableManager.ValuableList.Count} valuable names for menu."); IEnumerable tinyItems = from ai in ValuableManager.AllItems where ai.Value.PresetType == ValuableManager.ValuablePresetType.Tiny select ai into i select i.Key; val4.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform valuablePageParent) => ((REPOElement)MenuAPI.CreateREPOSlider("Default Valuable", "This is used when not enough valuables are enabled for certain sizes. Only tiny items are allowed.", (Action)delegate(string stringValue) { Settings.DefaultValuable.Value = stringValue; }, valuablePageParent, tinyItems.ToArray(), Settings.DefaultValuable.Value, default(Vector2), "", "", (BarBehavior)0)).rectTransform), 0f, 0f); foreach (ValuableObject valuableObject in ValuableManager.ValuableList.OrderBy((ValuableObject vo) => ((Object)vo).name)) { val4.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform valuablePageParent) => ((REPOElement)MenuAPI.CreateREPOToggle(valuableObject.FriendlyName(), (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledValuables, ((Object)valuableObject).name, b); }, valuablePageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledValuables, ((Object)valuableObject).name))).rectTransform), 0f, 0f); } _currentPageButton = button; val4.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }; <>c.<>9__10_0 = val; obj = (object)val; } menu.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f); } private static void CreateSubMenuValuables(REPOPopupPage menu) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown REPOPopupPage menu2 = menu; menu2.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) REPOButton obj = MenuAPI.CreateREPOButton("Valuables", (Action)null, parent, default(Vector2)); obj.onClick = delegate { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown REPOPopupPage subMenu = MenuAPI.CreateREPOPopupPage("Valuables", (PresetSide)0, false, true, 0f); CreateValuablePage(subMenu); CreateLevelValuablesPages(subMenu); subMenu.AddElement((BuilderDelegate)delegate(Transform subMenuParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Back", (Action)delegate { subMenu.ClosePage(true); CreatePopup().OpenPage(false); }, subMenuParent, new Vector2(77f, 20f)); }); menu2.ClosePage(true); subMenu.OpenPage(false); }; return ((REPOElement)obj).rectTransform; }, 0f, 0f); } private static void CreateLevelValuablesPages(REPOPopupPage menu) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown foreach (Level level in from vo in LevelManager.GetAllLevels() orderby ((Object)vo).name select vo) { menu.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) string friendlyName = level.FriendlyName(); REPOButton button = MenuAPI.CreateREPOButton(friendlyName ?? "", (Action)null, parent, default(Vector2)); BuilderDelegate val = default(BuilderDelegate); BuilderDelegate val2 = default(BuilderDelegate); button.onClick = delegate { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_004f: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_0074: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val3 = MenuAPI.CreateREPOPopupPage(friendlyName ?? "", (PresetSide)1, false, false, 0f); BuilderDelegate obj = val; if (obj == null) { BuilderDelegate val4 = delegate(Transform pageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all valuables?", (Action)delegate { if (Settings.DisabledLevelValuables.TryGetValue(((Object)level).name, out ConfigEntry value2)) { ((ConfigEntryBase)value2).BoxedValue = ((ConfigEntryBase)value2).DefaultValue; _currentPageButton = null; button.onClick(); } }, (Action)null); }, pageParent, new Vector2(367f, 20f)); }; BuilderDelegate val5 = val4; val = val4; obj = val5; } val3.AddElement(obj); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val6 = delegate(Transform pageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all valuables?", (Action)delegate { if (Settings.DisabledLevelValuables.TryGetValue(((Object)level).name, out ConfigEntry value)) { value.Value = string.Join(',', ValuableManager.ValuableList.Select((ValuableObject vo) => ((Object)vo).name)); _currentPageButton = null; button.onClick(); } }, (Action)null); }, pageParent, new Vector2(536f, 20f)); }; BuilderDelegate val5 = val6; val2 = val6; obj2 = val5; } val3.AddElement(obj2); ValuableManager.RefreshAllValuables(); Settings.Logger.LogDebug((object)$"Refreshed {ValuableManager.ValuableList.Count} valuable names for menu."); foreach (ValuableObject valuableObject in ValuableManager.ValuableList.OrderBy((ValuableObject vo) => ((Object)vo).name)) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform pageParent) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) ConfigEntry configEntry = Settings.DisabledLevelValuables[((Object)level).name]; return ((REPOElement)MenuAPI.CreateREPOToggle(((Object)valuableObject).name, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(configEntry, ((Object)valuableObject).name, b); }, pageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(configEntry, ((Object)valuableObject).name))).rectTransform; }, 0f, 0f); } _currentPageButton = button; val3.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }, 0f, 0f); } } private static void CreateLevelPage(REPOPopupPage menu, out REPOButton levelButton) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown REPOButton localButton = null; menu.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) REPOButton button = MenuAPI.CreateREPOButton("Levels", (Action)null, parent, default(Vector2)); BuilderDelegate val = default(BuilderDelegate); BuilderDelegate val2 = default(BuilderDelegate); button.onClick = 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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Expected O, but got Unknown //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Expected O, but got Unknown //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Expected O, but got Unknown //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val3 = MenuAPI.CreateREPOPopupPage("Levels", (PresetSide)1, false, false, 0f); BuilderDelegate obj = val; if (obj == null) { BuilderDelegate val4 = delegate(Transform levelPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all Levels?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledLevels).BoxedValue = ((ConfigEntryBase)Settings.DisabledLevels).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, levelPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val5 = val4; val = val4; obj = val5; } val3.AddElement(obj); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val6 = delegate(Transform levelPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all Levels?", (Action)delegate { Settings.DisabledLevels.Value = string.Join(',', (from l in LevelManager.GetAllLevels() select ((Object)l).name).Concat(from l in LevelManager.GetAllArenaLevels() select ((Object)l).name).Concat(from l in LevelManager.GetAllShopLevels() select ((Object)l).name)); _currentPageButton = null; button.onClick(); }, (Action)null); }, levelPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val5 = val6; val2 = val6; obj2 = val5; } val3.AddElement(obj2); IOrderedEnumerable orderedEnumerable = from vo in LevelManager.GetAllLevels() orderby ((Object)vo).name select vo; IOrderedEnumerable orderedEnumerable2 = from vo in LevelManager.GetAllArenaLevels() orderby ((Object)vo).name select vo; IOrderedEnumerable orderedEnumerable3 = from vo in LevelManager.GetAllShopLevels() orderby ((Object)vo).name select vo; foreach (Level level3 in orderedEnumerable) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform levelPageParent) => AddLevelOption(level3, levelPageParent)), 0f, 0f); } object obj3 = <>c.<>9__13_7; if (obj3 == null) { ScrollViewBuilderDelegate val7 = (Transform levelPageParent) => ((REPOElement)MenuAPI.CreateREPOLabel("Arenas (keep one)", levelPageParent, default(Vector2))).rectTransform; <>c.<>9__13_7 = val7; obj3 = (object)val7; } val3.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f); foreach (Level level2 in orderedEnumerable2) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform levelPageParent) => AddLevelOption(level2, levelPageParent)), 0f, 0f); } object obj4 = <>c.<>9__13_8; if (obj4 == null) { ScrollViewBuilderDelegate val8 = (Transform levelPageParent) => ((REPOElement)MenuAPI.CreateREPOLabel("Shops (keep one)", levelPageParent, default(Vector2))).rectTransform; <>c.<>9__13_8 = val8; obj4 = (object)val8; } val3.AddElementToScrollView((ScrollViewBuilderDelegate)obj4, 0f, 0f); foreach (Level level in orderedEnumerable3) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform levelPageParent) => AddLevelOption(level, levelPageParent)), 0f, 0f); } _currentPageButton = button; val3.OpenPage(true); } }; localButton = button; return ((REPOElement)button).rectTransform; }, 0f, 0f); levelButton = localButton; } private static RectTransform AddLevelOption(Level level, Transform parent) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) Level level2 = level; return ((REPOElement)MenuAPI.CreateREPOToggle(level2.FriendlyName(), (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledLevels, ((Object)level2).name, b); }, parent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledLevels, ((Object)level2).name))).rectTransform; } private static void CreateSubMenuItems(REPOPopupPage menu) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown REPOPopupPage menu2 = menu; menu2.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) REPOButton obj = MenuAPI.CreateREPOButton("Shop Items", (Action)null, parent, default(Vector2)); obj.onClick = delegate { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown REPOPopupPage subMenu = MenuAPI.CreateREPOPopupPage("Shop Items", (PresetSide)0, false, true, 0f); CreateItemPage(subMenu); CreateLevelItemPages(subMenu); subMenu.AddElement((BuilderDelegate)delegate(Transform subMenuParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Back", (Action)delegate { subMenu.ClosePage(true); CreatePopup().OpenPage(false); }, subMenuParent, new Vector2(77f, 20f)); }); menu2.ClosePage(true); subMenu.OpenPage(false); }; return ((REPOElement)obj).rectTransform; }, 0f, 0f); } private static void CreateItemPage(REPOPopupPage menu) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__16_0; if (obj == null) { ScrollViewBuilderDelegate val = delegate(Transform parent) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) REPOButton button = MenuAPI.CreateREPOButton("Global", (Action)null, parent, default(Vector2)); BuilderDelegate val2 = default(BuilderDelegate); BuilderDelegate val3 = default(BuilderDelegate); button.onClick = 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_0040: Expected O, but got Unknown //IL_0045: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_006a: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val4 = MenuAPI.CreateREPOPopupPage("Global", (PresetSide)1, false, false, 0f); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val5 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { ((ConfigEntryBase)Settings.DisabledItems).BoxedValue = ((ConfigEntryBase)Settings.DisabledItems).DefaultValue; _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val6 = val5; val2 = val5; obj2 = val6; } val4.AddElement(obj2); BuilderDelegate obj3 = val3; if (obj3 == null) { BuilderDelegate val7 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { Settings.DisabledItems.Value = string.Join(',', from l in ItemsManager.GetAllItems() select l.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); }, (Action)null); }, itemPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val6 = val7; val3 = val7; obj3 = val6; } val4.AddElement(obj3); foreach (string item2 in from item in ItemsManager.GetAllItems().Keys select item.ToItemFriendlyName() into itemName orderby itemName select itemName) { val4.AddElementToScrollView((ScrollViewBuilderDelegate)((Transform itemPageParent) => ((REPOElement)MenuAPI.CreateREPOToggle(item2, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(Settings.DisabledItems, item2, b); }, itemPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(Settings.DisabledItems, item2))).rectTransform), 0f, 0f); } _currentPageButton = button; val4.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }; <>c.<>9__16_0 = val; obj = (object)val; } menu.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f); } private static void CreateLevelItemPages(REPOPopupPage menu) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown foreach (Level level in from vo in LevelManager.GetAllLevelsForItems().ToList() orderby ((Object)vo).name select vo) { menu.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform parent) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) string friendlyName = level.FriendlyName(); REPOButton button = MenuAPI.CreateREPOButton(friendlyName ?? "", (Action)null, parent, default(Vector2)); BuilderDelegate val = default(BuilderDelegate); BuilderDelegate val2 = default(BuilderDelegate); button.onClick = delegate { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_004f: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_0074: Expected O, but got Unknown //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Expected O, but got Unknown if (_currentPageButton != button) { MenuAPI.CloseAllPagesAddedOnTop(); REPOPopupPage val3 = MenuAPI.CreateREPOPopupPage(friendlyName ?? "", (PresetSide)1, false, false, 0f); BuilderDelegate obj = val; if (obj == null) { BuilderDelegate val4 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Enable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Enable All", Color.red, "Enable all shop items?", (Action)delegate { if (Settings.DisabledLevelItems.TryGetValue(((Object)level).name, out ConfigEntry value2)) { ((ConfigEntryBase)value2).BoxedValue = ((ConfigEntryBase)value2).DefaultValue; _currentPageButton = null; button.onClick(); } }, (Action)null); }, itemPageParent, new Vector2(367f, 20f)); }; BuilderDelegate val5 = val4; val = val4; obj = val5; } val3.AddElement(obj); BuilderDelegate obj2 = val2; if (obj2 == null) { BuilderDelegate val6 = delegate(Transform itemPageParent) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) MenuAPI.CreateREPOButton("Disable All", (Action)delegate { //IL_0005: Unknown result type (might be due to invalid IL or missing references) MenuAPI.OpenPopup("Disable All", Color.red, "Disable all shop items?", (Action)delegate { if (Settings.DisabledLevelItems.TryGetValue(((Object)level).name, out ConfigEntry value)) { value.Value = string.Join(',', from kvp in ItemsManager.GetAllItems() select kvp.Key.ToItemFriendlyName()); _currentPageButton = null; button.onClick(); } }, (Action)null); }, itemPageParent, new Vector2(536f, 20f)); }; BuilderDelegate val5 = val6; val2 = val6; obj2 = val5; } val3.AddElement(obj2); foreach (string name in from item in ItemsManager.GetAllItems().Keys select item.ToItemFriendlyName() into itemName orderby itemName select itemName) { val3.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform itemPageParent) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) ConfigEntry configEntry = Settings.DisabledLevelItems[((Object)level).name]; return ((REPOElement)MenuAPI.CreateREPOToggle(name, (Action)delegate(bool b) { Settings.UpdateSettingsListEntry(configEntry, name, b); }, itemPageParent, default(Vector2), "ON", "OFF", Settings.IsSettingsListEntryEnabled(configEntry, name))).rectTransform; }, 0f, 0f); } _currentPageButton = button; val3.OpenPage(true); } }; return ((REPOElement)button).rectTransform; }, 0f, 0f); } } } public static class PluginManager { public static bool IsPluginInstalled(string pluginGuid) { string pluginGuid2 = pluginGuid; return Chainloader.PluginInfos.Keys.Any((string pluginInfo) => pluginInfo == pluginGuid2); } } public static class ValuableManager { public enum ValuablePresetType { Tiny, Small, Medium, Big, Wide, Tall, VeryTall } public static List ValuableList = new List(); public static Dictionary RemovedList = new Dictionary(); public static Dictionary LevelValuablesDictionary = new Dictionary(); public static Dictionary AllItems = new Dictionary(); public static void RefreshAllValuables() { if ((Object)(object)RunManager.instance != (Object)null && RunManager.instance.levels != null) { if (AllItems.Count == 0) { foreach (Level level in RunManager.instance.levels) { foreach (LevelValuables valuablePreset in level.ValuablePresets) { AddItemsToDictionary(valuablePreset.tiny, ((Object)valuablePreset).name, ValuablePresetType.Tiny); AddItemsToDictionary(valuablePreset.small, ((Object)valuablePreset).name, ValuablePresetType.Small); AddItemsToDictionary(valuablePreset.medium, ((Object)valuablePreset).name, ValuablePresetType.Medium); AddItemsToDictionary(valuablePreset.big, ((Object)valuablePreset).name, ValuablePresetType.Big); AddItemsToDictionary(valuablePreset.wide, ((Object)valuablePreset).name, ValuablePresetType.Wide); AddItemsToDictionary(valuablePreset.tall, ((Object)valuablePreset).name, ValuablePresetType.Tall); AddItemsToDictionary(valuablePreset.veryTall, ((Object)valuablePreset).name, ValuablePresetType.VeryTall); } } } ValuableList = (from go in RunManager.instance.levels.SelectMany(delegate(Level l) { IEnumerable valuablePresets = l.ValuablePresets; return valuablePresets ?? Enumerable.Empty(); }).SelectMany((LevelValuables lv) => (lv?.tiny?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()).Concat(lv?.small?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()).Concat(lv?.medium?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()).Concat(lv?.big?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()) .Concat(lv?.wide?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()) .Concat(lv?.tall?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty()) .Concat(lv?.veryTall?.Where((PrefabRef go) => go != null) ?? Enumerable.Empty())) select (go == null) ? null : go.Prefab.GetComponent() into vo where (Object)(object)vo != (Object)null select vo).Distinct().ToList(); } else { ValuableList = new List(); } } public static void RemoveValuables() { if (SemiFunc.IsNotMasterClient() || !LevelManager.RunManagerLevelVariableIsAvailable) { return; } RestoreValuableObjects(); RefreshAllValuables(); Settings.InitializeValuablesLevels(); List disabledValuableNames = Settings.GetDisabledSettingsEntryListNames(Settings.DisabledValuables); Level levelCurrent = RunManager.instance.levelCurrent; string text = ((levelCurrent != null) ? ((Object)levelCurrent).name : null); if (text != null) { ISet disabledValuablesForLevel = Settings.GetDisabledValuablesForLevel(text); disabledValuableNames.AddRange(disabledValuablesForLevel); } if (disabledValuableNames.Count != 0) { List list = ValuableList.Where((ValuableObject valuableObject) => disabledValuableNames.Contains(((Object)valuableObject).name)).ToList(); Settings.Logger.LogDebug((object)string.Format("Valuables to disable: {0} | Removing {1} valuables from levels.", string.Join(", ", disabledValuableNames), list.Count)); RemoveValuableObjects(list); } } private static void RemoveValuableObjects(List valuableObjectsToRemove) { if ((Object)(object)RunManager.instance == (Object)null || RunManager.instance.levels == null) { return; } bool flag = false; foreach (LevelValuables item in RunManager.instance.levels.SelectMany((Level level) => level.ValuablePresets)) { if (item.IsGenericList() && flag) { continue; } RemoveValuableObjectsFromList(item.tiny, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.small, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.medium, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.big, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.wide, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.tall, valuableObjectsToRemove); RemoveValuableObjectsFromList(item.veryTall, valuableObjectsToRemove); if (!item.IsGenericList()) { continue; } if (!item.tiny.Any()) { item.tiny.Add(AllItems.First>((KeyValuePair i) => i.Key == Settings.DefaultValuable.Value).Value.ValuablePrefabRef); } List list = item.tiny.ToList(); if (!item.small.Any()) { item.small.Add(list[Random.Range(0, list.Count)]); } list = list.Concat(item.small).ToList(); if (!item.medium.Any()) { item.medium.Add(list[Random.Range(0, list.Count)]); } list = list.Concat(item.medium).ToList(); if (!item.big.Any()) { item.big.Add(list[Random.Range(0, list.Count)]); } list = list.Concat(item.big).ToList(); if (!item.wide.Any()) { item.wide.Add(list[Random.Range(0, list.Count)]); } list = list.Concat(item.big).ToList(); if (!item.tall.Any()) { item.tall.Add(list[Random.Range(0, list.Count)]); } list = list.Concat(item.tall).ToList(); if (!item.veryTall.Any()) { item.veryTall.Add(list[Random.Range(0, list.Count)]); } flag = true; } } private static void RemoveValuableObjectsFromList(List list, List valuableObjectsToRemove) { List valuableObjectsToRemove2 = valuableObjectsToRemove; int count = list.Count; foreach (PrefabRef item in from obj in list.ToList() where valuableObjectsToRemove2.Contains(obj.Prefab.GetComponent()) select obj) { Settings.Logger.LogDebug((object)("Removed valuable object " + ((Object)item.Prefab).name + " from list.")); list.Remove(item); } if (count - list.Count > 0) { Settings.Logger.LogDebug((object)$"Removed {count - list.Count} valuable objects from list."); } } public static void RestoreValuableObjects() { Settings.Logger.LogDebug((object)$"All items [{AllItems.Count}]"); if (AllItems.Count == 0) { return; } Settings.Logger.LogDebug((object)$"Run manager levels [{RunManager.instance?.levels.Count}]"); if ((Object)(object)RunManager.instance == (Object)null || RunManager.instance.levels == null) { return; } foreach (Level level in RunManager.instance.levels) { foreach (LevelValuables valuablePreset in level.ValuablePresets) { RestoreValuableObjectsFromList(valuablePreset.tiny, ((Object)valuablePreset).name, ValuablePresetType.Tiny); RestoreValuableObjectsFromList(valuablePreset.small, ((Object)valuablePreset).name, ValuablePresetType.Small); RestoreValuableObjectsFromList(valuablePreset.medium, ((Object)valuablePreset).name, ValuablePresetType.Medium); RestoreValuableObjectsFromList(valuablePreset.big, ((Object)valuablePreset).name, ValuablePresetType.Big); RestoreValuableObjectsFromList(valuablePreset.wide, ((Object)valuablePreset).name, ValuablePresetType.Wide); RestoreValuableObjectsFromList(valuablePreset.tall, ((Object)valuablePreset).name, ValuablePresetType.Tall); RestoreValuableObjectsFromList(valuablePreset.veryTall, ((Object)valuablePreset).name, ValuablePresetType.VeryTall); } } } private static void RestoreValuableObjectsFromList(List list, string valuablePresetName, ValuablePresetType type) { string valuablePresetName2 = valuablePresetName; List list2 = list; List list3 = new List(); foreach (ValuableMetaData item in AllItems.Values.Where((ValuableMetaData meta) => meta.PresetType == type && meta.ValuablePresetName == valuablePresetName2 && !list2.Contains(meta.ValuablePrefabRef))) { list3.Add(((Object)item.ValuablePrefabRef.Prefab).name); list2.Add(item.ValuablePrefabRef); } if (list3.Count != 0) { Settings.Logger.LogDebug((object)string.Format("Restored valuables for {0}:{1} ({2})", valuablePresetName2, type, string.Join(", ", list3))); } } public static string GetValuablePresetTypePath(ValuablePresetType type) { return type switch { ValuablePresetType.Tiny => "01 Tiny", ValuablePresetType.Small => "02 Small", ValuablePresetType.Medium => "03 Medium", ValuablePresetType.Big => "04 Big", ValuablePresetType.Wide => "05 Wide", ValuablePresetType.Tall => "06 Tall", ValuablePresetType.VeryTall => "07 Very Tall", _ => "Valuable Size Not Found - Spawn Manager", }; } private static void AddItemsToDictionary(List list, string valuablePresetName, ValuablePresetType type) { foreach (PrefabRef item in list) { if (item != null) { AllItems.TryAdd(((Object)item.Prefab).name, new ValuableMetaData(item, valuablePresetName, type)); } } } } public class ValuableMetaData { public PrefabRef ValuablePrefabRef { get; set; } public string ValuablePresetName { get; set; } public ValuableManager.ValuablePresetType PresetType { get; set; } public ValuableMetaData(PrefabRef valuable, string valuablePresetName, ValuableManager.ValuablePresetType presetType) { ValuablePrefabRef = valuable; ValuablePresetName = valuablePresetName; PresetType = presetType; } } } namespace SpawnManager.Extensions { public static class Extensions { public static string FriendlyName(this ValuableObject valuableObject) { return ((Object)valuableObject).name.Replace("Valuable ", ""); } public static string GetKey(this Level level) { return ((Object)level).name; } public static string FriendlyName(this Level level) { return ((Object)level).name.Replace("Level - ", ""); } public static string GetKey(this LevelValuables levelValuables) { return ((Object)levelValuables).name; } public static string ToItemFriendlyName(this string item) { return item.Replace("Item ", "").Trim(); } public static bool IsGenericList(this LevelValuables levelValuables) { return ((Object)levelValuables).name.Contains("Generic"); } public static void RemoveItems(this List items, List disabledItemNames) { if (items.Count == 0) { Settings.Logger.LogDebug((object)"[RemoveItems] items is null or empty - skipping removal."); return; } if (disabledItemNames.Count == 0) { Settings.Logger.LogDebug((object)"[RemoveItems] No disabled items to check - skipping removal."); return; } List list = new List(); foreach (Item item2 in items) { string item = ((Object)item2).name?.ToItemFriendlyName() ?? ""; if (disabledItemNames.Contains(item)) { list.Add(item2); } } foreach (Item item3 in list) { Settings.Logger.LogDebug((object)("[RemoveItems] Removed item " + (item3.itemName?.ToItemFriendlyName() ?? "unknown") + " from items.")); items.Remove(item3); } } } }