using System; using System.Collections; 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 System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("AuroraMainMenu")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("AuroraMainMenu")] [assembly: AssemblyTitle("AuroraMainMenu")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace AuroraMainMenu; [BepInPlugin("com.aurora.mainmenu", "Aurora Main Menu", "2.0.11")] public class AuroraMenuPlugin : BaseUnityPlugin { public const string PluginGUID = "com.aurora.mainmenu"; public const string PluginName = "Aurora Main Menu"; public const string PluginVersion = "2.0.11"; public const string ServerAddress = "85.206.119.102"; public const int ServerPort = 2456; internal static AuroraMenuPlugin Instance; internal bool IsConnecting; internal static ConfigEntry LoginVolume; internal static ConfigEntry MuteLoginSoundtrack; private Harmony _harmony; public void InfoLog(string msg) { ManualLogSource logger = ((BaseUnityPlugin)this).Logger; if (logger != null) { logger.LogInfo((object)msg); } } public void WarnLog(string msg) { ManualLogSource logger = ((BaseUnityPlugin)this).Logger; if (logger != null) { logger.LogWarning((object)msg); } } private void Awake() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown Instance = this; LoginVolume = ((BaseUnityPlugin)this).Config.Bind("Audio", "LoginVolume", 0.5f, new ConfigDescription("Volume of the Aurora login/main-menu soundtrack (0.0 - 1.0). Independent of Valheim's in-game music slider.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); MuteLoginSoundtrack = ((BaseUnityPlugin)this).Config.Bind("Audio", "MuteLoginSoundtrack", false, "Mute only the Aurora login soundtrack. Other menu sounds (clicks, hovers) still play."); LoginVolume.SettingChanged += delegate { MountainAtmospherePatches.ApplyMenuMusicVolume(); }; MuteLoginSoundtrack.SettingChanged += delegate { MountainAtmospherePatches.ApplyMenuMusicVolume(); }; _harmony = new Harmony("com.aurora.mainmenu"); _harmony.PatchAll(typeof(FejdStartupPatches)); _harmony.PatchAll(typeof(LocalizationPatches)); _harmony.PatchAll(typeof(MountainAtmospherePatches)); _harmony.PatchAll(typeof(MusicPatches)); _harmony.PatchAll(typeof(AdminSteamIdPatches)); GameObject val = new GameObject("AuroraAudioTabInjector"); Object.DontDestroyOnLoad((Object)val); val.AddComponent(); ((BaseUnityPlugin)this).Logger.LogInfo((object)string.Format("{0} v{1} loaded. Server: {2}:{3}", "Aurora Main Menu", "2.0.11", "85.206.119.102", 2456)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"[AudioTabInjector] Polling watcher active — will inject on first AudioSettings instance."); } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } internal void ConnectToServer() { ((BaseUnityPlugin)this).Logger.LogInfo((object)string.Format("Connecting to {0}:{1} (no password)...", "85.206.119.102", 2456)); try { IsConnecting = true; ZSteamMatchmaking instance = ZSteamMatchmaking.instance; if (instance != null) { instance.QueueServerJoin(string.Format("{0}:{1}", "85.206.119.102", 2456)); } } catch (Exception ex) { IsConnecting = false; ((BaseUnityPlugin)this).Logger.LogError((object)("Connection failed: " + ex.Message)); } } } [HarmonyPatch] public static class LocalizationPatches { [HarmonyPatch(typeof(Localization), "TranslateSingleId")] [HarmonyPostfix] public static void TranslateSingleId_Postfix(ref string __result, string locaId) { if (__result != null && __result.Equals("Start Game", StringComparison.OrdinalIgnoreCase)) { __result = "Play Aurora"; } } } [HarmonyPatch] public static class FejdStartupPatches { private static Type _cachedTmpType; private static PropertyInfo _cachedTextProp; private static MethodInfo _cachedSetText; private static bool _typesResolved; private static bool _pendingCharSelect; [HarmonyPatch(typeof(FejdStartup), "Update")] [HarmonyPostfix] public static void Update_Postfix(FejdStartup __instance) { if ((Object)(object)__instance.m_mainMenu == (Object)null || !__instance.m_mainMenu.activeInHierarchy) { return; } try { if (!_typesResolved) { _cachedTmpType = AccessTools.TypeByName("TMPro.TMP_Text"); _cachedTextProp = _cachedTmpType?.GetProperty("text"); _cachedSetText = _cachedTmpType?.GetMethod("SetText", new Type[1] { typeof(string) }); _typesResolved = true; } if (_cachedTmpType == null || _cachedTextProp == null) { return; } Button[] componentsInChildren = __instance.m_mainMenu.GetComponentsInChildren