From 76c578a9ea3f965c88c7ac70d985c8761b33da23 Mon Sep 17 00:00:00 2001 From: sinaioutlander <49360850+sinaioutlander@users.noreply.github.com> Date: Fri, 23 Oct 2020 20:40:44 +1100 Subject: [PATCH] little bit more progress, creating main menu page structure --- src/Explorer.csproj | 5 +++ src/ExplorerCore.cs | 19 ++++---- src/UI/Main/MainMenu.cs | 67 ++++++++++++++++----------- src/UI/Main/Pages/BaseMenuPage.cs | 27 +++++++++++ src/UI/Main/Pages/ConsolePage.cs | 22 +++++++++ src/UI/Main/Pages/HomePage.cs | 75 +++++++++++++++++++++++++++++++ src/UI/Main/Pages/OptionsPage.cs | 22 +++++++++ src/UI/Main/Pages/SearchPage.cs | 22 +++++++++ 8 files changed, 225 insertions(+), 34 deletions(-) create mode 100644 src/UI/Main/Pages/BaseMenuPage.cs create mode 100644 src/UI/Main/Pages/ConsolePage.cs create mode 100644 src/UI/Main/Pages/HomePage.cs create mode 100644 src/UI/Main/Pages/OptionsPage.cs create mode 100644 src/UI/Main/Pages/SearchPage.cs diff --git a/src/Explorer.csproj b/src/Explorer.csproj index 8bcc7c8..da0d6dc 100644 --- a/src/Explorer.csproj +++ b/src/Explorer.csproj @@ -233,6 +233,11 @@ + + + + + diff --git a/src/ExplorerCore.cs b/src/ExplorerCore.cs index 346690b..e8b716e 100644 --- a/src/ExplorerCore.cs +++ b/src/ExplorerCore.cs @@ -38,7 +38,7 @@ namespace ExplorerBeta public static bool m_showMenu; private static bool m_doneUIInit; - private static float m_startupTime; + private static float m_timeSinceStartup; public ExplorerCore() { @@ -52,10 +52,6 @@ namespace ExplorerBeta ModConfig.OnLoad(); - // Temporary? Need a small delay after OnApplicationStart before we can safely make our GameObject. - // Can't use Threads (crash), can't use Coroutine (no BepInEx support yet). - m_startupTime = Time.realtimeSinceStartup; - InputManager.Init(); ForceUnlockCursor.Init(); @@ -88,12 +84,17 @@ namespace ExplorerBeta public static void Update() { // Temporary delay before UIManager.Init - if (!m_doneUIInit && Time.realtimeSinceStartup - m_startupTime > 1f) + if (!m_doneUIInit) { - UIManager.Init(); + m_timeSinceStartup += Time.deltaTime; - Log("Initialized Explorer UI."); - m_doneUIInit = true; + if (m_timeSinceStartup > 1f) + { + UIManager.Init(); + + Log("Initialized Explorer UI."); + m_doneUIInit = true; + } } if (InputManager.GetKeyDown(ModConfig.Instance.Main_Menu_Toggle)) diff --git a/src/UI/Main/MainMenu.cs b/src/UI/Main/MainMenu.cs index 96162fb..e5e0f43 100644 --- a/src/UI/Main/MainMenu.cs +++ b/src/UI/Main/MainMenu.cs @@ -7,6 +7,7 @@ using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using ExplorerBeta.UI.Shared; +using Explorer.UI.Main.Pages; namespace ExplorerBeta.UI.Main { @@ -19,6 +20,9 @@ namespace ExplorerBeta.UI.Main public GameObject MainPanel { get; private set; } public GameObject PageViewport { get; private set; } + public readonly List Pages = new List(); + private BaseMenuPage m_activePage; + // Navbar buttons private Button m_lastNavButtonPressed; private readonly Color m_navButtonNormal = new Color(65f/255f, 66f/255f, 66f/255f); @@ -35,7 +39,19 @@ namespace ExplorerBeta.UI.Main Instance = this; + Pages.Add(new HomePage()); + Pages.Add(new SearchPage()); + Pages.Add(new ConsolePage()); + Pages.Add(new OptionsPage()); + ConstructMenu(); + + foreach (var page in Pages) + { + page.Init(); + } + + SetPage(Pages[0]); } public void Update() @@ -43,16 +59,15 @@ namespace ExplorerBeta.UI.Main // todo } - #region UI Interaction Callbacks - - private void OnPressHide() + // todo + private void SetPage(BaseMenuPage page) { - ExplorerCore.ShowMenu = false; - } + if (m_activePage == page || page == null) + return; - private void OnNavButtonPressed(string pageName, Button button) - { - ExplorerCore.Log($"Pressed '{pageName}'"); + m_activePage = page; + + var button = page.RefNavbarButton; var colors = button.colors; colors.normalColor = m_navButtonSelected; @@ -67,7 +82,20 @@ namespace ExplorerBeta.UI.Main m_lastNavButtonPressed.colors = oldColors; } - m_lastNavButtonPressed = button; + m_lastNavButtonPressed = button; + } + + #region UI Interaction Callbacks + + private void OnPressHide() + { + ExplorerCore.ShowMenu = false; + } + + private void OnNavButtonPressed(BaseMenuPage page) + { + ExplorerCore.Log($"Pressed '{page.Name}'"); + SetPage(page); } #endregion @@ -131,7 +159,6 @@ namespace ExplorerBeta.UI.Main var hideBtnObj = UIFactory.CreateButton(titleBar); var hideBtn = hideBtnObj.GetComponent