using IPA; using UnityEngine.SceneManagement; using IPALogger = IPA.Logging.Logger; using CustomUI.BeatSaber; using BSIPA_ModList.UI; using CustomUI.MenuButton; using UnityEngine.Events; using UnityEngine; using System.Linq; namespace BSIPA_ModList { internal static class Logger { internal static IPALogger log { get; set; } } public class Plugin : IBeatSaberPlugin { public void Init(IPALogger logger) { Logger.log = logger; Logger.log.Debug("Init"); } public void OnActiveSceneChanged(Scene prevScene, Scene nextScene) { } public void OnApplicationQuit() { } private MainFlowCoordinator mainFlow; private ModListFlowCoordinator menuFlow; private MenuButton button; public void OnApplicationStart() { Logger.log.Debug("Creating Menu"); } public void OnFixedUpdate() { } public void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode) { if (scene.name == "MenuCore") { if (mainFlow == null) mainFlow = Resources.FindObjectsOfTypeAll().First(); if (menuFlow == null) menuFlow = new GameObject("BSIPA Mod List Flow Coordinator").AddComponent(); if (button == null) button = MenuButtonUI.AddButton("Mod List", "Look at installed mods, and control updating", () => { Logger.log.Debug("Presenting own flow controller"); menuFlow.PresentOn(mainFlow); }); } } public void OnSceneUnloaded(Scene scene) { } public void OnUpdate() { } } }