using MelonLoader; using System.Collections; using System.Reflection; using UnityEngine; using VMM.ModRegistry; using VMM.ModRegistry.Settings; using VMM.ModRegistry.Settings.Types; using VMM.UI; [assembly: MelonInfo(typeof(VMM.Core), "VigilModManager", "1.0.0", "Exil_S", null)] [assembly: MelonGame("Singularity Studios", "Vigil")] namespace VMM { internal class Core : MelonMod { public static MelonLogger.Instance Logger { get; private set; } public override void OnInitializeMelon() { Logger = LoggerInstance; LoggerInstance.Msg("Initialized."); } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { if (buildIndex != 0) return; // Main Menu only InitializeManagers(); SetupModLoading(); } public override void OnApplicationQuit() { Cleanup(); } private void InitializeManagers() { UIManager.Instance = new UIManager(); UIManager.Instance.Initialize(); ModManager.Instance = new ModManager(); } private void SetupModLoading() { ModManager.Instance.onFinishedLoading += OnLoadedMods; ModManager.Instance.LoadMods(); } private void Cleanup() { if (ModManager.Instance != null) { ModManager.Instance.onFinishedLoading -= OnLoadedMods; } } //test setting for testing private void OnLoadedMods() { var settings = new ModSettings(); var testToggle = new ToggleSetting { Name = "Test Toggle", Value = true, OnChanged = value => LoggerInstance.Msg($"Test Toggle pressed! State {value}") }; settings.AddSetting(testToggle); ModManager.Instance.RegisterSettings(Assembly.GetExecutingAssembly(), settings); } } }