BeatSaberExtensions.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using BS_Utils.Utilities;
  2. using System.Linq;
  3. using TMPro;
  4. using UnityEngine;
  5. using UnityEngine.Events;
  6. using UnityEngine.UI;
  7. using Image = UnityEngine.UI.Image;
  8. namespace SongBrowser.Internals
  9. {
  10. public static class BeatSaberUIExtensions
  11. {
  12. #region Button Extensions
  13. public static void SetButtonText(this Button _button, string _text)
  14. {
  15. Polyglot.LocalizedTextMeshProUGUI localizer = _button.GetComponentInChildren<Polyglot.LocalizedTextMeshProUGUI>();
  16. if (localizer != null)
  17. GameObject.Destroy(localizer);
  18. TextMeshProUGUI tmpUgui = _button.GetComponentInChildren<TextMeshProUGUI>();
  19. if (tmpUgui != null)
  20. tmpUgui.text = _text;
  21. }
  22. public static void SetButtonTextSize(this Button _button, float _fontSize)
  23. {
  24. if (_button.GetComponentInChildren<TextMeshProUGUI>() != null)
  25. {
  26. _button.GetComponentInChildren<TextMeshProUGUI>().fontSize = _fontSize;
  27. }
  28. }
  29. public static void ToggleWordWrapping(this Button _button, bool enableWordWrapping)
  30. {
  31. if (_button.GetComponentInChildren<TextMeshProUGUI>() != null)
  32. {
  33. _button.GetComponentInChildren<TextMeshProUGUI>().enableWordWrapping = enableWordWrapping;
  34. }
  35. }
  36. public static void SetButtonIcon(this Button _button, Sprite _icon)
  37. {
  38. if (_button.GetComponentsInChildren<Image>().Count() > 1)
  39. _button.GetComponentsInChildren<Image>().First(x => x.name == "Icon").sprite = _icon;
  40. }
  41. public static void SetButtonBackground(this Button _button, Sprite _background)
  42. {
  43. if (_button.GetComponentsInChildren<Image>().Count() > 0)
  44. _button.GetComponentsInChildren<Image>()[0].sprite = _background;
  45. }
  46. #endregion
  47. #region ViewController Extensions
  48. public static Button CreateUIButton(this HMUI.ViewController parent, string buttonTemplate)
  49. {
  50. Button btn = BeatSaberUI.CreateUIButton(parent.rectTransform, buttonTemplate);
  51. return btn;
  52. }
  53. public static Button CreateUIButton(this HMUI.ViewController parent, string buttonTemplate, Vector2 anchoredPosition, Vector2 sizeDelta, UnityAction onClick = null, string buttonText = "BUTTON", Sprite icon = null)
  54. {
  55. Button btn = BeatSaberUI.CreateUIButton(parent.rectTransform, buttonTemplate, anchoredPosition, sizeDelta, onClick, buttonText, icon);
  56. return btn;
  57. }
  58. public static Button CreateUIButton(this HMUI.ViewController parent, string buttonTemplate, Vector2 anchoredPosition, UnityAction onClick = null, string buttonText = "BUTTON", Sprite icon = null)
  59. {
  60. Button btn = BeatSaberUI.CreateUIButton(parent.rectTransform, buttonTemplate, anchoredPosition, onClick, buttonText, icon);
  61. return btn;
  62. }
  63. public static Button CreateUIButton(this HMUI.ViewController parent, string buttonTemplate, UnityAction onClick = null, string buttonText = "BUTTON", Sprite icon = null)
  64. {
  65. Button btn = BeatSaberUI.CreateUIButton(parent.rectTransform, buttonTemplate, onClick, buttonText, icon);
  66. return btn;
  67. }
  68. public static Button CreateBackButton(this HMUI.ViewController parent)
  69. {
  70. Button btn = BeatSaberUI.CreateBackButton(parent.rectTransform);
  71. return btn;
  72. }
  73. /*public static GameObject CreateLoadingSpinner(this HMUI.ViewController parent)
  74. {
  75. GameObject loadingSpinner = BeatSaberUI.CreateLoadingSpinner(parent.rectTransform);
  76. return loadingSpinner;
  77. }*/
  78. public static TextMeshProUGUI CreateText(this HMUI.ViewController parent, string text, Vector2 anchoredPosition, Vector2 sizeDelta)
  79. {
  80. TextMeshProUGUI textMesh = BeatSaberUI.CreateText(parent.rectTransform, text, anchoredPosition, sizeDelta);
  81. return textMesh;
  82. }
  83. public static TextMeshProUGUI CreateText(this HMUI.ViewController parent, string text, Vector2 anchoredPosition)
  84. {
  85. TextMeshProUGUI textMesh = BeatSaberUI.CreateText(parent.rectTransform, text, anchoredPosition);
  86. return textMesh;
  87. }
  88. public static void SetText(this LevelListTableCell cell, string text)
  89. {
  90. cell.GetPrivateField<TextMeshProUGUI>("_songNameText").text = text;
  91. }
  92. public static void SetSubText(this LevelListTableCell cell, string subtext)
  93. {
  94. cell.GetPrivateField<TextMeshProUGUI>("_authorText").text = subtext;
  95. }
  96. public static void SetIcon(this LevelListTableCell cell, Sprite icon)
  97. {
  98. cell.GetPrivateField<UnityEngine.UI.Image>("_coverImage").sprite = icon;
  99. }
  100. #endregion
  101. }
  102. }