From 35a639c93449bad8bbb4ac7e42df5b5b3bcc2935 Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Wed, 17 Apr 2019 20:48:27 -0500 Subject: [PATCH] Continued tweaks to UI --- BSIPA-ModList/BSIPA-ModList.csproj | 3 + BSIPA-ModList/UI/ModListFlowCoordinator.cs | 22 +++++- .../ViewControllers/ModInfoViewController.cs | 73 ++++++++++++++++-- .../UI/ViewControllers/ModListController.cs | 14 +++- Refs/Unity.TextMeshPro.dll | Bin 0 -> 84480 bytes Refs/refs.txt | 1 + 6 files changed, 103 insertions(+), 10 deletions(-) create mode 100644 Refs/Unity.TextMeshPro.dll diff --git a/BSIPA-ModList/BSIPA-ModList.csproj b/BSIPA-ModList/BSIPA-ModList.csproj index c0c14007..d644b784 100644 --- a/BSIPA-ModList/BSIPA-ModList.csproj +++ b/BSIPA-ModList/BSIPA-ModList.csproj @@ -47,6 +47,9 @@ + + ..\Refs\Unity.TextMeshPro.dll + ..\Refs\UnityEngine.dll diff --git a/BSIPA-ModList/UI/ModListFlowCoordinator.cs b/BSIPA-ModList/UI/ModListFlowCoordinator.cs index ab09b76d..61f1482e 100644 --- a/BSIPA-ModList/UI/ModListFlowCoordinator.cs +++ b/BSIPA-ModList/UI/ModListFlowCoordinator.cs @@ -55,22 +55,42 @@ namespace BSIPA_ModList.UI { if (immediate) { + Logger.log.Debug("setting selected immediately"); if (HasSelected) + { + Logger.log.Debug("popping vc"); PopViewController(immediate: true); + } + Logger.log.Debug("pushing vc"); PushViewController(selected, callback, true); + HasSelected = true; } else { + Logger.log.Debug("setting selected"); if (HasSelected) - PopViewController(() => PushViewController(selected, callback, immediate), immediate); + { + Logger.log.Debug("popping vc"); + PopViewController(() => + { + Logger.log.Debug("pushing vc"); + PushViewController(selected, callback, immediate); + HasSelected = true; + }, immediate); + } else + { + Logger.log.Debug("pushing vc"); PushViewController(selected, callback, immediate); + HasSelected = true; + } } } public void ClearSelected(Action callback = null, bool immediate = false) { if (HasSelected) PopViewController(callback, immediate); + HasSelected = false; } public void PushViewController(VRUIViewController controller, Action callback = null, bool immediate = false) diff --git a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs index 2479627c..c9afbc9d 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs @@ -4,19 +4,23 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using TMPro; using UnityEngine; +using UnityEngine.UI; using VRUI; namespace BSIPA_ModList.UI { internal class ModInfoViewController : VRUIViewController { - private Sprite Icon; - private string Name; - private string Version; - private string Author; - private string Description; - private bool CanUpdate; + internal Sprite Icon; + internal string Name; + internal string Version; + internal string Author; + internal string Description; + internal bool CanUpdate; + + private ModInfoView view; public void Init(Sprite icon, string name, string version, string author, string description, bool canUpdate) { @@ -26,6 +30,63 @@ namespace BSIPA_ModList.UI Author = author; Description = description; CanUpdate = canUpdate; + + rectTransform.anchorMin = new Vector2(0f, 0f); + rectTransform.anchorMax = new Vector2(0.4f, 1f); + + var go = new GameObject("Info View"); + go.SetActive(false); + view = go.AddComponent(); + view.gameObject.AddComponent(); + view.Init(this); + var rt = view.transform as RectTransform; + rt.SetParent(transform); + rt.anchorMin = new Vector2(0f, 0f); + rt.anchorMax = new Vector2(1f, 1f); + rt.anchoredPosition = new Vector2(0.2f, 0f); + go.SetActive(true); + } + } + + internal class ModInfoView : MonoBehaviour + { + private ModInfoViewController controller; + + private TextMeshProUGUI titleText; + private TextMeshProUGUI authorText; + private TextMeshProUGUI descText; + + public void Init(ModInfoViewController controller) + { + this.controller = controller; + + var rectTransform = transform as RectTransform; + rectTransform.sizeDelta = new Vector2(60f, 10f); + + titleText = BeatSaberUI.CreateText(rectTransform, $"{controller.Name} {controller.Version}", new Vector2(0f, 0f)); + titleText.rectTransform.anchorMin = new Vector2(0f, .8f); + titleText.rectTransform.anchorMax = new Vector2(1f, 1f); + titleText.fontSize = 6f; + authorText = BeatSaberUI.CreateText(rectTransform, controller.Author, new Vector2(0f, 0f)); + titleText.rectTransform.anchorMin = new Vector2(0f, .6f); + titleText.rectTransform.anchorMax = new Vector2(1f, .8f); + authorText.fontSize = 3f; + descText = BeatSaberUI.CreateText(rectTransform, controller.Description, new Vector2(0f, 0f)); + descText.rectTransform.anchorMin = new Vector2(0f, .0f); + descText.rectTransform.anchorMax = new Vector2(1f, .6f); + } + + public void OnUpdate() + { + var cpos = titleText.rectTransform.anchoredPosition; + if (Input.GetKeyDown(KeyCode.LeftArrow)) + titleText.rectTransform.anchoredPosition = new Vector2(cpos.x - .1f, cpos.y); + if (Input.GetKeyDown(KeyCode.RightArrow)) + titleText.rectTransform.anchoredPosition = new Vector2(cpos.x + .1f, cpos.y); + if (Input.GetKeyDown(KeyCode.UpArrow)) + titleText.rectTransform.anchoredPosition = new Vector2(cpos.x, cpos.y + .1f); + if (Input.GetKeyDown(KeyCode.DownArrow)) + titleText.rectTransform.anchoredPosition = new Vector2(cpos.x, cpos.y - .1f); } } } diff --git a/BSIPA-ModList/UI/ViewControllers/ModListController.cs b/BSIPA-ModList/UI/ViewControllers/ModListController.cs index 801851bf..e96bb98b 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModListController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModListController.cs @@ -58,11 +58,11 @@ namespace BSIPA_ModList.UI if (infoView == null) { infoView = BeatSaberUI.CreateViewController(); - infoView.Init(icon, Plugin.Metadata.Name, Plugin.Metadata.Version.ToString(), Plugin.Metadata.Manifest.Author, + infoView.Init(icon, Plugin.Metadata.Name, "v" + 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); + list.flow.SetSelected(infoView, immediate: list.flow.HasSelected); } } @@ -84,6 +84,7 @@ namespace BSIPA_ModList.UI { Logger.log.Debug($"Selected BSIPAIgnoredModCell {Plugin.Name} {Plugin.Version}"); + list.flow.ClearSelected(); } } @@ -116,6 +117,8 @@ namespace BSIPA_ModList.UI public void OnSelect(ModListController cntrl) { Logger.log.Debug($"Selected IPAModCell {Plugin.Name} {Plugin.Version}"); + + list.flow.ClearSelected(); } } #pragma warning restore @@ -130,6 +133,9 @@ namespace BSIPA_ModList.UI DidActivateEvent = DidActivate; DidSelectRowEvent = DidSelectRow; + rectTransform.anchorMin = new Vector2(0f, 0f); + rectTransform.anchorMax = new Vector2(.4f, 1f); + includePageButtons = true; this.flow = flow; @@ -153,7 +159,9 @@ namespace BSIPA_ModList.UI private new void DidActivate(bool first, ActivationType type) { - + var rt = _customListTableView.transform as RectTransform; + rt.anchorMin = new Vector2(.1f, 0f); + rt.anchorMax = new Vector2(.9f, 1f); } } } diff --git a/Refs/Unity.TextMeshPro.dll b/Refs/Unity.TextMeshPro.dll new file mode 100644 index 0000000000000000000000000000000000000000..56123d46e79afff965812b9a4b03b3a93fb7d6ad GIT binary patch literal 84480 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 jdb@>o7Cto{lK$<#U$h6_%$QlEUFQJ&?Z5x;df