Decompiled source of SparrohUILib v1.1.1
BepInEx/plugins/SparrohUILib.dll
Decompiled 9 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Microsoft.CodeAnalysis; using Pigeon.Movement; using Sparroh.UI; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("SparrohUILib")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SparrohUILib")] [assembly: AssemblyTitle("SparrohUILib")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } [BepInPlugin("sparroh.uilibrary", "SparrohUILib", "1.1.1")] [MycoMod(/*Could not decode attribute arguments.*/)] public class SparrohUILibPlugin : BaseUnityPlugin { public const string PluginGUID = "sparroh.uilibrary"; public const string PluginName = "SparrohUILib"; public const string PluginVersion = "1.1.1"; internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; UITheme.Initialize(); Logger.LogInfo((object)"SparrohUILib v1.1.1 loaded."); } } namespace Sparroh.UI { public static class RichText { public static string Colorize(string text, Color color) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) return "<color=#" + UIColors.ToHex(color) + ">" + text + "</color>"; } public static string Colorize(string text, string hexWithoutHash) { return "<color=#" + hexWithoutHash + ">" + text + "</color>"; } public static string Bold(string text) { return "<b>" + text + "</b>"; } public static string Italic(string text) { return "<i>" + text + "</i>"; } public static string Size(string text, int percent) { return $"<size={percent}%>{text}</size>"; } public static string Labeled(string label, string value, Color valueColor) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return label + ": " + Colorize(value, valueColor); } public static string Labeled(string label, string value, Color valueColor, string unit) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrEmpty(unit)) { return Labeled(label, value, valueColor); } return label + ": " + Colorize(value, valueColor) + " " + unit; } public static string Labeled(string label, float value, Color valueColor, string unit = null, string format = "F1") { //IL_000a: Unknown result type (might be due to invalid IL or missing references) return Labeled(label, value.ToString(format), valueColor, unit); } public static string Labeled(string label, int value, Color valueColor, string unit = null) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) return Labeled(label, value.ToString(), valueColor, unit); } public static string LabeledWithRate(string label, float value, float rate, Color color, string format = "F0", string rateFormat = "F1") { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) return label + ": " + Colorize(value.ToString(format), color) + " (" + Colorize(rate.ToString(rateFormat), color) + "/s)"; } } public static class UIFactory { private static Sprite _whiteSprite; public static Sprite WhiteSprite { get { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_whiteSprite != (Object)null) { return _whiteSprite; } Texture2D whiteTexture = Texture2D.whiteTexture; _whiteSprite = Sprite.Create(whiteTexture, new Rect(0f, 0f, (float)((Texture)whiteTexture).width, (float)((Texture)whiteTexture).height), new Vector2(0.5f, 0.5f), 100f); return _whiteSprite; } } public static GameObject Create(string name, Transform parent = null) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown GameObject val = new GameObject(name); if ((Object)(object)parent != (Object)null) { val.transform.SetParent(parent, false); } return val; } public static RectTransform CreateRect(string name, Transform parent = null) { return Create(name, parent).AddComponent<RectTransform>(); } public static Image CreateImage(string name, Transform parent, Color color, bool raycast = true) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) Image obj = ((Component)CreateRect(name, parent)).gameObject.AddComponent<Image>(); ((Graphic)obj).color = color; ((Graphic)obj).raycastTarget = raycast; return obj; } public static TextMeshProUGUI CreateTmp(string name, Transform parent, string text = "", float fontSize = -1f, Color? color = null, TextAlignmentOptions alignment = (TextAlignmentOptions)513, bool wrap = false) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) TextMeshProUGUI obj = ((Component)CreateRect(name, parent)).gameObject.AddComponent<TextMeshProUGUI>(); float fontSize2 = ((fontSize > 0f) ? fontSize : UITheme.ScaledFontBody); UITheme.ApplyTextStyle(obj, fontSize2, color, alignment, wrap); ((TMP_Text)obj).text = text ?? string.Empty; return obj; } public static Canvas CreateOverlayCanvas(string name, int sortingOrder) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) GameObject obj = Create(name); Object.DontDestroyOnLoad((Object)(object)obj); Canvas val = obj.AddComponent<Canvas>(); val.renderMode = (RenderMode)0; val.sortingOrder = sortingOrder; CanvasScaler obj2 = obj.AddComponent<CanvasScaler>(); obj2.uiScaleMode = (ScaleMode)1; obj2.referenceResolution = new Vector2(1920f, 1080f); obj2.screenMatchMode = (ScreenMatchMode)0; obj2.matchWidthOrHeight = 0.5f; obj2.referencePixelsPerUnit = 100f; obj.AddComponent<GraphicRaycaster>(); return val; } public static VerticalLayoutGroup AddVerticalLayout(GameObject go, float spacing = -1f, RectOffset padding = null, TextAnchor childAlignment = (TextAnchor)0, bool controlChildHeight = true, bool expandHeight = false, bool controlChildWidth = true, bool expandWidth = true) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) VerticalLayoutGroup val = go.GetComponent<VerticalLayoutGroup>(); if ((Object)(object)val == (Object)null) { val = go.AddComponent<VerticalLayoutGroup>(); } ((HorizontalOrVerticalLayoutGroup)val).spacing = ((spacing >= 0f) ? spacing : UITheme.S(UITheme.SpacingNormal)); ((LayoutGroup)val).padding = padding ?? UITheme.ScaledPadding(12, 12, 12, 12); ((LayoutGroup)val).childAlignment = childAlignment; ((HorizontalOrVerticalLayoutGroup)val).childControlHeight = controlChildHeight; ((HorizontalOrVerticalLayoutGroup)val).childForceExpandHeight = expandHeight; ((HorizontalOrVerticalLayoutGroup)val).childControlWidth = controlChildWidth; ((HorizontalOrVerticalLayoutGroup)val).childForceExpandWidth = expandWidth; return val; } public static HorizontalLayoutGroup AddHorizontalLayout(GameObject go, float spacing = -1f, RectOffset padding = null, TextAnchor childAlignment = (TextAnchor)3, bool controlChildWidth = true, bool expandWidth = false, bool controlChildHeight = true, bool expandHeight = true) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) HorizontalLayoutGroup val = go.GetComponent<HorizontalLayoutGroup>(); if ((Object)(object)val == (Object)null) { val = go.AddComponent<HorizontalLayoutGroup>(); } ((HorizontalOrVerticalLayoutGroup)val).spacing = ((spacing >= 0f) ? spacing : UITheme.S(UITheme.SpacingNormal)); ((LayoutGroup)val).padding = padding ?? UITheme.ScaledPadding(8, 8, 4, 4); ((LayoutGroup)val).childAlignment = childAlignment; ((HorizontalOrVerticalLayoutGroup)val).childControlWidth = controlChildWidth; ((HorizontalOrVerticalLayoutGroup)val).childForceExpandWidth = expandWidth; ((HorizontalOrVerticalLayoutGroup)val).childControlHeight = controlChildHeight; ((HorizontalOrVerticalLayoutGroup)val).childForceExpandHeight = expandHeight; return val; } public static ContentSizeFitter AddContentSizeFitter(GameObject go, FitMode horizontal = (FitMode)0, FitMode vertical = (FitMode)2) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) ContentSizeFitter val = go.GetComponent<ContentSizeFitter>(); if ((Object)(object)val == (Object)null) { val = go.AddComponent<ContentSizeFitter>(); } val.horizontalFit = horizontal; val.verticalFit = vertical; return val; } public static void ApplyWhiteSprite(Image img) { if ((Object)(object)img != (Object)null && (Object)(object)img.sprite == (Object)null) { img.sprite = WhiteSprite; } } } public static class UIHelpers { public static bool TryGetReticle(out Transform reticle) { reticle = null; try { if ((Object)(object)Player.LocalPlayer == (Object)null || (Object)(object)Player.LocalPlayer.PlayerLook == (Object)null || (Object)(object)Player.LocalPlayer.PlayerLook.Reticle == (Object)null) { return false; } reticle = (Transform)(object)Player.LocalPlayer.PlayerLook.Reticle; return true; } catch { return false; } } public static void SetAnchor(RectTransform rt, Vector2 anchorMin, Vector2 anchorMax, Vector2? pivot = null) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)rt == (Object)null)) { rt.anchorMin = anchorMin; rt.anchorMax = anchorMax; if (pivot.HasValue) { rt.pivot = pivot.Value; } } } public static void SetPointAnchor(RectTransform rt, float x, float y, Vector2? pivot = null) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(x, y); SetAnchor(rt, val, val, (Vector2)(((??)pivot) ?? new Vector2(0.5f, 0.5f))); } public static void SetFillParent(RectTransform rt, float padding = 0f) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)rt == (Object)null)) { rt.anchorMin = Vector2.zero; rt.anchorMax = Vector2.one; rt.offsetMin = new Vector2(padding, padding); rt.offsetMax = new Vector2(0f - padding, 0f - padding); rt.pivot = new Vector2(0.5f, 0.5f); } } public static void SetTopStretch(RectTransform rt, float height, float left = 0f, float right = 0f, float top = 0f) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)rt == (Object)null)) { rt.anchorMin = new Vector2(0f, 1f); rt.anchorMax = new Vector2(1f, 1f); rt.pivot = new Vector2(0.5f, 1f); rt.sizeDelta = new Vector2(0f - (left + right), height); rt.anchoredPosition = new Vector2((left - right) * 0.5f, 0f - top); } } public static void DestroySafe(Object obj) { if (!(obj == (Object)null)) { if (Application.isPlaying) { Object.Destroy(obj); } else { Object.DestroyImmediate(obj); } } } public static void DestroyChildren(Transform parent) { if (!((Object)(object)parent == (Object)null)) { for (int num = parent.childCount - 1; num >= 0; num--) { DestroySafe((Object)(object)((Component)parent.GetChild(num)).gameObject); } } } public static Image EnsureImage(GameObject go, Color color, bool raycast = true) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) Image val = go.GetComponent<Image>(); if ((Object)(object)val == (Object)null) { val = go.AddComponent<Image>(); } ((Graphic)val).color = color; ((Graphic)val).raycastTarget = raycast; return val; } public static LayoutElement EnsureLayoutElement(GameObject go, float? preferredWidth = null, float? preferredHeight = null, float? minHeight = null) { LayoutElement val = go.GetComponent<LayoutElement>(); if ((Object)(object)val == (Object)null) { val = go.AddComponent<LayoutElement>(); } if (preferredWidth.HasValue) { val.preferredWidth = preferredWidth.Value; } if (preferredHeight.HasValue) { val.preferredHeight = preferredHeight.Value; } if (minHeight.HasValue) { val.minHeight = minHeight.Value; } return val; } public static bool ScreenToLocal(RectTransform parent, Vector2 screenPoint, out Vector2 localPoint, Camera cam = null) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return RectTransformUtility.ScreenPointToLocalPointInRectangle(parent, screenPoint, cam, ref localPoint); } public static Vector2 ScreenPointToNormalizedAnchor(RectTransform parent, Vector2 screenPoint, Camera cam = null) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) if (!ScreenToLocal(parent, screenPoint, out var localPoint, cam)) { return new Vector2(0.5f, 0.5f); } Rect rect = parent.rect; float num = ((((Rect)(ref rect)).width > 0f) ? ((localPoint.x - ((Rect)(ref rect)).xMin) / ((Rect)(ref rect)).width) : 0.5f); float num2 = ((((Rect)(ref rect)).height > 0f) ? ((localPoint.y - ((Rect)(ref rect)).yMin) / ((Rect)(ref rect)).height) : 0.5f); return new Vector2(Mathf.Clamp01(num), Mathf.Clamp01(num2)); } } public static class GearActionBar { private class Slot { public string Id; public int Order; public UIButton Button; public bool WantVisible = true; public string Label = string.Empty; public UIButtonStyle Style; public bool Interactable = true; public Action OnClick; } public const int OrderClearGrid = 10; public const int OrderSolve = 20; public const int OrderCancelSolve = 30; public const int OrderClearSelection = 40; public const int OrderCopyGrid = 50; public const int OrderPasteCode = 60; public const int OrderFilter = 100; public const int OrderPriority = 110; public const int OrderScrapMarked = 120; public const int OrderScrapNonFav = 130; public const int OrderUndoScrap = 140; public const int OrderGunStats = 150; private const float CompactHeightRef = 24f; private const float CompactFontRef = 12f; private const float SlotGapRef = 4f; private static Canvas _canvas; private static RectTransform _row; private static readonly Dictionary<string, Slot> _slots = new Dictionary<string, Slot>(StringComparer.Ordinal); private static bool _contextVisible; private static bool _built; public static void Register(string id, string label, int order, Action onClick, UIButtonStyle style = UIButtonStyle.Default) { if (string.IsNullOrEmpty(id)) { return; } EnsureBuilt(); label = label ?? string.Empty; if (_slots.TryGetValue(id, out var value)) { bool num = value.Order != order; bool flag = !string.Equals(value.Label, label, StringComparison.Ordinal); bool flag2 = value.Style != style; bool flag3 = (object)value.OnClick != onClick; value.Order = order; value.OnClick = onClick; if (value.Button != null) { if (flag) { value.Label = label; value.Button.SetText(label); value.Button.SetWidth(Mathf.Max(UITheme.S(64f), EstimateWidth(label))); } if (flag2) { value.Style = style; value.Button.SetStyle(style); } if (flag3) { ((UnityEventBase)value.Button.Button.onClick).RemoveAllListeners(); if (onClick != null) { value.Button.OnClick(onClick); } } } if (num) { RebuildOrder(); } ApplyVisibility(); } else { float value2 = UITheme.S(24f); UIButton uIButton = UIButton.Create((Transform)(object)_row, label, onClick, style, null, value2); if ((Object)(object)uIButton.Label != (Object)null) { ((TMP_Text)uIButton.Label).fontSize = UITheme.S(12f); } uIButton.SetWidth(Mathf.Max(UITheme.S(64f), EstimateWidth(label))); _slots[id] = new Slot { Id = id, Order = order, Button = uIButton, WantVisible = true, Label = label, Style = style, Interactable = true, OnClick = onClick }; RebuildOrder(); ApplyVisibility(); } } public static void SetText(string id, string text) { if (_slots.TryGetValue(id, out var value) && value.Button != null) { text = text ?? string.Empty; if (!string.Equals(value.Label, text, StringComparison.Ordinal)) { value.Label = text; value.Button.SetText(text); value.Button.SetWidth(Mathf.Max(UITheme.S(64f), EstimateWidth(text))); } } } public static void SetInteractable(string id, bool interactable) { if (_slots.TryGetValue(id, out var value) && value.Button != null && value.Interactable != interactable) { value.Interactable = interactable; value.Button.SetInteractable(interactable); } } public static void SetStyle(string id, UIButtonStyle style) { if (_slots.TryGetValue(id, out var value) && value.Button != null && value.Style != style) { value.Style = style; value.Button.SetStyle(style); } } public static void SetSlotVisible(string id, bool visible) { if (!_slots.TryGetValue(id, out var value)) { return; } if (value.WantVisible == visible) { if (value.Button != null) { value.Button.SetActive(visible && _contextVisible); } return; } value.WantVisible = visible; if (value.Button != null) { value.Button.SetActive(visible && _contextVisible); } } public static void SetContextVisible(bool visible) { if (_contextVisible == visible && _built) { return; } _contextVisible = visible; if (!_built) { if (!visible) { return; } EnsureBuilt(); } ApplyVisibility(); } public static bool IsGearMenuOpen() { try { if ((Object)(object)Menu.Instance == (Object)null || !Menu.Instance.IsOpen || (Object)(object)Menu.Instance.WindowSystem == (Object)null) { return false; } Window top = Menu.Instance.WindowSystem.GetTop(); return top is GearDetailsWindow || top is OuroGearWindow; } catch { return false; } } public static void Tick() { SetContextVisible(IsGearMenuOpen()); } public static void Unregister(string id) { if (_slots.TryGetValue(id, out var value)) { if (value.Button != null && (Object)(object)value.Button.GameObject != (Object)null) { Object.Destroy((Object)(object)value.Button.GameObject); } _slots.Remove(id); } } private static void EnsureBuilt() { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) if (!_built || !((Object)(object)_canvas != (Object)null)) { UITheme.Initialize(); _canvas = UIFactory.CreateOverlayCanvas("Sparroh_GearActionBar", UITheme.WindowSortingOrder + 8); RectTransform obj = UIFactory.CreateRect("Bar", ((Component)_canvas).transform); obj.anchorMin = new Vector2(0f, 1f); obj.anchorMax = new Vector2(1f, 1f); obj.pivot = new Vector2(0.5f, 1f); float num = UITheme.S(36f); obj.sizeDelta = new Vector2(0f, num); obj.anchoredPosition = new Vector2(0f, 0f - UITheme.S(6f)); Image obj2 = ((Component)obj).gameObject.AddComponent<Image>(); ((Graphic)obj2).color = UIColors.WithAlpha(UIColors.PanelBg, 0.55f); UIFactory.ApplyWhiteSprite(obj2); ((Graphic)obj2).raycastTarget = false; UIFactory.AddHorizontalLayout(((Component)obj).gameObject, UITheme.S(4f), UITheme.ScaledPadding(8, 8, 4, 4), (TextAnchor)3, controlChildWidth: false, expandWidth: false, controlChildHeight: true, expandHeight: false); _row = obj; _built = true; ((Component)_canvas).gameObject.SetActive(false); } } private static void RebuildOrder() { if ((Object)(object)_row == (Object)null) { return; } foreach (Slot item in _slots.Values.OrderBy((Slot x) => x.Order)) { if (item.Button != null) { item.Button.GameObject.transform.SetParent((Transform)(object)_row, false); item.Button.GameObject.transform.SetAsLastSibling(); } } } private static void ApplyVisibility() { if ((Object)(object)_canvas == (Object)null) { return; } bool flag = _slots.Values.Any((Slot s) => s.WantVisible); bool flag2 = _contextVisible && flag; if (((Component)_canvas).gameObject.activeSelf != flag2) { ((Component)_canvas).gameObject.SetActive(flag2); } foreach (Slot value in _slots.Values) { if (value.Button != null) { value.Button.SetActive(_contextVisible && value.WantVisible); } } } private static float EstimateWidth(string label) { if (string.IsNullOrEmpty(label)) { return UITheme.S(64f); } return UITheme.S(12f + (float)label.Length * 7.2f + 16f); } } public class HudBuilder { private struct LineSpec { public string Name; public float FontSize; public TextAlignmentOptions Alignment; } private readonly string _name; private Transform _parent; private float _anchorX = 0.5f; private float _anchorY = 0.5f; private Vector2 _pivot = new Vector2(0f, 1f); private Vector2 _size; private Vector2 _anchoredPosition = Vector2.zero; private bool _parentToReticle = true; private readonly List<LineSpec> _lines = new List<LineSpec>(); private bool _withBackground; private Color _backgroundColor = UIColors.WithAlpha(UIColors.PanelBg, 0.55f); private HudBuilder(string name) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) _name = name; _size = new Vector2(UITheme.S(UITheme.HudDefaultWidth), UITheme.S(UITheme.HudLineHeight)); } public static HudBuilder Create(string name) { return new HudBuilder(name); } public HudBuilder ParentToReticle(bool enabled = true) { _parentToReticle = enabled; return this; } public HudBuilder Parent(Transform parent) { _parent = parent; _parentToReticle = false; return this; } public HudBuilder Anchor(float x, float y) { _anchorX = Mathf.Clamp01(x); _anchorY = Mathf.Clamp01(y); return this; } public HudBuilder Pivot(Vector2 pivot) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _pivot = pivot; return this; } public HudBuilder Size(float width, float height, bool scale = true) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) _size = (Vector2)(scale ? UITheme.ScaledSize(width, height) : new Vector2(width, height)); return this; } public HudBuilder AnchoredPosition(Vector2 pos, bool scale = true) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) _anchoredPosition = (scale ? UITheme.S(pos) : pos); return this; } public HudBuilder WithBackground(Color? color = null) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) _withBackground = true; if (color.HasValue) { _backgroundColor = color.Value; } return this; } public HudBuilder AddText(string name = "Text", float fontSize = -1f, TextAlignmentOptions alignment = (TextAlignmentOptions)513) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) _lines.Add(new LineSpec { Name = name, FontSize = ((fontSize > 0f) ? fontSize : UITheme.FontHud), Alignment = alignment }); return this; } public HudBuilder AddLines(int count, float fontSize = -1f, TextAlignmentOptions alignment = (TextAlignmentOptions)513) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < count; i++) { AddText($"Line{i}", fontSize, alignment); } return this; } public HudHandle Build() { //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) Transform reticle = _parent; if (_parentToReticle && !UIHelpers.TryGetReticle(out reticle)) { return null; } if ((Object)(object)reticle == (Object)null) { return null; } float scaledHudLineHeight = UITheme.ScaledHudLineHeight; if (_lines.Count > 1) { float num = scaledHudLineHeight * (float)_lines.Count + UITheme.S(4f); if (_size.y < num) { _size.y = num; } } else if (_lines.Count == 0) { AddText("Text", -1f, (TextAlignmentOptions)513); } RectTransform val = UIFactory.CreateRect(_name, reticle); UIHelpers.SetPointAnchor(val, _anchorX, _anchorY, _pivot); val.sizeDelta = _size; val.anchoredPosition = _anchoredPosition; if (_withBackground) { UIFactory.ApplyWhiteSprite(UIHelpers.EnsureImage(((Component)val).gameObject, _backgroundColor, raycast: false)); } UIText[] array = new UIText[_lines.Count]; for (int i = 0; i < _lines.Count; i++) { LineSpec lineSpec = _lines[i]; float fontSize = UITheme.S(lineSpec.FontSize); UIText uIText = UIText.Create((Transform)(object)val, lineSpec.Name, "", fontSize, UIColors.TextPrimary, lineSpec.Alignment); RectTransform rect = uIText.Rect; rect.anchorMin = new Vector2(0f, 1f); rect.anchorMax = new Vector2(1f, 1f); rect.pivot = new Vector2(0.5f, 1f); rect.sizeDelta = new Vector2(0f, scaledHudLineHeight); rect.anchoredPosition = new Vector2(0f, (float)(-i) * scaledHudLineHeight); array[i] = uIText; } return new HudHandle(((Component)val).gameObject, val, array); } } public class HudHandle { public GameObject GameObject { get; } public RectTransform Rect { get; } public UIText[] Lines { get; } public UIText Primary { get { if (Lines == null || Lines.Length == 0) { return null; } return Lines[0]; } } public bool IsActive { get { if ((Object)(object)GameObject != (Object)null) { return GameObject.activeSelf; } return false; } } public Vector2 Size { get { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Rect != (Object)null)) { return Vector2.zero; } return Rect.sizeDelta; } } internal HudHandle(GameObject go, RectTransform rt, UIText[] lines) { GameObject = go; Rect = rt; Lines = lines; } public void SetAnchor(float x, float y) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Rect == (Object)null)) { UIHelpers.SetPointAnchor(Rect, x, y, Rect.pivot); } } public void SetActive(bool active) { if ((Object)(object)GameObject != (Object)null) { GameObject.SetActive(active); } } public void Destroy() { UIHelpers.DestroySafe((Object)(object)GameObject); } } public sealed class ConfigColor { private readonly ConfigEntry<string> _entry; private readonly Color _fallback; private Color _cached; public ConfigEntry<string> Entry => _entry; public Color Value => _cached; public string Hex => _entry.Value; public ConfigColor(ConfigEntry<string> entry, Color fallback) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) _entry = entry ?? throw new ArgumentNullException("entry"); _fallback = fallback; _cached = Parse(_entry.Value); _entry.SettingChanged += OnSettingChanged; } public static ConfigColor Bind(ConfigFile config, string section, string key, Color fallback, string description = null) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) string text = UIColors.ToHex(fallback); string text2 = description ?? ("Rich-text value color as hex (RRGGBB or #RRGGBB). Default: " + text + "."); return new ConfigColor(config.Bind<string>(section, key, text, text2), fallback); } public void Refresh() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) _cached = Parse(_entry.Value); } private void OnSettingChanged(object sender, EventArgs e) { Refresh(); } private Color Parse(string hex) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return UIColors.ParseHex(hex, _fallback); } public static implicit operator Color(ConfigColor c) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) return (Color)(((??)c?.Value) ?? default(Color)); } } public static class UIColors { public static readonly Color Sky = new Color(0.45f, 0.85f, 0.95f, 1f); public static readonly Color Rose = new Color(0.95f, 0.3f, 0.35f, 1f); public static readonly Color Shamrock = new Color(0.2f, 0.9f, 0.45f, 1f); public static readonly Color Macaroon = new Color(0.98f, 0.82f, 0.35f, 1f); public static readonly Color Orchid = new Color(0.85f, 0.4f, 0.9f, 1f); public static readonly Color Amber = new Color(1f, 0.75f, 0.15f, 1f); public static readonly Color Electric = new Color(0.3f, 0.65f, 1f, 1f); public static readonly Color TextPrimary = new Color(0.95f, 0.96f, 0.98f, 1f); public static readonly Color TextSecondary = new Color(0.7f, 0.74f, 0.8f, 1f); public static readonly Color TextMuted = new Color(0.5f, 0.54f, 0.6f, 1f); public static readonly Color PanelBg = new Color(0.08f, 0.1f, 0.14f, 0.94f); public static readonly Color Surface = new Color(0.12f, 0.15f, 0.2f, 0.96f); public static readonly Color TitleBar = new Color(0.1f, 0.18f, 0.24f, 1f); public static readonly Color SectionBar = new Color(0.12f, 0.22f, 0.3f, 1f); public static readonly Color EntryBg = new Color(0.14f, 0.17f, 0.22f, 0.9f); public static readonly Color ScrollBg = new Color(0.06f, 0.08f, 0.11f, 0.85f); public static readonly Color TooltipBg = new Color(0.06f, 0.08f, 0.12f, 0.96f); public static readonly Color Border = new Color(0.25f, 0.4f, 0.5f, 0.7f); public static readonly Color BorderAccent = new Color(0.3f, 0.7f, 0.85f, 0.9f); public static readonly Color Separator = new Color(0.3f, 0.4f, 0.5f, 0.4f); public static readonly Color ButtonNormal = new Color(0.16f, 0.22f, 0.3f, 1f); public static readonly Color ButtonHover = new Color(0.26f, 0.38f, 0.5f, 1f); public static readonly Color ButtonPressed = new Color(0.12f, 0.17f, 0.24f, 1f); public static readonly Color ButtonPrimary = new Color(0.14f, 0.42f, 0.62f, 1f); public static readonly Color ButtonPrimaryHover = new Color(0.22f, 0.55f, 0.8f, 1f); public static readonly Color ButtonPrimaryPressed = new Color(0.1f, 0.32f, 0.48f, 1f); public static readonly Color ButtonDanger = new Color(0.58f, 0.18f, 0.22f, 1f); public static readonly Color ButtonDangerHover = new Color(0.78f, 0.28f, 0.32f, 1f); public static readonly Color ButtonDangerPressed = new Color(0.42f, 0.12f, 0.15f, 1f); public static readonly Color ButtonActive = new Color(0.16f, 0.48f, 0.4f, 1f); public static readonly Color ButtonActiveHover = new Color(0.22f, 0.6f, 0.5f, 1f); public static readonly Color ButtonActivePressed = new Color(0.12f, 0.36f, 0.3f, 1f); public static readonly Color ToggleOff = new Color(0.25f, 0.28f, 0.32f, 1f); public static readonly Color ToggleOn = new Color(0.18f, 0.55f, 0.4f, 1f); public static readonly Color Checkmark = new Color(0.3f, 0.95f, 0.55f, 1f); public static readonly Color InputBg = new Color(0.1f, 0.13f, 0.18f, 0.95f); public static readonly Color InputText = new Color(0.92f, 0.94f, 0.96f, 1f); public static readonly Color SliderTrack = new Color(0.15f, 0.18f, 0.24f, 1f); public static readonly Color SliderFill = new Color(0.25f, 0.65f, 0.8f, 1f); public static readonly Color SliderHandle = new Color(0.9f, 0.93f, 0.96f, 1f); public static readonly Color ProgressTrack = new Color(0.12f, 0.15f, 0.2f, 1f); public static readonly Color ProgressFill = new Color(0.25f, 0.75f, 0.55f, 1f); public static readonly Color TabInactive = new Color(0.12f, 0.16f, 0.22f, 1f); public static readonly Color TabActive = new Color(0.18f, 0.3f, 0.4f, 1f); public static readonly Color TabHover = new Color(0.16f, 0.24f, 0.32f, 1f); public static readonly Color Success = Shamrock; public static readonly Color Warning = Amber; public static readonly Color Error = Rose; public static readonly Color Info = Sky; public static Color GameRed { get { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)Global.Instance != (Object)null) { return Global.Instance.RedUIColor; } } catch { } return Rose; } } public static Color GameGreen { get { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)Global.Instance != (Object)null) { return Global.Instance.GreenUIColor; } } catch { } return Shamrock; } } public static string ToHex(Color color) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return ColorUtility.ToHtmlStringRGB(color); } public static Color WithAlpha(Color color, float alpha) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) return new Color(color.r, color.g, color.b, alpha); } public static bool TryParseHex(string hex, out Color color) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) color = default(Color); if (string.IsNullOrWhiteSpace(hex)) { return false; } string text = hex.Trim(); if (text.StartsWith("#")) { text = text.Substring(1); } if (text.Length != 6 && text.Length != 8) { return false; } return ColorUtility.TryParseHtmlString("#" + text, ref color); } public static Color ParseHex(string hex, Color fallback) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (!TryParseHex(hex, out var color)) { return fallback; } return color; } } public static class UITheme { public const float ReferenceWidth = 1920f; public const float ReferenceHeight = 1080f; public static float FontTitle = 24f; public static float FontHeader = 20f; public static float FontBody = 16f; public static float FontHud = 18f; public static float FontSmall = 13f; public static float FontTiny = 11f; public static float PaddingSmall = 6f; public static float PaddingMedium = 12f; public static float PaddingLarge = 20f; public static float SpacingTight = 4f; public static float SpacingNormal = 8f; public static float SpacingLoose = 14f; public static float ButtonHeight = 32f; public static float InputHeight = 30f; public static float ToggleSize = 22f; public static float SliderHeight = 20f; public static float ProgressHeight = 12f; public static float TitleBarHeight = 44f; public static float SeparatorHeight = 2f; public static float TabHeight = 34f; public static float BorderWidth = 1.5f; public static float CornerRadiusHint = 4f; public static float HudLineHeight = 22f; public static float HudDefaultWidth = 320f; public static int WindowSortingOrder = 100; public static int TooltipSortingOrder = 250; public static int DialogSortingOrder = 200; public static float WindowMinWidth = 320f; public static float WindowMinHeight = 200f; private static bool _initialized; private static TMP_FontAsset _cachedFont; public static float Scale => Mathf.Clamp(((Screen.height > 0) ? ((float)Screen.height) : 1080f) / 1080f, 0.65f, 1.75f); public static float ScaleX => Mathf.Clamp(((Screen.width > 0) ? ((float)Screen.width) : 1920f) / 1920f, 0.65f, 1.75f); public static float ScaledFontTitle => S(FontTitle); public static float ScaledFontHeader => S(FontHeader); public static float ScaledFontBody => S(FontBody); public static float ScaledFontHud => S(FontHud); public static float ScaledFontSmall => S(FontSmall); public static float ScaledFontTiny => S(FontTiny); public static float ScaledButtonHeight => S(ButtonHeight); public static float ScaledInputHeight => S(InputHeight); public static float ScaledTitleBarHeight => S(TitleBarHeight); public static float ScaledHudLineHeight => S(HudLineHeight); public static TMP_FontAsset Font { get { if ((Object)(object)_cachedFont != (Object)null) { return _cachedFont; } TryCacheFont(); return _cachedFont; } } public static void Initialize() { if (!_initialized) { _initialized = true; TryCacheFont(); } } public static float S(float referencePixels) { return referencePixels * Scale; } public static Vector2 S(Vector2 reference) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return reference * Scale; } public static RectOffset ScaledPadding(int left, int right, int top, int bottom) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown float scale = Scale; return new RectOffset(Mathf.RoundToInt((float)left * scale), Mathf.RoundToInt((float)right * scale), Mathf.RoundToInt((float)top * scale), Mathf.RoundToInt((float)bottom * scale)); } private static void TryCacheFont() { TextMeshProUGUI val = Object.FindObjectOfType<TextMeshProUGUI>(); if ((Object)(object)val != (Object)null && (Object)(object)((TMP_Text)val).font != (Object)null) { _cachedFont = ((TMP_Text)val).font; return; } TMP_FontAsset val2 = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF"); if ((Object)(object)val2 != (Object)null) { _cachedFont = val2; } else if ((Object)(object)TMP_Settings.defaultFontAsset != (Object)null) { _cachedFont = TMP_Settings.defaultFontAsset; } } public static void ApplyTextStyle(TextMeshProUGUI tmp, float fontSize, Color? color = null, TextAlignmentOptions alignment = (TextAlignmentOptions)513, bool wrap = false) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)tmp == (Object)null)) { if ((Object)(object)Font != (Object)null) { ((TMP_Text)tmp).font = Font; } ((TMP_Text)tmp).fontSize = fontSize; ((Graphic)tmp).color = (Color)(((??)color) ?? UIColors.TextPrimary); ((TMP_Text)tmp).alignment = alignment; ((TMP_Text)tmp).enableWordWrapping = wrap; ((TMP_Text)tmp).richText = true; ((TMP_Text)tmp).overflowMode = (TextOverflowModes)0; ((Graphic)tmp).raycastTarget = false; } } public static Vector2 ScaledSize(float width, float height) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) return new Vector2(S(width), S(height)); } public static Vector2 ClampToScreen(Vector2 size, float maxWidthFraction = 0.92f, float maxHeightFraction = 0.9f) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) float num = (float)Screen.width * maxWidthFraction; float num2 = (float)Screen.height * maxHeightFraction; return new Vector2(Mathf.Clamp(size.x, S(WindowMinWidth), num), Mathf.Clamp(size.y, S(WindowMinHeight), num2)); } } public enum UIButtonStyle { Default, Primary, Danger, Active } public class UIButton { private Color _normal; private Color _hover; private Color _pressed; private bool _hovered; private bool _pressedDown; private UIButtonStyle _style; public GameObject GameObject { get; } public RectTransform Rect { get; } public Button Button { get; } public Image Background { get; } public TextMeshProUGUI Label { get; } public UIButtonStyle Style => _style; private UIButton(GameObject go, RectTransform rt, Button btn, Image bg, TextMeshProUGUI label) { GameObject = go; Rect = rt; Button = btn; Background = bg; Label = label; } public static UIButton Create(Transform parent, string text, Action onClick = null, UIButtonStyle style = UIButtonStyle.Default, string name = null, float? preferredHeight = null) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown GetStyleColors(style, out var normal, out var hover, out var pressed); Image val = UIFactory.CreateImage(name ?? ("Button_" + text), parent, normal); UIFactory.ApplyWhiteSprite(val); RectTransform rectTransform = ((Graphic)val).rectTransform; float value = preferredHeight ?? UITheme.ScaledButtonHeight; GameObject gameObject = ((Component)val).gameObject; float? preferredHeight2 = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight2, minHeight); Button val2 = ((Component)val).gameObject.AddComponent<Button>(); ((Selectable)val2).targetGraphic = (Graphic)(object)val; ColorBlock colors = ((Selectable)val2).colors; ((ColorBlock)(ref colors)).normalColor = Color.white; ((ColorBlock)(ref colors)).highlightedColor = Color.white; ((ColorBlock)(ref colors)).pressedColor = Color.white; ((ColorBlock)(ref colors)).selectedColor = Color.white; ((ColorBlock)(ref colors)).disabledColor = new Color(1f, 1f, 1f, 0.4f); ((ColorBlock)(ref colors)).fadeDuration = 0f; ((Selectable)val2).colors = colors; ((Selectable)val2).transition = (Transition)1; TextMeshProUGUI val3 = UIFactory.CreateTmp("Label", (Transform)(object)rectTransform, text, UITheme.ScaledFontBody, UIColors.TextPrimary, (TextAlignmentOptions)514); UIHelpers.SetFillParent(((TMP_Text)val3).rectTransform, UITheme.S(4f)); ((Graphic)val3).raycastTarget = false; UIButton result = new UIButton(((Component)val).gameObject, rectTransform, val2, val, val3) { _normal = normal, _hover = hover, _pressed = pressed, _style = style }; EventTrigger trigger = ((Component)val).gameObject.AddComponent<EventTrigger>(); AddTrigger(trigger, (EventTriggerType)0, delegate { result._hovered = true; result.ApplyVisualState(); }); AddTrigger(trigger, (EventTriggerType)1, delegate { result._hovered = false; result._pressedDown = false; result.ApplyVisualState(); }); AddTrigger(trigger, (EventTriggerType)2, delegate { result._pressedDown = true; result.ApplyVisualState(); }); AddTrigger(trigger, (EventTriggerType)3, delegate { result._pressedDown = false; result.ApplyVisualState(); }); if (onClick != null) { ((UnityEvent)val2.onClick).AddListener(new UnityAction(onClick.Invoke)); } return result; } public UIButton OnClick(Action action) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown if (action != null) { ((UnityEvent)Button.onClick).AddListener(new UnityAction(action.Invoke)); } return this; } public UIButton SetText(string text) { if ((Object)(object)Label != (Object)null) { ((TMP_Text)Label).text = text ?? string.Empty; } return this; } public UIButton SetInteractable(bool interactable) { if (((Selectable)Button).interactable == interactable) { return this; } ((Selectable)Button).interactable = interactable; if (!interactable) { _hovered = false; _pressedDown = false; } ApplyVisualState(); return this; } public UIButton SetStyle(UIButtonStyle style) { if (_style == style) { return this; } _style = style; GetStyleColors(style, out _normal, out _hover, out _pressed); ApplyVisualState(); return this; } public UIButton SetWidth(float width) { UIHelpers.EnsureLayoutElement(GameObject, width); return this; } public void SetActive(bool active) { GameObject.SetActive(active); } public void ApplyVisualState() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Background == (Object)null) && !((Object)(object)Button == (Object)null)) { if (!((Selectable)Button).interactable) { ((Graphic)Background).color = UIColors.WithAlpha(_normal, 0.45f); } else if (_pressedDown) { ((Graphic)Background).color = _pressed; } else if (_hovered) { ((Graphic)Background).color = _hover; } else { ((Graphic)Background).color = _normal; } } } private static void GetStyleColors(UIButtonStyle style, out Color normal, out Color hover, out Color pressed) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) switch (style) { case UIButtonStyle.Primary: normal = UIColors.ButtonPrimary; hover = UIColors.ButtonPrimaryHover; pressed = UIColors.ButtonPrimaryPressed; break; case UIButtonStyle.Danger: normal = UIColors.ButtonDanger; hover = UIColors.ButtonDangerHover; pressed = UIColors.ButtonDangerPressed; break; case UIButtonStyle.Active: normal = UIColors.ButtonActive; hover = UIColors.ButtonActiveHover; pressed = UIColors.ButtonActivePressed; break; default: normal = UIColors.ButtonNormal; hover = UIColors.ButtonHover; pressed = UIColors.ButtonPressed; break; } } private static void AddTrigger(EventTrigger trigger, EventTriggerType type, UnityAction<BaseEventData> cb) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown Entry val = new Entry { eventID = type }; ((UnityEvent<BaseEventData>)(object)val.callback).AddListener(cb); trigger.triggers.Add(val); } } public class UIDragList { private class Row { public GameObject Go; public RectTransform Rt; public UIText Label; public int Index; } private readonly List<Row> _rows = new List<Row>(); private Action<int, int> _onReordered; private int _dragIndex = -1; private float _rowHeight; public GameObject GameObject { get; } public RectTransform Rect { get; } public RectTransform Content { get; } private UIDragList(GameObject go, RectTransform rt, RectTransform content) { GameObject = go; Rect = rt; Content = content; _rowHeight = UITheme.S(28f); } public static UIDragList Create(Transform parent, string name = "DragList") { UIScrollView uIScrollView = UIScrollView.Create(parent, name); return new UIDragList(uIScrollView.GameObject, uIScrollView.Rect, uIScrollView.Content); } public UIDragList FillParent(float padding = 0f) { UIHelpers.SetFillParent(Rect, padding); return this; } public UIDragList OnReordered(Action<int, int> action) { _onReordered = action; return this; } public void SetItems(IList<string> labels) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) UIHelpers.DestroyChildren((Transform)(object)Content); _rows.Clear(); _dragIndex = -1; if (labels == null) { return; } for (int i = 0; i < labels.Count; i++) { GameObject gameObject = ((Component)UIFactory.CreateImage($"Row_{i}", (Transform)(object)Content, UIColors.EntryBg)).gameObject; UIFactory.ApplyWhiteSprite(gameObject.GetComponent<Image>()); float? preferredHeight = _rowHeight; float? minHeight = _rowHeight; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); UIText uIText = UIText.Create(gameObject.transform, "Label", $"{i + 1}. {labels[i]}", UITheme.ScaledFontBody, UIColors.TextPrimary, (TextAlignmentOptions)513); UIHelpers.SetFillParent(uIText.Rect, UITheme.S(8f)); ((Graphic)uIText.Tmp).raycastTarget = false; Row row = new Row { Go = gameObject, Rt = gameObject.GetComponent<RectTransform>(), Label = uIText, Index = i }; _rows.Add(row); EventTrigger trigger = gameObject.AddComponent<EventTrigger>(); Add(trigger, (EventTriggerType)13, delegate { BeginDrag(row); }); Add(trigger, (EventTriggerType)5, delegate(BaseEventData data) { OnDrag((PointerEventData)(object)((data is PointerEventData) ? data : null)); }); Add(trigger, (EventTriggerType)14, delegate { EndDrag(); }); } } public void SetLabels(IList<string> labels) { if (labels == null || labels.Count != _rows.Count) { SetItems(labels); return; } for (int i = 0; i < _rows.Count; i++) { _rows[i].Label.Text = $"{i + 1}. {labels[i]}"; } } private void BeginDrag(Row row) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) _dragIndex = _rows.IndexOf(row); if (_dragIndex >= 0 && _dragIndex < _rows.Count) { ((Graphic)_rows[_dragIndex].Go.GetComponent<Image>()).color = UIColors.ButtonHover; } } private void OnDrag(PointerEventData data) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); if (_dragIndex >= 0 && data != null && !((Object)(object)Content == (Object)null) && RectTransformUtility.ScreenPointToLocalPointInRectangle(Content, data.position, data.pressEventCamera, ref val)) { int num = Mathf.Clamp(Mathf.FloorToInt((0f - val.y) / _rowHeight), 0, _rows.Count - 1); if (num != _dragIndex) { _rows[_dragIndex].Go.transform.SetSiblingIndex(num); Row item = _rows[_dragIndex]; _rows.RemoveAt(_dragIndex); _rows.Insert(num, item); int dragIndex = _dragIndex; _dragIndex = num; Renumber(); _onReordered?.Invoke(dragIndex, num); } } } private void EndDrag() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) if (_dragIndex >= 0 && _dragIndex < _rows.Count) { ((Graphic)_rows[_dragIndex].Go.GetComponent<Image>()).color = UIColors.EntryBg; } _dragIndex = -1; } private void Renumber() { for (int i = 0; i < _rows.Count; i++) { _rows[i].Index = i; string text = _rows[i].Label.Text; int num = text.IndexOf('.'); string arg = ((num >= 0 && num + 1 < text.Length) ? text.Substring(num + 1).TrimStart(Array.Empty<char>()) : text); _rows[i].Label.Text = $"{i + 1}. {arg}"; } } private static void Add(EventTrigger trigger, EventTriggerType type, UnityAction<BaseEventData> cb) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown Entry val = new Entry { eventID = type }; ((UnityEvent<BaseEventData>)(object)val.callback).AddListener(cb); trigger.triggers.Add(val); } } public class UIDropdown { private readonly List<string> _options = new List<string>(); private readonly GameObject _listRoot; private readonly RectTransform _listContent; private Action<int, string> _onChanged; private bool _open; public GameObject GameObject { get; } public RectTransform Rect { get; } public TextMeshProUGUI Label { get; } public int SelectedIndex { get; private set; } public string SelectedValue { get { if (SelectedIndex < 0 || SelectedIndex >= _options.Count) { return null; } return _options[SelectedIndex]; } } private UIDropdown(GameObject go, RectTransform rt, TextMeshProUGUI label, GameObject listRoot, RectTransform listContent) { GameObject = go; Rect = rt; Label = label; _listRoot = listRoot; _listContent = listContent; } public static UIDropdown Create(Transform parent, IList<string> options, int initialIndex = 0, Action<int, string> onChanged = null, string name = "Dropdown") { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Expected O, but got Unknown float scaledButtonHeight = UITheme.ScaledButtonHeight; RectTransform val = UIFactory.CreateRect(name, parent); GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = scaledButtonHeight; float? minHeight = scaledButtonHeight; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); Image val2 = UIFactory.CreateImage("Main", (Transform)(object)val, UIColors.ButtonNormal); UIFactory.ApplyWhiteSprite(val2); UIHelpers.SetFillParent(((Graphic)val2).rectTransform); TextMeshProUGUI val3 = UIFactory.CreateTmp("Label", (Transform)(object)((Graphic)val2).rectTransform, "", UITheme.ScaledFontBody, UIColors.TextPrimary, (TextAlignmentOptions)514); UIHelpers.SetFillParent(((TMP_Text)val3).rectTransform, UITheme.S(6f)); Image val4 = UIFactory.CreateImage("List", (Transform)(object)val, UIColors.Surface); UIFactory.ApplyWhiteSprite(val4); RectTransform rectTransform = ((Graphic)val4).rectTransform; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 0f); rectTransform.pivot = new Vector2(0.5f, 1f); rectTransform.anchoredPosition = new Vector2(0f, -2f); UIFactory.AddVerticalLayout(((Component)val4).gameObject, UITheme.S(2f), UITheme.ScaledPadding(4, 4, 4, 4), (TextAnchor)0); UIDropdown dropdown = new UIDropdown(((Component)val).gameObject, val, val3, ((Component)val4).gameObject, rectTransform) { _onChanged = onChanged }; if (options != null) { for (int i = 0; i < options.Count; i++) { dropdown._options.Add(options[i]); } } dropdown.RebuildOptions(); dropdown.Select(Mathf.Clamp(initialIndex, 0, Math.Max(0, dropdown._options.Count - 1)), notify: false); ((Component)val4).gameObject.SetActive(false); Button obj = ((Component)val2).gameObject.AddComponent<Button>(); ((Selectable)obj).targetGraphic = (Graphic)(object)val2; ((UnityEvent)obj.onClick).AddListener((UnityAction)delegate { dropdown.ToggleList(); }); return dropdown; } public void SetOptions(IList<string> options, int selectIndex = 0) { _options.Clear(); if (options != null) { for (int i = 0; i < options.Count; i++) { _options.Add(options[i]); } } RebuildOptions(); Select(Mathf.Clamp(selectIndex, 0, Math.Max(0, _options.Count - 1)), notify: false); } public void Select(int index, bool notify = true) { if (_options.Count == 0) { SelectedIndex = -1; ((TMP_Text)Label).text = string.Empty; return; } SelectedIndex = Mathf.Clamp(index, 0, _options.Count - 1); ((TMP_Text)Label).text = _options[SelectedIndex]; CloseList(); if (notify) { _onChanged?.Invoke(SelectedIndex, _options[SelectedIndex]); } } public UIDropdown OnChanged(Action<int, string> action) { _onChanged = action; return this; } public void ToggleList() { if (_open) { CloseList(); } else { OpenList(); } } public void OpenList() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) _open = true; _listRoot.SetActive(true); float num = UITheme.ScaledButtonHeight * 0.85f * (float)Mathf.Max(1, _options.Count) + UITheme.S(8f); _listContent.sizeDelta = new Vector2(0f, num); } public void CloseList() { _open = false; _listRoot.SetActive(false); } private void RebuildOptions() { UIHelpers.DestroyChildren((Transform)(object)_listContent); float value = UITheme.ScaledButtonHeight * 0.85f; for (int i = 0; i < _options.Count; i++) { int index = i; string text = _options[i]; UIButton.Create((Transform)(object)_listContent, text, delegate { Select(index); }, UIButtonStyle.Default, null, value); } } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIInputField { public GameObject GameObject { get; } public RectTransform Rect { get; } public TMP_InputField Input { get; } public TextMeshProUGUI TextComponent { get; } public TextMeshProUGUI Placeholder { get; } public string Text { get { return Input.text; } set { Input.text = value ?? string.Empty; } } private UIInputField(GameObject go, RectTransform rt, TMP_InputField input, TextMeshProUGUI text, TextMeshProUGUI placeholder) { GameObject = go; Rect = rt; Input = input; TextComponent = text; Placeholder = placeholder; } public static UIInputField Create(Transform parent, string initial = "", string placeholder = "", Action<string> onChanged = null, string name = "InputField") { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) float scaledInputHeight = UITheme.ScaledInputHeight; Image val = UIFactory.CreateImage(name, parent, UIColors.InputBg); UIFactory.ApplyWhiteSprite(val); GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = scaledInputHeight; float? minHeight = scaledInputHeight; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); RectTransform val2 = UIFactory.CreateRect("TextArea", (Transform)(object)((Graphic)val).rectTransform); UIHelpers.SetFillParent(val2, UITheme.S(8f)); ((Component)val2).gameObject.AddComponent<RectMask2D>(); TextMeshProUGUI val3 = UIFactory.CreateTmp("Placeholder", (Transform)(object)val2, placeholder, UITheme.ScaledFontBody, UIColors.TextMuted, (TextAlignmentOptions)513); UIHelpers.SetFillParent(((TMP_Text)val3).rectTransform); ((TMP_Text)val3).fontStyle = (FontStyles)2; TextMeshProUGUI val4 = UIFactory.CreateTmp("Text", (Transform)(object)val2, initial, UITheme.ScaledFontBody, UIColors.InputText, (TextAlignmentOptions)513); UIHelpers.SetFillParent(((TMP_Text)val4).rectTransform); ((Graphic)val4).raycastTarget = true; TMP_InputField val5 = ((Component)val).gameObject.AddComponent<TMP_InputField>(); val5.textViewport = val2; val5.textComponent = (TMP_Text)(object)val4; val5.placeholder = (Graphic)(object)val3; val5.fontAsset = UITheme.Font; val5.pointSize = UITheme.ScaledFontBody; val5.text = initial ?? string.Empty; val5.caretColor = UIColors.Sky; val5.selectionColor = UIColors.WithAlpha(UIColors.Electric, 0.35f); ((Selectable)val5).targetGraphic = (Graphic)(object)val; if (onChanged != null) { ((UnityEvent<string>)(object)val5.onValueChanged).AddListener((UnityAction<string>)onChanged.Invoke); } return new UIInputField(((Component)val).gameObject, ((Graphic)val).rectTransform, val5, val4, val3); } public UIInputField OnChanged(Action<string> action) { if (action != null) { ((UnityEvent<string>)(object)Input.onValueChanged).AddListener((UnityAction<string>)action.Invoke); } return this; } public UIInputField OnEndEdit(Action<string> action) { if (action != null) { ((UnityEvent<string>)(object)Input.onEndEdit).AddListener((UnityAction<string>)action.Invoke); } return this; } public UIInputField SetInteractable(bool interactable) { ((Selectable)Input).interactable = interactable; return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIPanel { public GameObject GameObject { get; } public RectTransform Rect { get; } public Image Background { get; } public Image Border { get; private set; } public Transform Content { get { if (!((Object)(object)Background != (Object)null)) { return GameObject.transform; } return ((Component)Background).transform; } } private UIPanel(GameObject go, RectTransform rt, Image bg) { GameObject = go; Rect = rt; Background = bg; } public static UIPanel Create(Transform parent, string name = "Panel", Color? background = null, bool withBorder = true) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (withBorder) { Image val = UIFactory.CreateImage(name, parent, UIColors.Border); UIFactory.ApplyWhiteSprite(val); RectTransform rectTransform = ((Graphic)val).rectTransform; float padding = UITheme.S(UITheme.BorderWidth); Image val2 = UIFactory.CreateImage("Background", (Transform)(object)rectTransform, (Color)(((??)background) ?? UIColors.PanelBg)); UIFactory.ApplyWhiteSprite(val2); UIHelpers.SetFillParent(((Graphic)val2).rectTransform, padding); return new UIPanel(((Component)val).gameObject, rectTransform, val2) { Border = val }; } Image val3 = UIFactory.CreateImage(name, parent, (Color)(((??)background) ?? UIColors.PanelBg)); UIFactory.ApplyWhiteSprite(val3); return new UIPanel(((Component)val3).gameObject, ((Graphic)val3).rectTransform, val3); } public UIPanel SetSize(Vector2 size) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) Rect.sizeDelta = size; return this; } public UIPanel SetSize(float width, float height) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) return SetSize(new Vector2(width, height)); } public UIPanel SetAnchor(Vector2 min, Vector2 max, Vector2? pivot = null) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) UIHelpers.SetAnchor(Rect, min, max, pivot); return this; } public UIPanel SetPointAnchor(float x, float y, Vector2? pivot = null) { UIHelpers.SetPointAnchor(Rect, x, y, pivot); return this; } public UIPanel FillParent(float padding = 0f) { UIHelpers.SetFillParent(Rect, padding); return this; } public UIPanel WithVerticalLayout(float spacing = -1f, RectOffset padding = null) { UIFactory.AddVerticalLayout(((Object)(object)Background != (Object)null) ? ((Component)Background).gameObject : GameObject, spacing, padding, (TextAnchor)0); return this; } public UIPanel WithHorizontalLayout(float spacing = -1f, RectOffset padding = null) { UIFactory.AddHorizontalLayout(((Object)(object)Background != (Object)null) ? ((Component)Background).gameObject : GameObject, spacing, padding, (TextAnchor)3); return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIProgressBar { private float _value; private float _min; private float _max; public GameObject GameObject { get; } public RectTransform Rect { get; } public Image Track { get; } public Image Fill { get; } public TextMeshProUGUI Label { get; } public float Value { get { return _value; } set { SetValue(value); } } public float Normalized { get { float num = _max - _min; if (!(num > 0.0001f)) { return 0f; } return Mathf.Clamp01((_value - _min) / num); } } private UIProgressBar(GameObject go, RectTransform rt, Image track, Image fill, TextMeshProUGUI label, float min, float max, float initial) { GameObject = go; Rect = rt; Track = track; Fill = fill; Label = label; _min = min; _max = max; SetValue(initial); } public static UIProgressBar Create(Transform parent, string label = null, float min = 0f, float max = 1f, float initial = 0f, Color? fillColor = null, string name = "ProgressBar") { //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) float num = UITheme.S(UITheme.ProgressHeight); float value = (string.IsNullOrEmpty(label) ? (num + UITheme.S(4f)) : (num + UITheme.S(22f))); RectTransform val = UIFactory.CreateRect(name, parent); GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); UIFactory.AddVerticalLayout(((Component)val).gameObject, UITheme.S(2f), UITheme.ScaledPadding(2, 2, 2, 2), (TextAnchor)0); TextMeshProUGUI val2 = null; if (!string.IsNullOrEmpty(label)) { val2 = UIFactory.CreateTmp("Label", (Transform)(object)val, label, UITheme.ScaledFontSmall, UIColors.TextSecondary, (TextAlignmentOptions)513); GameObject gameObject2 = ((Component)val2).gameObject; minHeight = UITheme.S(16f); UIHelpers.EnsureLayoutElement(gameObject2, null, minHeight); } Image val3 = UIFactory.CreateImage("Track", (Transform)(object)val, UIColors.ProgressTrack, raycast: false); UIFactory.ApplyWhiteSprite(val3); GameObject gameObject3 = ((Component)val3).gameObject; minHeight = num; preferredHeight = num; UIHelpers.EnsureLayoutElement(gameObject3, null, minHeight, preferredHeight); Image val4 = UIFactory.CreateImage("Fill", (Transform)(object)((Graphic)val3).rectTransform, (Color)(((??)fillColor) ?? UIColors.ProgressFill), raycast: false); UIFactory.ApplyWhiteSprite(val4); RectTransform rectTransform = ((Graphic)val4).rectTransform; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(0f, 1f); rectTransform.pivot = new Vector2(0f, 0.5f); rectTransform.offsetMin = Vector2.zero; rectTransform.offsetMax = Vector2.zero; return new UIProgressBar(((Component)val).gameObject, val, val3, val4, val2, min, max, initial); } public UIProgressBar SetValue(float value) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) _value = Mathf.Clamp(value, _min, _max); float normalized = Normalized; RectTransform rectTransform = ((Graphic)Fill).rectTransform; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(normalized, 1f); rectTransform.offsetMin = Vector2.zero; rectTransform.offsetMax = Vector2.zero; return this; } public UIProgressBar SetRange(float min, float max) { _min = min; _max = max; return SetValue(_value); } public UIProgressBar SetFillColor(Color color) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ((Graphic)Fill).color = color; return this; } public UIProgressBar SetLabel(string text) { if ((Object)(object)Label != (Object)null) { ((TMP_Text)Label).text = text ?? string.Empty; } return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIScrollView { public GameObject GameObject { get; } public RectTransform Rect { get; } public ScrollRect ScrollRect { get; } public RectTransform Viewport { get; } public RectTransform Content { get; } private UIScrollView(GameObject go, RectTransform rt, ScrollRect sr, RectTransform viewport, RectTransform content) { GameObject = go; Rect = rt; ScrollRect = sr; Viewport = viewport; Content = content; } public static UIScrollView Create(Transform parent, string name = "ScrollView", bool vertical = true, bool horizontal = false) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) Image obj = UIFactory.CreateImage(name, parent, UIColors.ScrollBg); UIFactory.ApplyWhiteSprite(obj); RectTransform rectTransform = ((Graphic)obj).rectTransform; Image obj2 = UIFactory.CreateImage("Viewport", (Transform)(object)rectTransform, UIColors.WithAlpha(UIColors.ScrollBg, 0.01f)); UIFactory.ApplyWhiteSprite(obj2); RectTransform rectTransform2 = ((Graphic)obj2).rectTransform; UIHelpers.SetFillParent(rectTransform2, UITheme.S(2f)); ((Component)obj2).gameObject.AddComponent<Mask>().showMaskGraphic = false; RectTransform val = UIFactory.CreateRect("Content", (Transform)(object)rectTransform2); val.anchorMin = new Vector2(0f, 1f); val.anchorMax = new Vector2(1f, 1f); val.pivot = new Vector2(0.5f, 1f); val.anchoredPosition = Vector2.zero; val.sizeDelta = new Vector2(0f, 0f); UIFactory.AddVerticalLayout(((Component)val).gameObject, UITheme.S(UITheme.SpacingNormal), UITheme.ScaledPadding(12, 12, 10, 14), (TextAnchor)0); UIFactory.AddContentSizeFitter(((Component)val).gameObject, (FitMode)0, (FitMode)2); ScrollRect val2 = ((Component)obj).gameObject.AddComponent<ScrollRect>(); val2.viewport = rectTransform2; val2.content = val; val2.horizontal = horizontal; val2.vertical = vertical; val2.movementType = (MovementType)2; val2.scrollSensitivity = 30f; val2.inertia = true; val2.decelerationRate = 0.15f; return new UIScrollView(((Component)obj).gameObject, rectTransform, val2, rectTransform2, val); } public UIScrollView FillParent(float padding = 0f) { UIHelpers.SetFillParent(Rect, padding); return this; } public void ClearContent() { UIHelpers.DestroyChildren((Transform)(object)Content); } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UISeparator { public GameObject GameObject { get; } public RectTransform Rect { get; } public Image Image { get; } private UISeparator(GameObject go, RectTransform rt, Image img) { GameObject = go; Rect = rt; Image = img; } public static UISeparator Create(Transform parent, string name = "Separator", bool horizontal = true) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) Image val = UIFactory.CreateImage(name, parent, UIColors.Separator, raycast: false); UIFactory.ApplyWhiteSprite(val); float value = UITheme.S(UITheme.SeparatorHeight); if (horizontal) { GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); } else { GameObject gameObject2 = ((Component)val).gameObject; float? preferredWidth = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject2, preferredWidth, null, minHeight); } return new UISeparator(((Component)val).gameObject, ((Graphic)val).rectTransform, val); } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UISlider { public GameObject GameObject { get; } public RectTransform Rect { get; } public Slider Slider { get; } public TextMeshProUGUI Label { get; } public TextMeshProUGUI ValueLabel { get; } public float Value { get { return Slider.value; } set { Slider.value = value; } } private UISlider(GameObject go, RectTransform rt, Slider slider, TextMeshProUGUI label, TextMeshProUGUI valueLabel) { GameObject = go; Rect = rt; Slider = slider; Label = label; ValueLabel = valueLabel; } public static UISlider Create(Transform parent, string label = null, float min = 0f, float max = 1f, float initial = 0.5f, Action<float> onChanged = null, string name = "Slider", bool wholeNumbers = false, string valueFormat = "F2") { //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_03a9: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) float value = UITheme.S(UITheme.SliderHeight + 16f); RectTransform val = UIFactory.CreateRect(name, parent); GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); UIFactory.AddVerticalLayout(((Component)val).gameObject, UITheme.S(2f), UITheme.ScaledPadding(4, 4, 2, 2), (TextAnchor)0); TextMeshProUGUI val2 = null; TextMeshProUGUI valueTmp = null; if (!string.IsNullOrEmpty(label)) { RectTransform val3 = UIFactory.CreateRect("Header", (Transform)(object)val); GameObject gameObject2 = ((Component)val3).gameObject; minHeight = UITheme.S(18f); UIHelpers.EnsureLayoutElement(gameObject2, null, minHeight); UIFactory.AddHorizontalLayout(((Component)val3).gameObject, 4f, new RectOffset(0, 0, 0, 0), (TextAnchor)3, controlChildWidth: false); val2 = UIFactory.CreateTmp("Label", (Transform)(object)val3, label, UITheme.ScaledFontSmall, UIColors.TextSecondary, (TextAlignmentOptions)513); GameObject gameObject3 = ((Component)val2).gameObject; minHeight = UITheme.S(18f); UIHelpers.EnsureLayoutElement(gameObject3, null, minHeight); ((Component)val2).gameObject.GetComponent<LayoutElement>().flexibleWidth = 1f; valueTmp = UIFactory.CreateTmp("Value", (Transform)(object)val3, initial.ToString(valueFormat), UITheme.ScaledFontSmall, UIColors.Sky, (TextAlignmentOptions)516); UIHelpers.EnsureLayoutElement(((Component)valueTmp).gameObject, UITheme.S(60f), UITheme.S(18f)); } RectTransform val4 = UIFactory.CreateRect("SliderRoot", (Transform)(object)val); float value2 = UITheme.S(UITheme.SliderHeight); GameObject gameObject4 = ((Component)val4).gameObject; minHeight = value2; preferredHeight = value2; UIHelpers.EnsureLayoutElement(gameObject4, null, minHeight, preferredHeight); Image val5 = UIFactory.CreateImage("Track", (Transform)(object)val4, UIColors.SliderTrack); UIFactory.ApplyWhiteSprite(val5); UIHelpers.SetFillParent(((Graphic)val5).rectTransform); RectTransform val6 = UIFactory.CreateRect("Fill Area", (Transform)(object)((Graphic)val5).rectTransform); UIHelpers.SetFillParent(val6); Image val7 = UIFactory.CreateImage("Fill", (Transform)(object)val6, UIColors.SliderFill, raycast: false); UIFactory.ApplyWhiteSprite(val7); UIHelpers.SetFillParent(((Graphic)val7).rectTransform); RectTransform val8 = UIFactory.CreateRect("Handle Slide Area", (Transform)(object)((Graphic)val5).rectTransform); UIHelpers.SetFillParent(val8); float num = UITheme.S(16f); Image val9 = UIFactory.CreateImage("Handle", (Transform)(object)val8, UIColors.SliderHandle); UIFactory.ApplyWhiteSprite(val9); ((Graphic)val9).rectTransform.sizeDelta = new Vector2(num, num); Slider val10 = ((Component)val4).gameObject.AddComponent<Slider>(); val10.fillRect = ((Graphic)val7).rectTransform; val10.handleRect = ((Graphic)val9).rectTransform; ((Selectable)val10).targetGraphic = (Graphic)(object)val9; val10.direction = (Direction)0; val10.minValue = min; val10.maxValue = max; val10.wholeNumbers = wholeNumbers; val10.value = initial; ((Graphic)val7).rectTransform.anchorMin = new Vector2(0f, 0f); ((Graphic)val7).rectTransform.anchorMax = new Vector2(0f, 1f); ((Graphic)val7).rectTransform.pivot = new Vector2(0f, 0.5f); ((Graphic)val7).rectTransform.offsetMin = Vector2.zero; ((Graphic)val7).rectTransform.offsetMax = Vector2.zero; ((Graphic)val9).rectTransform.anchorMin = new Vector2(0f, 0.5f); ((Graphic)val9).rectTransform.anchorMax = new Vector2(0f, 0.5f); ((Graphic)val9).rectTransform.pivot = new Vector2(0.5f, 0.5f); ((UnityEvent<float>)(object)val10.onValueChanged).AddListener((UnityAction<float>)delegate(float v) { if ((Object)(object)valueTmp != (Object)null) { ((TMP_Text)valueTmp).text = v.ToString(valueFormat); } onChanged?.Invoke(v); }); return new UISlider(((Component)val).gameObject, val, val10, val2, valueTmp); } public UISlider OnChanged(Action<float> action) { if (action != null) { ((UnityEvent<float>)(object)Slider.onValueChanged).AddListener((UnityAction<float>)action.Invoke); } return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UITabs { private class TabEntry { public string Title; public UIButton Button; public GameObject Page; } private readonly List<TabEntry> _tabs = new List<TabEntry>(); private Action<int> _onTabChanged; public GameObject GameObject { get; } public RectTransform Rect { get; } public RectTransform TabBar { get; } public RectTransform PageHost { get; } public int ActiveIndex { get; private set; } = -1; private UITabs(GameObject go, RectTransform rt, RectTransform tabBar, RectTransform pageHost) { GameObject = go; Rect = rt; TabBar = tabBar; PageHost = pageHost; } public static UITabs Create(Transform parent, string name = "Tabs") { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) RectTransform val = UIFactory.CreateRect(name, parent); UIHelpers.SetFillParent(val); UIFactory.AddVerticalLayout(((Component)val).gameObject, UITheme.S(UITheme.SpacingTight), new RectOffset(0, 0, 0, 0), (TextAnchor)0); float value = UITheme.S(UITheme.TabHeight); RectTransform val2 = UIFactory.CreateRect("TabBar", (Transform)(object)val); GameObject gameObject = ((Component)val2).gameObject; float? preferredHeight = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); UIFactory.ApplyWhiteSprite(UIHelpers.EnsureImage(((Component)val2).gameObject, UIColors.WithAlpha(UIColors.TitleBar, 0.6f), raycast: false)); UIFactory.AddHorizontalLayout(((Component)val2).gameObject, UITheme.S(4f), UITheme.ScaledPadding(6, 6, 4, 0), (TextAnchor)3, controlChildWidth: false); RectTransform val3 = UIFactory.CreateRect("Pages", (Transform)(object)val); LayoutElement obj = UIHelpers.EnsureLayoutElement(((Component)val3).gameObject); obj.flexibleHeight = 1f; obj.minHeight = UITheme.S(100f); UIHelpers.EnsureImage(((Component)val3).gameObject, UIColors.WithAlpha(UIColors.PanelBg, 0.5f), raycast: false); return new UITabs(((Component)val).gameObject, val, val2, val3); } public Transform AddTab(string title, bool select = false) { float value = UITheme.S(UITheme.TabHeight) - UITheme.S(4f); int index = _tabs.Count; RectTransform val = UIFactory.CreateRect("Page_" + title, (Transform)(object)PageHost); UIHelpers.SetFillParent(val); ((Component)val).gameObject.SetActive(false); UIButton uIButton = UIButton.Create((Transform)(object)TabBar, title, delegate { Select(index); }, UIButtonStyle.Default, null, value); uIButton.SetWidth(UITheme.S(100f)); _tabs.Add(new TabEntry { Title = title, Button = uIButton, Page = ((Component)val).gameObject }); if (select || ActiveIndex < 0) { Select(index, notify: false); } return (Transform)(object)val; } public void Select(int index, bool notify = true) { if (index >= 0 && index < _tabs.Count) { ActiveIndex = index; for (int i = 0; i < _tabs.Count; i++) { bool flag = i == index; _tabs[i].Page.SetActive(flag); _tabs[i].Button.SetStyle(flag ? UIButtonStyle.Active : UIButtonStyle.Default); } if (notify) { _onTabChanged?.Invoke(index); } } } public UITabs OnTabChanged(Action<int> action) { _onTabChanged = action; return this; } public GameObject GetPage(int index) { if (index < 0 || index >= _tabs.Count) { return null; } return _tabs[index].Page; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIText { public GameObject GameObject { get; } public RectTransform Rect { get; } public TextMeshProUGUI Tmp { get; } public string Text { get { return ((TMP_Text)Tmp).text; } set { ((TMP_Text)Tmp).text = value ?? string.Empty; } } public Color Color { get { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return ((Graphic)Tmp).color; } set { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ((Graphic)Tmp).color = value; } } public float FontSize { get { return ((TMP_Text)Tmp).fontSize; } set { ((TMP_Text)Tmp).fontSize = value; } } private UIText(GameObject go, RectTransform rt, TextMeshProUGUI tmp) { GameObject = go; Rect = rt; Tmp = tmp; } public static UIText Create(Transform parent, string name = "Text", string text = "", float fontSize = -1f, Color? color = null, TextAlignmentOptions alignment = (TextAlignmentOptions)513, bool wrap = false) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) TextMeshProUGUI val = UIFactory.CreateTmp(name, parent, text, fontSize, color, alignment, wrap); return new UIText(((Component)val).gameObject, ((TMP_Text)val).rectTransform, val); } public UIText SetText(string text) { Text = text; return this; } public UIText SetRich(string label, string value, Color valueColor, string unit = null) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) Text = RichText.Labeled(label, value, valueColor, unit); return this; } public UIText SetRich(string label, float value, Color valueColor, string unit = null, string format = "F1") { //IL_0003: Unknown result type (might be due to invalid IL or missing references) Text = RichText.Labeled(label, value, valueColor, unit, format); return this; } public UIText SetRich(string label, int value, Color valueColor, string unit = null) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) Text = RichText.Labeled(label, value, valueColor, unit); return this; } public UIText SetRichWithRate(string label, float value, float rate, Color color, string format = "F0", string rateFormat = "F1") { //IL_0004: Unknown result type (might be due to invalid IL or missing references) Text = RichText.LabeledWithRate(label, value, rate, color, format, rateFormat); return this; } public UIText FillParent(float padding = 0f) { UIHelpers.SetFillParent(Rect, padding); return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIToggle { public GameObject GameObject { get; } public RectTransform Rect { get; } public Toggle Toggle { get; } public TextMeshProUGUI Label { get; } public Image Box { get; } public Image Checkmark { get; } public bool IsOn { get { return Toggle.isOn; } set { Toggle.isOn = value; } } private UIToggle(GameObject go, RectTransform rt, Toggle toggle, TextMeshProUGUI label, Image box, Image check) { GameObject = go; Rect = rt; Toggle = toggle; Label = label; Box = box; Checkmark = check; } public static UIToggle Create(Transform parent, string label, bool initial = false, Action<bool> onChanged = null, string name = null) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) float value = UITheme.S(UITheme.ButtonHeight); float num = UITheme.S(UITheme.ToggleSize); RectTransform val = UIFactory.CreateRect(name ?? ("Toggle_" + label), parent); GameObject gameObject = ((Component)val).gameObject; float? preferredHeight = value; float? minHeight = value; UIHelpers.EnsureLayoutElement(gameObject, null, preferredHeight, minHeight); UIFactory.AddHorizontalLayout(((Component)val).gameObject, UITheme.S(UITheme.SpacingNormal), UITheme.ScaledPadding(4, 8, 2, 2), (TextAnchor)3, controlChildWidth: false); Image boxImg = UIFactory.CreateImage("Box", (Transform)(object)val, UIColors.ToggleOff); UIFactory.ApplyWhiteSprite(boxImg); RectTransform rectTransform = ((Graphic)boxImg).rectTransform; rectTransform.sizeDelta = new Vector2(num, num); UIHelpers.EnsureLayoutElement(((Component)boxImg).gameObject, num, num); Image val2 = UIFactory.CreateImage("Check", (Transform)(object)rectTransform, UIColors.Checkmark, raycast: false); UIFactory.ApplyWhiteSprite(val2); UIHelpers.SetFillParent(((Graphic)val2).rectTransform, num * 0.22f); Toggle val3 = ((Component)val).gameObject.AddComponent<Toggle>(); ((Selectable)val3).targetGraphic = (Graphic)(object)boxImg; val3.graphic = (Graphic)(object)val2; val3.isOn = initial; TextMeshProUGUI val4 = UIFactory.CreateTmp("Label", (Transform)(object)val, label, UITheme.ScaledFontBody, UIColors.TextPrimary, (TextAlignmentOptions)513); ((Graphic)val4).raycastTarget = false; GameObject gameObject2 = ((Component)val4).gameObject; minHeight = value; UIHelpers.EnsureLayoutElement(gameObject2, null, minHeight); ((Component)val4).gameObject.GetComponent<LayoutElement>().flexibleWidth = 1f; ApplyVisual(initial); ((UnityEvent<bool>)(object)val3.onValueChanged).AddListener((UnityAction<bool>)delegate(bool v) { ApplyVisual(v); onChanged?.Invoke(v); }); return new UIToggle(((Component)val).gameObject, val, val3, val4, boxImg, val2); void ApplyVisual(bool on) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) ((Graphic)boxImg).color = (on ? UIColors.ToggleOn : UIColors.ToggleOff); } } public UIToggle OnChanged(Action<bool> action) { if (action != null) { ((UnityEvent<bool>)(object)Toggle.onValueChanged).AddListener((UnityAction<bool>)action.Invoke); } return this; } public void SetActive(bool active) { GameObject.SetActive(active); } } public class UIToolti