From 93ee8d29fee4a7b1f4f31037dcf941e6019621a8 Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Thu, 18 Apr 2019 19:03:00 -0500 Subject: [PATCH] Fixed info viewer UI --- .../ViewControllers/ModInfoViewController.cs | 181 +++++++++++++++--- .../UI/ViewControllers/ModListController.cs | 9 + 2 files changed, 165 insertions(+), 25 deletions(-) diff --git a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs index c9afbc9d..d18a76ec 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs @@ -1,4 +1,5 @@ using CustomUI.BeatSaber; +using CustomUI.Utilities; using System; using System.Collections.Generic; using System.Linq; @@ -24,6 +25,8 @@ namespace BSIPA_ModList.UI public void Init(Sprite icon, string name, string version, string author, string description, bool canUpdate) { + Logger.log.Debug($"init info view controller"); + Icon = icon; Name = name; Version = version; @@ -31,19 +34,20 @@ namespace BSIPA_ModList.UI Description = description; CanUpdate = canUpdate; + // i also have no clue why this is necessary rectTransform.anchorMin = new Vector2(0f, 0f); - rectTransform.anchorMax = new Vector2(0.4f, 1f); + rectTransform.anchorMax = new Vector2(0.5f, 1f); - var go = new GameObject("Info View"); + var go = new GameObject("Info View", typeof(RectTransform)); go.SetActive(false); + go.AddComponent(); 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); + rt.anchoredPosition = new Vector2(0f, 0f); + view.Init(this); go.SetActive(true); } } @@ -55,38 +59,165 @@ namespace BSIPA_ModList.UI private TextMeshProUGUI titleText; private TextMeshProUGUI authorText; private TextMeshProUGUI descText; + private Image icon; public void Init(ModInfoViewController controller) { + Logger.log.Debug($"init info view"); 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 = BeatSaberUI.CreateText(rectTransform, $"{controller.Name} {controller.Version}", new Vector2(11f, 27.5f)); 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); + authorText = BeatSaberUI.CreateText(rectTransform, controller.Author, new Vector2(11f, 22f)); + authorText.fontSize = 4.5f; + descText = BeatSaberUI.CreateText(rectTransform, controller.Description, new Vector2(-4.5f, 12.5f)); + descText.enableWordWrapping = true; + descText.overflowMode = TextOverflowModes.ScrollRect; + + icon = new GameObject("Mod Info View Icon", typeof(RectTransform)).AddComponent(); + icon.gameObject.SetActive(false); + icon.rectTransform.SetParent(rectTransform, false); + icon.rectTransform.anchorMin = new Vector2(0.5f, 0.44f); + icon.rectTransform.anchorMax = new Vector2(0.5f, 0.5f); + icon.rectTransform.sizeDelta = new Vector2(60f, 10f); + icon.rectTransform.anchoredPosition = new Vector2(-27.8f, 27.3f); + icon.sprite = controller.Icon; + icon.preserveAspect = true; + icon.useSpriteMesh = true; + icon.material = UIUtilities.NoGlowMaterial; + icon.gameObject.SetActive(true); } - public void OnUpdate() +#if DEBUG +#if ADJUST_INFO_TEXT_UI_KEYS + private int currentItem = 0; +#endif + public void Update() { - 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); +#if ADJUST_INFO_TEXT_UI_KEYS + RectTransform rt; + switch (currentItem) + { + default: + currentItem = 0; + goto case 0; // idk why this is needed tbh + case 0: + rt = titleText.rectTransform; + break; + case 1: + rt = authorText.rectTransform; + break; + case 2: + rt = descText.rectTransform; + break; + + } + + if (Input.GetKeyDown(KeyCode.N)) + currentItem++; + + var cpos = rt.anchoredPosition; + if (Input.GetKey(KeyCode.LeftArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x - .1f, cpos.y); + } + else if (Input.GetKey(KeyCode.RightArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x + .1f, cpos.y); + } + else if (Input.GetKey(KeyCode.UpArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x, cpos.y + .1f); + } + else if (Input.GetKey(KeyCode.DownArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x, cpos.y - .1f); + } + else + return; + + Logger.log.Debug($"Position now at {rt.anchoredPosition}"); +#endif + + var rt = icon.rectTransform; + if (Input.GetKey(KeyCode.Z)) + { // adjust anchormin + var cpos = rt.anchorMin; + if (Input.GetKey(KeyCode.LeftArrow)) + { + rt.anchorMin = new Vector2(cpos.x - .001f, cpos.y); + } + else if (Input.GetKey(KeyCode.RightArrow)) + { + rt.anchorMin = new Vector2(cpos.x + .001f, cpos.y); + } + else if (Input.GetKey(KeyCode.UpArrow)) + { + rt.anchorMin = new Vector2(cpos.x, cpos.y + .001f); + } + else if (Input.GetKey(KeyCode.DownArrow)) + { + rt.anchorMin = new Vector2(cpos.x, cpos.y - .001f); + } + else + return; + + Logger.log.Debug($"Anchor min now at {rt.anchorMin}"); + } + else if(Input.GetKey(KeyCode.X)) + { // adjust anchorMax + var cpos = rt.anchorMax; + if (Input.GetKey(KeyCode.LeftArrow)) + { + rt.anchorMax = new Vector2(cpos.x - .001f, cpos.y); + } + else if (Input.GetKey(KeyCode.RightArrow)) + { + rt.anchorMax = new Vector2(cpos.x + .001f, cpos.y); + } + else if (Input.GetKey(KeyCode.UpArrow)) + { + rt.anchorMax = new Vector2(cpos.x, cpos.y + .001f); + } + else if (Input.GetKey(KeyCode.DownArrow)) + { + rt.anchorMax = new Vector2(cpos.x, cpos.y - .001f); + } + else + return; + + Logger.log.Debug($"Anchor max now at {rt.anchorMax}"); + } + else + { + var cpos = rt.anchoredPosition; + if (Input.GetKey(KeyCode.LeftArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x - .1f, cpos.y); + } + else if (Input.GetKey(KeyCode.RightArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x + .1f, cpos.y); + } + else if (Input.GetKey(KeyCode.UpArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x, cpos.y + .1f); + } + else if (Input.GetKey(KeyCode.DownArrow)) + { + rt.anchoredPosition = new Vector2(cpos.x, cpos.y - .1f); + } + else + return; + + Logger.log.Debug($"Position now at {rt.anchoredPosition}"); + } + + } +#endif } } diff --git a/BSIPA-ModList/UI/ViewControllers/ModListController.cs b/BSIPA-ModList/UI/ViewControllers/ModListController.cs index e96bb98b..806399f9 100644 --- a/BSIPA-ModList/UI/ViewControllers/ModListController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModListController.cs @@ -9,6 +9,7 @@ using IPA.Old; using UnityEngine; using VRUI; using IPA.Loader.Features; +using TMPro; namespace BSIPA_ModList.UI { @@ -123,6 +124,14 @@ namespace BSIPA_ModList.UI } #pragma warning restore + public override TableCell CellForIdx(int idx) + { + var cell = base.CellForIdx(idx) as LevelListTableCell; + var nameText = cell.GetPrivateField("_songNameText"); + nameText.overflowMode = TextOverflowModes.Overflow; + return cell; + } + private ModListFlowCoordinator flow; #pragma warning disable CS0618