The BepInEx console will not appear when launching like it does for other games on Thunderstore. This is normal (and helps prevent crashes during startup). You can turn it back on in your BepInEx.cfg file.
Decompiled source of MorePeak v1.9.1
BepInEx/plugins/MorePeak/MorePeak.dll
Decompiled 2 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using MorePeak.MonoBehaviours; using Photon.Pun; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MorePeak")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+880fc0d843c29e90145ae173cb47bba04fddd828")] [assembly: AssemblyProduct("MorePeak")] [assembly: AssemblyTitle("MorePeak")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MorePeak { [BepInPlugin("com.smckeen.morepeak", "MorePeak", "1.9.0")] public class MorePeakPlugin : BaseUnityPlugin { [HarmonyPatch(typeof(MapBaker), "GetLevel")] private static class MapBaker_GetLevel_Patch { private static bool hasLoggedLevels; private static bool Prefix(MapBaker __instance, int levelIndex, ref string __result) { try { if (__instance?.AllLevels == null || __instance.AllLevels.Length == 0) { return true; } if (!hasLoggedLevels) { ModLogger.LogInfo((object)"=== AVAILABLE LEVELS ==="); for (int i = 0; i < __instance.AllLevels.Length; i++) { string path = __instance.AllLevels[i] ?? "Unknown"; string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path); ModLogger.LogInfo((object)$"Level {i}: {fileNameWithoutExtension}"); } ModLogger.LogInfo((object)"========================"); ModLogger.LogInfo((object)"You can now set 'SelectedLevel' in the config file to any of these level names, or keep it as 'Random'"); hasLoggedLevels = true; } if (PhotonNetwork.InRoom && !PhotonNetwork.IsMasterClient) { ModLogger.LogInfo((object)"[CLIENT] Non-master client called GetLevel - using original method"); return true; } int instanceID = ((Object)__instance).GetInstanceID(); float time = Time.time; if (lastRandomizeTime.ContainsKey(instanceID) && time - lastRandomizeTime[instanceID] < 1f) { return true; } lastRandomizeTime[instanceID] = time; if (lastRandomizeTime.Count > 10) { List<int> list = new List<int>(); float num = time - 300f; foreach (KeyValuePair<int, float> item in lastRandomizeTime) { if (item.Value < num) { list.Add(item.Key); } } foreach (int item2 in list) { lastRandomizeTime.Remove(item2); } if (list.Count > 0) { ModLogger.LogDebug((object)$"Cleaned up {list.Count} old randomize time entries"); } } string text = selectedLevelConfig?.Value?.Trim() ?? "Random"; string text2 = (PhotonNetwork.InRoom ? "[MASTER]" : "[OFFLINE]"); if (text.Equals("Daily", StringComparison.OrdinalIgnoreCase)) { ModLogger.LogInfo((object)(text2 + " Using vanilla daily map")); return true; } if (text.Equals("Random", StringComparison.OrdinalIgnoreCase)) { int num2 = Random.Range(0, __instance.AllLevels.Length); string path2 = __instance.AllLevels[num2] ?? ""; __result = Path.GetFileNameWithoutExtension(path2); ModLogger.LogInfo((object)$"{text2} Random level selected: {__result} (index {num2})"); currentLevelName = __result; showLevelGUI = true; return false; } if (text.Contains(",")) { string[] array = text.Split(','); List<string> list2 = new List<string>(); string[] array2 = array; foreach (string text3 in array2) { string value = text3.Trim(); if (string.IsNullOrEmpty(value)) { continue; } for (int k = 0; k < __instance.AllLevels.Length; k++) { string path3 = __instance.AllLevels[k] ?? ""; string fileNameWithoutExtension2 = Path.GetFileNameWithoutExtension(path3); if (fileNameWithoutExtension2.Equals(value, StringComparison.OrdinalIgnoreCase)) { list2.Add(fileNameWithoutExtension2); break; } } } if (list2.Count > 0) { string text4 = list2[Random.Range(0, list2.Count)]; __result = text4; ModLogger.LogInfo((object)$"{text2} Random level from list selected: {__result} (from {list2.Count} valid options)"); currentLevelName = __result; showLevelGUI = true; return false; } ModLogger.LogWarning((object)("No valid levels found in list '" + text + "'! Using random level instead.")); int num3 = Random.Range(0, __instance.AllLevels.Length); string path4 = __instance.AllLevels[num3] ?? ""; __result = Path.GetFileNameWithoutExtension(path4); ModLogger.LogInfo((object)$"{text2} Fallback random level: {__result} (index {num3})"); currentLevelName = __result; showLevelGUI = true; return false; } for (int l = 0; l < __instance.AllLevels.Length; l++) { string path5 = __instance.AllLevels[l] ?? ""; string fileNameWithoutExtension3 = Path.GetFileNameWithoutExtension(path5); if (fileNameWithoutExtension3.Equals(text, StringComparison.OrdinalIgnoreCase)) { __result = fileNameWithoutExtension3; ModLogger.LogInfo((object)$"{text2} Specific level selected: {__result} (index {l})"); currentLevelName = __result; showLevelGUI = true; return false; } } ModLogger.LogWarning((object)("Level '" + text + "' not found! Using random level instead.")); int num4 = Random.Range(0, __instance.AllLevels.Length); string path6 = __instance.AllLevels[num4] ?? ""; __result = Path.GetFileNameWithoutExtension(path6); ModLogger.LogInfo((object)$"{text2} Fallback random level: {__result} (index {num4})"); currentLevelName = __result; showLevelGUI = true; return false; } catch (Exception ex) { ModLogger.LogError((object)("Error in MapBaker.GetLevel patch: " + ex.Message)); return true; } } } [HarmonyPatch(typeof(AirportCheckInKiosk), "BeginIslandLoadRPC")] private static class AirportCheckInKiosk_BeginIslandLoadRPC_Patch { private static void Prefix(string sceneName, int ascent) { try { currentLevelName = sceneName; showLevelGUI = true; string arg = (PhotonNetwork.IsMasterClient ? "[MASTER]" : "[CLIENT]"); ModLogger.LogInfo((object)$"{arg} Loading level: {sceneName} (ascent: {ascent})"); } catch (Exception ex) { ModLogger.LogError((object)("Error in BeginIslandLoadRPC patch: " + ex.Message)); } } } [HarmonyPatch(typeof(LoadingScreenHandler), "LoadSceneProcess")] private static class LoadingScreenHandler_LoadSceneProcess_Patch { private static void Prefix(string sceneName) { try { if (sceneName.Equals("Airport", StringComparison.OrdinalIgnoreCase)) { showLevelGUI = false; currentLevelName = ""; ModLogger.LogInfo((object)"Clearing level GUI - returning to Airport"); } } catch (Exception ex) { ModLogger.LogError((object)("Error in LoadSceneProcess patch: " + ex.Message)); } } } [HarmonyPatch(typeof(NetworkConnector), "OnLeftRoom")] private static class NetworkConnector_OnLeftRoom_Patch { private static void Postfix() { try { showLevelGUI = false; currentLevelName = ""; ModLogger.LogInfo((object)"Clearing level GUI - left multiplayer room"); } catch (Exception ex) { ModLogger.LogError((object)("Error in OnLeftRoom patch: " + ex.Message)); } } } [HarmonyPatch(typeof(LevelGeneration), "RandomizeBiomeVariants")] private static class LevelGeneration_RandomizeBiomeVariants_Patch { private static void Postfix() { try { Random.InitState(Random.Range(0, int.MaxValue)); } catch (Exception ex) { ManualLogSource modLogger = ModLogger; if (modLogger != null) { modLogger.LogError((object)("Error in biome variant randomization: " + ex.Message)); } } } } [HarmonyPatch(typeof(GUIManager), "Start")] private static class GUIManagerPatch { [HarmonyPostfix] public static void Postfix(GUIManager __instance) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) Transform transform = ((Component)((Component)__instance).GetComponentInChildren<AscentUI>()).transform; RectTransform val = (RectTransform)Object.Instantiate<Transform>(transform, transform.parent); ((Object)val).name = "MorePeakLevelDisplay"; Object.Destroy((Object)(object)((Component)val).GetComponent<AscentUI>()); ((Component)val).gameObject.AddComponent<MorePeakHUD>(); Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(1f, 1f); val.anchorMin = val2; Vector2 pivot = (val.anchorMax = val2); val.pivot = pivot; val.anchoredPosition = Vector2.zero; } } private static ManualLogSource ModLogger; internal static ConfigEntry<string> selectedLevelConfig; internal static ConfigEntry<bool> showCurrentLevelGUIConfig; internal static ConfigEntry<bool> showSelectedLevelConfigGUIConfig; private static readonly Dictionary<int, float> lastRandomizeTime = new Dictionary<int, float>(); private const float RANDOMIZE_COOLDOWN = 1f; internal static string currentLevelName = ""; private static bool showLevelGUI = false; private static Texture2D guiBackgroundTexture; private static bool showSettingsGUI = false; private static Rect settingsWindowRect = new Rect(0f, 0f, 330f, 200f); private static string tempSelectedLevel = ""; private static bool tempShowCurrentLevel = true; private static bool tempShowSelectedLevelConfig = true; private static Vector2 scrollPosition = Vector2.zero; private static Texture2D settingsCogTexture; private static int onGUICallCount = 0; private static GUIStyle cachedCogStyle; private static GUIStyle cachedLabelStyle; private static GUIStyle cachedTextFieldStyle; private static GUIStyle cachedButtonStyle; private static GUIStyle cachedToggleStyle; private static GUIStyle cachedWindowStyle; private static Texture2D cachedDarkBackgroundTexture; private static Texture2D cachedButtonBackgroundTexture; private static Texture2D cachedButtonHoverTexture; private static Texture2D cachedButtonActiveTexture; private static Texture2D cachedTextFieldBackgroundTexture; private static Texture2D cachedWindowBackgroundTexture; private void Awake() { //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Expected O, but got Unknown ModLogger = ((BaseUnityPlugin)this).Logger; LoadSettingsCogTexture(); selectedLevelConfig = ((BaseUnityPlugin)this).Config.Bind<string>("Settings", "SelectedLevel", "Random", "Set to 'Daily' for the daily map, 'Random' for random levels, specify exact level name (e.g., 'Level_0'), or specify multiple levels separated by commas for random selection from that list (e.g., 'Level_0, Level_1, Level_2')"); showCurrentLevelGUIConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("GUI", "ShowCurrentLevel", false, "Whether to show the current level name on screen during gameplay"); showSelectedLevelConfigGUIConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("GUI", "ShowSelectedLevelConfig", false, "Whether to show the selected level configuration on screen during gameplay"); ModLogger.LogInfo((object)"MorePeak v1.9.0 loaded!"); ModLogger.LogInfo((object)("Config: SelectedLevel = " + selectedLevelConfig.Value)); ModLogger.LogInfo((object)("Config: ShowCurrentLevel = " + showCurrentLevelGUIConfig.Value)); ModLogger.LogInfo((object)("Config: ShowSelectedLevelConfig = " + showSelectedLevelConfigGUIConfig.Value)); ModLogger.LogInfo((object)"Available levels will be listed when you start a game."); Harmony val = new Harmony("com.smckeen.morepeak"); val.PatchAll(); } private void OnGUI() { onGUICallCount++; if (onGUICallCount % 60 == 0) { ModLogger.LogDebug((object)$"OnGUI called {onGUICallCount} times, showLevelGUI={showLevelGUI}"); } if (cachedCogStyle == null) { ModLogger.LogDebug((object)"Initializing cached styles in OnGUI"); InitializeCachedStyles(); } DrawSettingsCog(); if (showSettingsGUI) { ModLogger.LogDebug((object)"Drawing settings window"); DrawSettingsWindow(); } if (showLevelGUI && !string.IsNullOrEmpty(currentLevelName) && cachedCogStyle == null) { ModLogger.LogDebug((object)"Initializing cached styles in OnGUI"); InitializeCachedStyles(); } } private void OnDestroy() { if ((Object)(object)guiBackgroundTexture != (Object)null) { Object.DestroyImmediate((Object)(object)guiBackgroundTexture); guiBackgroundTexture = null; } if ((Object)(object)settingsCogTexture != (Object)null) { Object.DestroyImmediate((Object)(object)settingsCogTexture); settingsCogTexture = null; } if ((Object)(object)cachedDarkBackgroundTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedDarkBackgroundTexture); cachedDarkBackgroundTexture = null; } if ((Object)(object)cachedButtonBackgroundTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedButtonBackgroundTexture); cachedButtonBackgroundTexture = null; } if ((Object)(object)cachedButtonHoverTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedButtonHoverTexture); cachedButtonHoverTexture = null; } if ((Object)(object)cachedButtonActiveTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedButtonActiveTexture); cachedButtonActiveTexture = null; } if ((Object)(object)cachedTextFieldBackgroundTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedTextFieldBackgroundTexture); cachedTextFieldBackgroundTexture = null; } if ((Object)(object)cachedWindowBackgroundTexture != (Object)null) { Object.DestroyImmediate((Object)(object)cachedWindowBackgroundTexture); cachedWindowBackgroundTexture = null; } cachedCogStyle = null; cachedLabelStyle = null; cachedTextFieldStyle = null; cachedButtonStyle = null; cachedToggleStyle = null; cachedWindowStyle = null; } private Texture2D MakeTexture(int width, int height, Color color) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown Color[] array = (Color[])(object)new Color[width * height]; for (int i = 0; i < array.Length; i++) { array[i] = color; } Texture2D val = new Texture2D(width, height); val.SetPixels(array); val.Apply(); return val; } private void DrawSettingsCog() { //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) if (showLevelGUI) { if (showSettingsGUI) { showSettingsGUI = false; } ModLogger.LogDebug((object)"Settings cog hidden - in a round (showLevelGUI = true)"); return; } ModLogger.LogDebug((object)"Drawing settings cog - not in a round"); float num = 32f; float num2 = (float)Screen.width - num - 10f; float num3 = 10f; ModLogger.LogDebug((object)$"Settings cog position: x={num2}, y={num3}, size={num}"); ModLogger.LogDebug((object)$"Screen size: {Screen.width}x{Screen.height}"); if ((Object)(object)settingsCogTexture != (Object)null) { ModLogger.LogDebug((object)"Using settings cog texture"); GUIStyle val = cachedCogStyle ?? GUI.skin.button; if (!GUI.Button(new Rect(num2, num3, num, num), (Texture)(object)settingsCogTexture, val)) { return; } ModLogger.LogInfo((object)"Settings cog clicked!"); showSettingsGUI = !showSettingsGUI; if (showSettingsGUI) { tempSelectedLevel = selectedLevelConfig.Value; tempShowCurrentLevel = showCurrentLevelGUIConfig.Value; tempShowSelectedLevelConfig = showSelectedLevelConfigGUIConfig.Value; float num4 = num2 - 330f + num; float num5 = num3 + num + 5f; if (num4 < 10f) { num4 = 10f; } if (num5 + 200f > (float)(Screen.height - 10)) { num5 = Screen.height - 210; } settingsWindowRect = new Rect(num4, num5, 330f, 200f); ModLogger.LogInfo((object)"Settings window opened"); } else { ModLogger.LogInfo((object)"Settings window closed"); } return; } ModLogger.LogDebug((object)"Using fallback text cog (⚙)"); GUIStyle val2 = new GUIStyle(cachedCogStyle ?? GUI.skin.button); val2.fontSize = 14; val2.fontStyle = (FontStyle)1; val2.normal.textColor = Color.white; val2.hover.textColor = Color.yellow; if (!GUI.Button(new Rect(num2, num3, num, num), "⚙", val2)) { return; } ModLogger.LogInfo((object)"Settings cog clicked!"); showSettingsGUI = !showSettingsGUI; if (showSettingsGUI) { tempSelectedLevel = selectedLevelConfig.Value; tempShowCurrentLevel = showCurrentLevelGUIConfig.Value; tempShowSelectedLevelConfig = showSelectedLevelConfigGUIConfig.Value; float num6 = num2 - 330f + num; float num7 = num3 + num + 5f; if (num6 < 10f) { num6 = 10f; } if (num7 + 200f > (float)(Screen.height - 10)) { num7 = Screen.height - 210; } settingsWindowRect = new Rect(num6, num7, 330f, 200f); ModLogger.LogInfo((object)"Settings window opened"); } else { ModLogger.LogInfo((object)"Settings window closed"); } } private void DrawSettingsWindow() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) GUI.color = new Color(0f, 0f, 0f, 0.9f); GUI.Box(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), ""); GUI.color = Color.white; GUIStyle val = cachedWindowStyle ?? GUI.skin.window; settingsWindowRect = GUI.Window(12345, settingsWindowRect, new WindowFunction(DrawSettingsWindowContents), "MorePeak Settings", val); } private void DrawSettingsWindowContents(int windowID) { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) float num = 30f; float num2 = 25f; float num3 = 150f; float num4 = 150f; GUIStyle val = cachedLabelStyle ?? GUI.skin.label; GUIStyle val2 = cachedTextFieldStyle ?? GUI.skin.textField; GUIStyle val3 = cachedButtonStyle ?? GUI.skin.button; GUIStyle val4 = cachedToggleStyle ?? GUI.skin.toggle; GUI.Label(new Rect(10f, num, num3, 20f), "Selected Level:", val); num += num2; string text = GUI.TextField(new Rect(10f, num, num4, 20f), tempSelectedLevel, val2); if (text != tempSelectedLevel) { tempSelectedLevel = text; selectedLevelConfig.Value = tempSelectedLevel; ((BaseUnityPlugin)this).Config.Save(); ModLogger.LogInfo((object)("SelectedLevel updated to: " + tempSelectedLevel)); } num += num2 + 5f; if (GUI.Button(new Rect(10f, num, 70f, 20f), "Random", val3)) { tempSelectedLevel = "Random"; selectedLevelConfig.Value = tempSelectedLevel; ((BaseUnityPlugin)this).Config.Save(); ModLogger.LogInfo((object)"SelectedLevel set to Random"); } if (GUI.Button(new Rect(85f, num, 70f, 20f), "Daily", val3)) { tempSelectedLevel = "Daily"; selectedLevelConfig.Value = tempSelectedLevel; ((BaseUnityPlugin)this).Config.Save(); ModLogger.LogInfo((object)"SelectedLevel set to Daily"); } num += num2 + 10f; GUI.Label(new Rect(10f, num, num3, 20f), "Display Options:", val); num += num2; bool flag = GUI.Toggle(new Rect(10f, num, num4, 20f), tempShowCurrentLevel, "Show Current Level", val4); if (flag != tempShowCurrentLevel) { tempShowCurrentLevel = flag; showCurrentLevelGUIConfig.Value = tempShowCurrentLevel; ((BaseUnityPlugin)this).Config.Save(); ModLogger.LogInfo((object)("ShowCurrentLevel updated to: " + tempShowCurrentLevel)); } num += num2; bool flag2 = GUI.Toggle(new Rect(10f, num, num4, 20f), tempShowSelectedLevelConfig, "Show Config", val4); if (flag2 != tempShowSelectedLevelConfig) { tempShowSelectedLevelConfig = flag2; showSelectedLevelConfigGUIConfig.Value = tempShowSelectedLevelConfig; ((BaseUnityPlugin)this).Config.Save(); ModLogger.LogInfo((object)("ShowSelectedLevelConfig updated to: " + tempShowSelectedLevelConfig)); } num += num2 + 10f; if (GUI.Button(new Rect(10f, num, 70f, 20f), "Close", val3)) { showSettingsGUI = false; } if (GUI.Button(new Rect(((Rect)(ref settingsWindowRect)).width - 25f, 5f, 20f, 20f), "X", val3)) { showSettingsGUI = false; } GUI.DragWindow(); } private void LoadSettingsCogTexture() { //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown try { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MorePeak.assets.settings-cog.png"); if (stream != null) { byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); settingsCogTexture = new Texture2D(2, 2); ImageConversion.LoadImage(settingsCogTexture, array); ModLogger.LogInfo((object)"Settings cog texture loaded successfully from embedded resource"); } else { ModLogger.LogWarning((object)"settings-cog.png embedded resource not found"); settingsCogTexture = MakeTexture(32, 32, Color.gray); } } catch (Exception ex) { ModLogger.LogError((object)("Error loading settings cog texture: " + ex.Message)); settingsCogTexture = MakeTexture(32, 32, Color.gray); } } private void InitializeCachedStyles() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Expected O, but got Unknown //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Expected O, but got Unknown //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Expected O, but got Unknown ModLogger.LogDebug((object)"Initializing cached styles and textures"); cachedDarkBackgroundTexture = MakeTexture(2, 2, new Color(0f, 0f, 0f, 0.7f)); cachedButtonBackgroundTexture = MakeTexture(2, 2, new Color(0.2f, 0.2f, 0.2f, 0.8f)); cachedButtonHoverTexture = MakeTexture(2, 2, new Color(0.3f, 0.3f, 0.3f, 0.9f)); cachedButtonActiveTexture = MakeTexture(2, 2, new Color(0.4f, 0.4f, 0.4f, 0.9f)); cachedTextFieldBackgroundTexture = MakeTexture(2, 2, new Color(0.2f, 0.2f, 0.2f, 0.9f)); cachedWindowBackgroundTexture = MakeTexture(2, 2, new Color(0.1f, 0.1f, 0.1f, 0.95f)); ModLogger.LogDebug((object)"Cached textures created"); cachedCogStyle = new GUIStyle(GUI.skin.button); cachedCogStyle.normal.background = cachedButtonBackgroundTexture; cachedCogStyle.hover.background = cachedButtonHoverTexture; cachedCogStyle.active.background = cachedButtonActiveTexture; cachedLabelStyle = new GUIStyle(GUI.skin.label); cachedLabelStyle.fontSize = 12; cachedLabelStyle.wordWrap = true; cachedLabelStyle.normal.textColor = Color.white; cachedTextFieldStyle = new GUIStyle(GUI.skin.textField); cachedTextFieldStyle.fontSize = 12; cachedTextFieldStyle.normal.background = cachedTextFieldBackgroundTexture; cachedTextFieldStyle.normal.textColor = Color.white; cachedButtonStyle = new GUIStyle(GUI.skin.button); cachedButtonStyle.fontSize = 12; cachedButtonStyle.normal.background = cachedButtonBackgroundTexture; cachedButtonStyle.hover.background = cachedButtonHoverTexture; cachedButtonStyle.normal.textColor = Color.white; cachedButtonStyle.hover.textColor = Color.yellow; cachedToggleStyle = new GUIStyle(GUI.skin.toggle); cachedToggleStyle.fontSize = 12; cachedToggleStyle.normal.textColor = Color.white; cachedWindowStyle = new GUIStyle(GUI.skin.window); cachedWindowStyle.fontSize = 14; cachedWindowStyle.normal.background = cachedWindowBackgroundTexture; cachedWindowStyle.onNormal.background = cachedWindowBackgroundTexture; ModLogger.LogDebug((object)"Cached styles created successfully"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "MorePeak"; public const string PLUGIN_NAME = "MorePeak"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace MorePeak.MonoBehaviours { internal sealed class MorePeakHUD : MonoBehaviour { private TMP_Text tmpText; private void Start() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) tmpText = ((Component)this).GetComponent<TMP_Text>(); tmpText.fontSize = 24f; tmpText.alignment = (TextAlignmentOptions)260; tmpText.outlineColor = new Color32((byte)0, (byte)0, (byte)0, byte.MaxValue); tmpText.outlineWidth = 0.055f; tmpText.autoSizeTextContainer = true; } private void Update() { if ((Object)(object)tmpText != (Object)null) { List<string> list = new List<string>(); if (MorePeakPlugin.showCurrentLevelGUIConfig.Value) { list.Add("Current Level: " + MorePeakPlugin.currentLevelName); } if (MorePeakPlugin.showSelectedLevelConfigGUIConfig.Value) { list.Add("Config: " + MorePeakPlugin.selectedLevelConfig.Value); } if (list.Count > 0) { ((Component)tmpText).gameObject.SetActive(true); tmpText.text = string.Join("\n", list); } else { ((Component)tmpText).gameObject.SetActive(false); } } } } }