From bb0784cc1ab8a33e54912db8461edc751f0c3722 Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Tue, 16 Apr 2019 22:20:54 -0500 Subject: [PATCH] Moved list button to main menu --- BSIPA-ModList/BSIPA-ModList.csproj | 4 + BSIPA-ModList/Plugin.cs | 20 +--- BSIPA-ModList/UI/ButtonUI.cs | 91 ++++++++++++++++++ BSIPA-ModList/UI/ModListFlowCoordinator.cs | 48 ++++++++- .../ViewControllers/ModInfoViewController.cs | 19 +++- .../UI/ViewControllers/ModListController.cs | 38 ++++++-- Refs/BeatSaberCustomUI.dll | Bin 160256 -> 160256 bytes Refs/UnityEngine.dll | Bin 0 -> 70144 bytes Refs/UnityEngine.xml | 8 ++ Refs/refs.txt | 2 + 10 files changed, 203 insertions(+), 27 deletions(-) create mode 100644 BSIPA-ModList/UI/ButtonUI.cs create mode 100644 Refs/UnityEngine.dll create mode 100644 Refs/UnityEngine.xml diff --git a/BSIPA-ModList/BSIPA-ModList.csproj b/BSIPA-ModList/BSIPA-ModList.csproj index c5185fea..c0c14007 100644 --- a/BSIPA-ModList/BSIPA-ModList.csproj +++ b/BSIPA-ModList/BSIPA-ModList.csproj @@ -47,6 +47,9 @@ + + ..\Refs\UnityEngine.dll + ..\Refs\UnityEngine.CoreModule.dll False @@ -63,6 +66,7 @@ + diff --git a/BSIPA-ModList/Plugin.cs b/BSIPA-ModList/Plugin.cs index 5de5c496..bd99ff60 100644 --- a/BSIPA-ModList/Plugin.cs +++ b/BSIPA-ModList/Plugin.cs @@ -31,13 +31,8 @@ namespace BSIPA_ModList { } - private MainFlowCoordinator mainFlow; - private ModListFlowCoordinator menuFlow; - private MenuButton button; - public void OnApplicationStart() { - Logger.log.Debug("Creating Menu"); } public void OnFixedUpdate() @@ -48,16 +43,11 @@ namespace BSIPA_ModList { 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); - }); + if (ButtonUI.Instance == null) + { + Logger.log.Debug("Creating Menu"); + new GameObject("BSIPA Mod List Object").AddComponent().Init(); + } } } diff --git a/BSIPA-ModList/UI/ButtonUI.cs b/BSIPA-ModList/UI/ButtonUI.cs new file mode 100644 index 00000000..e44803ce --- /dev/null +++ b/BSIPA-ModList/UI/ButtonUI.cs @@ -0,0 +1,91 @@ +using CustomUI.BeatSaber; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.UI; + +namespace BSIPA_ModList.UI +{ + internal class ButtonUI : MonoBehaviour + { + private const string ControllerPanel = "MainMenuViewController/SmallButtons"; + private const string CopyButton = "CreditsButton"; + + internal static ButtonUI Instance; + + public void Awake() + { + DontDestroyOnLoad(gameObject); + SceneManager.activeSceneChanged += this.SceneManager_activeSceneChanged; + } + + private void SceneManager_activeSceneChanged(Scene from, Scene to) + { + if (to.name == "EmptyTransition") + { + if (Instance != null) + { + Instance.StopAllCoroutines(); + Destroy(Instance.gameObject); + menuFlow = null; + } + Instance = null; + } + } + + public void Init() + { + Instance = this; + + Logger.log.Debug("UI Awake"); + StartCoroutine(AddModListButton()); + } + + private static MainFlowCoordinator mainFlow; + private static ModListFlowCoordinator menuFlow; + + private static readonly WaitUntil _bottomPanelExists = new WaitUntil(() => GameObject.Find(ControllerPanel) != null); + private static RectTransform panel; + + private static HoverHint hintText; + private static Button button; + + private static IEnumerator AddModListButton() + { + Logger.log.Debug("AddModListButton"); + + yield return _bottomPanelExists; + + Logger.log.Debug("Adding button to main menu"); + + lock (Instance) + { + if (mainFlow == null) + mainFlow = Resources.FindObjectsOfTypeAll().First(); + if (menuFlow == null) + menuFlow = new GameObject("BSIPA Mod List Flow Controller").AddComponent(); + if (panel == null) + panel = GameObject.Find(ControllerPanel).transform as RectTransform; + + if (button == null) + { + button = BeatSaberUI.CreateUIButton(panel, CopyButton, () => + { + Logger.log.Debug("Presenting own flow controller"); + menuFlow.PresentOn(mainFlow); + }, "Mod List"); + panel.Find(CopyButton).SetAsLastSibling(); + + hintText = BeatSaberUI.AddHintText(button.transform as RectTransform, "View and control updates for installed mods"); + } + + yield break; + } + } + } +} diff --git a/BSIPA-ModList/UI/ModListFlowCoordinator.cs b/BSIPA-ModList/UI/ModListFlowCoordinator.cs index f339bdfd..ab09b76d 100644 --- a/BSIPA-ModList/UI/ModListFlowCoordinator.cs +++ b/BSIPA-ModList/UI/ModListFlowCoordinator.cs @@ -25,7 +25,7 @@ namespace BSIPA_ModList.UI navigationController.didFinishEvent += backButton_DidFinish; modList = BeatSaberUI.CreateViewController(); - modList.Init(navigationController, PluginManager.AllPlugins, PluginLoader.ignoredPlugins, PluginManager.Plugins); + modList.Init(this, PluginManager.AllPlugins, PluginLoader.ignoredPlugins, PluginManager.Plugins); PushViewControllerToNavigationController(navigationController, modList); } @@ -49,10 +49,54 @@ namespace BSIPA_ModList.UI presentFlow(main, this, finished, immediate, replaceTop); } + public bool HasSelected { get; private set; } = false; + + public void SetSelected(VRUIViewController selected, Action callback = null, bool immediate = false) + { + if (immediate) + { + if (HasSelected) + PopViewController(immediate: true); + PushViewController(selected, callback, true); + } + else + { + if (HasSelected) + PopViewController(() => PushViewController(selected, callback, immediate), immediate); + else + PushViewController(selected, callback, immediate); + } + } + + public void ClearSelected(Action callback = null, bool immediate = false) + { + if (HasSelected) PopViewController(callback, immediate); + } + + public void PushViewController(VRUIViewController controller, Action callback = null, bool immediate = false) + { + PushViewControllerToNavigationController(navigationController, controller, callback, immediate); + } + + public void PopViewController(Action callback = null, bool immediate = false) + { + PopViewControllerFromNavigationController(navigationController, callback, immediate); + } + + private delegate void DismissFlowDel(FlowCoordinator self, FlowCoordinator newF, Action finished, bool immediate); + private static DismissFlowDel dismissFlow; + private void backButton_DidFinish() { + if (dismissFlow == null) + { + var ty = typeof(FlowCoordinator); + var m = ty.GetMethod("DismissFlowCoordinator", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + dismissFlow = (DismissFlowDel)Delegate.CreateDelegate(typeof(DismissFlowDel), m); + } + MainFlowCoordinator mainFlow = Resources.FindObjectsOfTypeAll().First(); - mainFlow.InvokeMethod("DismissFlowCoordinator", this, null, false); + dismissFlow(mainFlow, this, null, false); } } } diff --git a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs index 60cde929..2479627c 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs @@ -4,11 +4,28 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using UnityEngine; +using VRUI; namespace BSIPA_ModList.UI { - internal class ModInfoViewController : CustomViewController + internal class ModInfoViewController : VRUIViewController { + private Sprite Icon; + private string Name; + private string Version; + private string Author; + private string Description; + private bool CanUpdate; + public void Init(Sprite icon, string name, string version, string author, string description, bool canUpdate) + { + Icon = icon; + Name = name; + Version = version; + Author = author; + Description = description; + CanUpdate = canUpdate; + } } } diff --git a/BSIPA-ModList/UI/ViewControllers/ModListController.cs b/BSIPA-ModList/UI/ViewControllers/ModListController.cs index f80a887a..801851bf 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModListController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModListController.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using CustomUI.BeatSaber; using CustomUI.Utilities; @@ -7,6 +8,7 @@ using IPA.Loader; using IPA.Old; using UnityEngine; using VRUI; +using IPA.Loader.Features; namespace BSIPA_ModList.UI { @@ -31,11 +33,13 @@ namespace BSIPA_ModList.UI } internal PluginLoader.PluginInfo Plugin; + private ModListController list; - public BSIPAModCell(PluginLoader.PluginInfo plugin) + public BSIPAModCell(ModListController list, PluginLoader.PluginInfo plugin) : base($"{plugin.Metadata.Name} v{plugin.Metadata.Version}", plugin.Metadata.Manifest.Author, null) { Plugin = plugin; + this.list = list; if (plugin.Metadata.Manifest.IconPath != null) icon = UIUtilities.LoadSpriteRaw(UIUtilities.GetResource(plugin.Metadata.Assembly, plugin.Metadata.Manifest.IconPath)); @@ -45,20 +49,33 @@ namespace BSIPA_ModList.UI Logger.log.Debug($"BSIPAModCell {plugin.Metadata.Name} {plugin.Metadata.Version}"); } + private ModInfoViewController infoView; + public void OnSelect(ModListController cntrl) { Logger.log.Debug($"Selected BSIPAModCell {Plugin.Metadata.Name} {Plugin.Metadata.Version}"); + + if (infoView == null) + { + infoView = BeatSaberUI.CreateViewController(); + infoView.Init(icon, Plugin.Metadata.Name, Plugin.Metadata.Version.ToString(), Plugin.Metadata.Manifest.Author, + Plugin.Metadata.Manifest.Description, Plugin.Metadata.Features.FirstOrDefault(f => f is NoUpdateFeature) == null); + } + + list.flow.SetSelected(infoView); } } private class BSIPAIgnoredModCell : CustomCellInfo, IClickableCell { internal PluginLoader.PluginMetadata Plugin; + private ModListController list; - public BSIPAIgnoredModCell(PluginLoader.PluginMetadata plugin) + public BSIPAIgnoredModCell(ModListController list, PluginLoader.PluginMetadata plugin) : base($"{plugin.Name} v{plugin.Version}", $"{plugin.Manifest.Author} - Not loaded", BSIPAModCell.DefaultIcon) { Plugin = plugin; + this.list = list; Logger.log.Debug($"BSIPAIgnoredModCell {plugin.Name} {plugin.Version}"); } @@ -66,6 +83,7 @@ namespace BSIPA_ModList.UI public void OnSelect(ModListController cntrl) { Logger.log.Debug($"Selected BSIPAIgnoredModCell {Plugin.Name} {Plugin.Version}"); + } } @@ -84,11 +102,13 @@ namespace BSIPA_ModList.UI } internal IPlugin Plugin; + private ModListController list; - public IPAModCell(IPlugin plugin) + public IPAModCell(ModListController list, IPlugin plugin) : base($"{plugin.Name} {plugin.Version}", "Legacy", DefaultIcon) { Plugin = plugin; + this.list = list; Logger.log.Debug($"IPAModCell {plugin.Name} {plugin.Version}"); } @@ -100,10 +120,10 @@ namespace BSIPA_ModList.UI } #pragma warning restore - private BackButtonNavigationController navigation; + private ModListFlowCoordinator flow; #pragma warning disable CS0618 - public void Init(BackButtonNavigationController navigation, IEnumerable bsipaPlugins, IEnumerable ignoredPlugins, IEnumerable ipaPlugins) + public void Init(ModListFlowCoordinator flow, IEnumerable bsipaPlugins, IEnumerable ignoredPlugins, IEnumerable ipaPlugins) { Logger.log.Debug("List Controller Init"); @@ -111,16 +131,16 @@ namespace BSIPA_ModList.UI DidSelectRowEvent = DidSelectRow; includePageButtons = true; - this.navigation = navigation; + this.flow = flow; reuseIdentifier = "BSIPAModListTableCell"; foreach (var plugin in bsipaPlugins) - Data.Add(new BSIPAModCell(plugin)); + Data.Add(new BSIPAModCell(this, plugin)); foreach (var plugin in ignoredPlugins) - Data.Add(new BSIPAIgnoredModCell(plugin)); + Data.Add(new BSIPAIgnoredModCell(this, plugin)); foreach (var plugin in ipaPlugins) - Data.Add(new IPAModCell(plugin)); + Data.Add(new IPAModCell(this, plugin)); } #pragma warning restore diff --git a/Refs/BeatSaberCustomUI.dll b/Refs/BeatSaberCustomUI.dll index 8f810ea44407df7e6edf8464b1b08ee656ba2b36..297e4173bee1aba5cf4687c695378dbe9e5bc831 100644 GIT binary patch delta 76 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

exriw4`0 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 Bc8mZ3 literal 0 HcmV?d00001 diff --git a/Refs/UnityEngine.xml b/Refs/UnityEngine.xml new file mode 100644 index 00000000..a4658120 --- /dev/null +++ b/Refs/UnityEngine.xml @@ -0,0 +1,8 @@ + + + + + UnityEngine + + + diff --git a/Refs/refs.txt b/Refs/refs.txt index 3818beda..9554dac9 100644 --- a/Refs/refs.txt +++ b/Refs/refs.txt @@ -3,6 +3,8 @@ ""Managed/ """Assembly-CSharp.dll """UnityEngine. +""""dll +""""xml """"UnityWebRequestModule. """""dll """""xml