Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ShoulderPets v0.3.0
despr0grammer.ShoulderPets.dll
Decompiled 2 weeks 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.Reflection; using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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; } } } namespace despr0grammer.ShoulderPets { internal static class Hud { private static int _blockUntilFrame = -1; internal static bool Available { get; set; } internal static bool IsOpen { get; private set; } internal static HudWindow Window { get; set; } internal static bool Blocking { get { if (!IsOpen) { return Time.frameCount <= _blockUntilFrame; } return true; } } internal static void Open() { if (!Available || (Object)(object)Window == (Object)null || IsOpen) { return; } IsOpen = true; try { Window.OnOpened(); ((Behaviour)Window).enabled = true; } catch (Exception arg) { Plugin.Log.LogError((object)$"The HUD could not open: {arg}"); Close(); } } internal static void Close() { if (IsOpen) { IsOpen = false; _blockUntilFrame = Time.frameCount + 1; if ((Object)(object)Window != (Object)null) { ((Behaviour)Window).enabled = false; } Plugin.SaveConfig(); } } } [HarmonyPatch(typeof(TextInput), "IsVisible")] internal static class TextInputVisiblePatch { private static void Postfix(ref bool __result) { if (Hud.Blocking) { __result = true; } } } [HarmonyPatch(typeof(ZInput), "GetMouseScrollWheel")] internal static class ScrollWheelPatch { private static void Postfix(ref float __result) { if (Hud.Blocking) { __result = 0f; } } } internal static class HudStyle { internal static readonly Color Gold = new Color(1f, 0.72f, 0.36f, 1f); internal static readonly Color GoldBright = new Color(1f, 0.84f, 0.35f, 1f); internal static readonly Color Body = new Color(0.93f, 0.89f, 0.8f, 1f); internal static readonly Color Dim = new Color(0.72f, 0.64f, 0.52f, 1f); internal static readonly Color Orange = new Color(1f, 0.65f, 0.16f, 1f); internal static GUIStyle Label; internal static GUIStyle Notice; internal static GUIStyle Small; internal static GUIStyle Heading; internal static GUIStyle Title; internal static GUIStyle TitleFallback; internal static GUIStyle Center; internal static GUIStyle Wrap; internal static GUIStyle Plain; internal static GUIStyle PlainRight; internal static GUIStyle PlainSmall; internal static GUIStyle Button; internal static GUIStyle TabOn; internal static GUIStyle Slot; internal static GUIStyle SlotOn; internal static GUIStyle Field; internal static GUIStyle Row; internal static GUISkin Skin; private static Texture2D _wood; private static Texture2D _stud; private static Texture2D _lock; private static Font _body; private static Font _title; private static bool _ready; private static readonly Dictionary<Sprite, Rect> IconRects = new Dictionary<Sprite, Rect>(); private static readonly Dictionary<string, bool> TitleFits = new Dictionary<string, bool>(); internal static Texture2D LockIcon { get { //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_lock != (Object)null)) { return _lock = Load("lock", new Color(0.9f, 0.7f, 0.3f, 1f)); } return _lock; } } internal static void Ensure() { if (!_ready) { _ready = true; try { Build(); } catch (Exception arg) { Plugin.Log.LogError((object)$"Could not build the HUD's Valheim look; using plain styles. {arg}"); } FillMissing(); } } private static void FillMissing() { //IL_0013: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: 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_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) Label = (GUIStyle)(((object)Label) ?? ((object)new GUIStyle(GUI.skin.label))); Notice = (GUIStyle)(((object)Notice) ?? ((object)new GUIStyle(GUI.skin.label))); Small = (GUIStyle)(((object)Small) ?? ((object)new GUIStyle(GUI.skin.label))); Heading = (GUIStyle)(((object)Heading) ?? ((object)new GUIStyle(GUI.skin.label))); Title = (GUIStyle)(((object)Title) ?? ((object)new GUIStyle(GUI.skin.label) { alignment = (TextAnchor)4, fontSize = 28 })); TitleFallback = TitleFallback ?? Title; Center = (GUIStyle)(((object)Center) ?? ((object)new GUIStyle(GUI.skin.label) { alignment = (TextAnchor)4 })); Wrap = (GUIStyle)(((object)Wrap) ?? ((object)new GUIStyle(GUI.skin.label) { wordWrap = true })); Plain = (GUIStyle)(((object)Plain) ?? ((object)new GUIStyle(GUI.skin.label))); PlainRight = (GUIStyle)(((object)PlainRight) ?? ((object)new GUIStyle(GUI.skin.label) { alignment = (TextAnchor)5 })); PlainSmall = (GUIStyle)(((object)PlainSmall) ?? ((object)new GUIStyle(GUI.skin.label) { fontSize = 14 })); Button = (GUIStyle)(((object)Button) ?? ((object)new GUIStyle(GUI.skin.button))); TabOn = (GUIStyle)(((object)TabOn) ?? ((object)new GUIStyle(GUI.skin.button) { fontStyle = (FontStyle)1 })); Slot = (GUIStyle)(((object)Slot) ?? ((object)new GUIStyle(GUI.skin.box))); SlotOn = (GUIStyle)(((object)SlotOn) ?? ((object)new GUIStyle(GUI.skin.box))); Field = (GUIStyle)(((object)Field) ?? ((object)new GUIStyle(GUI.skin.textField))); Row = (GUIStyle)(((object)Row) ?? ((object)new GUIStyle(GUI.skin.button))); Skin = (((Object)(object)Skin != (Object)null) ? Skin : GUI.skin); } private static void Build() { //IL_001e: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Expected O, but got Unknown //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Expected O, but got Unknown //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Expected O, but got Unknown //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Expected O, but got Unknown //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Expected O, but got Unknown //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Expected O, but got Unknown //IL_03c0: Expected O, but got Unknown //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Expected O, but got Unknown //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_04e3: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Expected O, but got Unknown //IL_04f8: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Expected O, but got Unknown //IL_050c: Unknown result type (might be due to invalid IL or missing references) //IL_0511: Unknown result type (might be due to invalid IL or missing references) //IL_0516: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Expected O, but got Unknown //IL_0525: Expected O, but got Unknown //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_0580: Unknown result type (might be due to invalid IL or missing references) FindFonts(); _wood = Load("wood", new Color(0.42f, 0.29f, 0.19f, 1f)); _stud = Load("stud", new Color(0.5f, 0.36f, 0.24f, 1f)); Label = Make(GUI.skin.label, _body, 16, Body, (TextAnchor)3); Notice = Make(GUI.skin.label, _body, 16, Gold, (TextAnchor)3); Small = Make(GUI.skin.label, _body, 13, Dim, (TextAnchor)3); Heading = Make(GUI.skin.label, _body, 20, Gold, (TextAnchor)3); Title = Make(GUI.skin.label, ((Object)(object)_title != (Object)null) ? _title : _body, 30, Gold, (TextAnchor)4); TitleFallback = Make(GUI.skin.label, _body, 28, Gold, (TextAnchor)4); Center = Make(GUI.skin.label, _body, 16, Body, (TextAnchor)4); Plain = Make(GUI.skin.label, _body, 16, Color.white, (TextAnchor)3); PlainRight = Make(GUI.skin.label, _body, 16, Color.white, (TextAnchor)5); PlainSmall = Make(GUI.skin.label, _body, 14, Color.white, (TextAnchor)3); Wrap = Make(GUI.skin.label, _body, 16, Body, (TextAnchor)0); Wrap.wordWrap = true; Button = Make(GUI.skin.button, _body, 16, Body, (TextAnchor)4); Button.normal.background = Load("button", new Color(0.2f, 0.19f, 0.18f, 1f)); Button.hover.background = Load("button_hover", new Color(0.3f, 0.28f, 0.24f, 1f)); Button.active.background = Load("button_active", new Color(0.12f, 0.11f, 0.1f, 1f)); Button.focused.background = Button.normal.background; Button.hover.textColor = GoldBright; Button.active.textColor = Gold; Button.border = new RectOffset(12, 12, 12, 12); Button.padding = new RectOffset(10, 10, 4, 4); TabOn = new GUIStyle(Button); TabOn.normal.background = Button.hover.background; TabOn.normal.textColor = GoldBright; TabOn.focused.background = Button.hover.background; TabOn.focused.textColor = GoldBright; Slot = new GUIStyle(GUI.skin.box) { border = new RectOffset(14, 14, 14, 14), margin = new RectOffset(0, 0, 0, 0), padding = new RectOffset(0, 0, 0, 0) }; Slot.normal.background = Load("slot", new Color(0.28f, 0.19f, 0.12f, 0.9f)); SlotOn = new GUIStyle(Slot); SlotOn.normal.background = Load("slot_selected", new Color(0.4f, 0.28f, 0.15f, 0.95f)); Field = Make(GUI.skin.textField, _body, 16, Body, (TextAnchor)3); Field.normal.background = Load("field", new Color(0.13f, 0.09f, 0.07f, 1f)); Field.focused.background = Field.normal.background; Field.hover.background = Field.normal.background; Field.focused.textColor = GoldBright; Field.border = new RectOffset(14, 14, 14, 14); Field.padding = new RectOffset(10, 10, 4, 4); Row = new GUIStyle(GUI.skin.button) { border = new RectOffset(0, 0, 0, 0) }; Row.normal.background = null; Row.hover.background = Flat(new Color(1f, 0.85f, 0.5f, 0.1f)); Row.active.background = Flat(new Color(1f, 0.85f, 0.5f, 0.2f)); Row.focused.background = null; BuildSkin(); } internal static void Fill(Rect rect, Color color) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_000e: 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) //IL_0019: Unknown result type (might be due to invalid IL or missing references) if ((int)Event.current.type == 7) { Color color2 = GUI.color; GUI.color = color; GUI.DrawTexture(rect, (Texture)(object)Texture2D.whiteTexture); GUI.color = color2; } } internal static void Border(Rect rect, Color color, float thickness = 2f) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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) Fill(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).y, ((Rect)(ref rect)).width, thickness), color); Fill(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).yMax - thickness, ((Rect)(ref rect)).width, thickness), color); Fill(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).y, thickness, ((Rect)(ref rect)).height), color); Fill(new Rect(((Rect)(ref rect)).xMax - thickness, ((Rect)(ref rect)).y, thickness, ((Rect)(ref rect)).height), color); } internal static void Frame(Rect rect) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_0029: 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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009a: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) if ((int)Event.current.type == 7) { if ((Object)(object)_wood != (Object)null) { GUI.DrawTexture(rect, (Texture)(object)_wood, (ScaleMode)0); } else { Fill(rect, new Color(0.42f, 0.29f, 0.19f, 1f)); } Border(rect, new Color(0.05f, 0.03f, 0.02f, 1f), 3f); Border(Inset(rect, 3f), new Color(0.23f, 0.15f, 0.09f, 1f), 7f); Border(Inset(rect, 10f), new Color(0.59f, 0.42f, 0.27f, 1f), 1f); Border(Inset(rect, 11f), new Color(0.13f, 0.09f, 0.055f, 1f), 1f); DrawStud(((Rect)(ref rect)).x + 11f, ((Rect)(ref rect)).y + 11f); DrawStud(((Rect)(ref rect)).xMax - 11f, ((Rect)(ref rect)).y + 11f); DrawStud(((Rect)(ref rect)).x + 11f, ((Rect)(ref rect)).yMax - 11f); DrawStud(((Rect)(ref rect)).xMax - 11f, ((Rect)(ref rect)).yMax - 11f); } } internal static void Divider(float left, float right, float y) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_005e: 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_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) //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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) if ((int)Event.current.type == 7) { float num = (left + right) / 2f; Color color = default(Color); ((Color)(ref color))..ctor(0.1f, 0.055f, 0.03f, 1f); Color color2 = default(Color); ((Color)(ref color2))..ctor(0.72f, 0.53f, 0.29f, 1f); Fill(new Rect(left, y, num - 14f - left, 3f), color); Fill(new Rect(left, y - 1f, num - 14f - left, 1f), color2); Fill(new Rect(num + 14f, y, right - num - 14f, 3f), color); Fill(new Rect(num + 14f, y - 1f, right - num - 14f, 1f), color2); Matrix4x4 matrix = GUI.matrix; GUIUtility.RotateAroundPivot(45f, new Vector2(num, y + 1f)); Fill(new Rect(num - 5f, y - 4f, 10f, 10f), color); Fill(new Rect(num - 4f, y - 3f, 8f, 8f), color2); GUI.matrix = matrix; } } internal static void Shadowed(Rect rect, string text, GUIStyle style) { //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_001a: 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) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) Color contentColor = GUI.contentColor; GUI.contentColor = new Color(0f, 0f, 0f, 0.75f * contentColor.a); GUI.Label(new Rect(((Rect)(ref rect)).x + 1f, ((Rect)(ref rect)).y + 1.5f, ((Rect)(ref rect)).width, ((Rect)(ref rect)).height), text, style); GUI.contentColor = contentColor; GUI.Label(rect, text, style); } internal static void DrawTitle(Rect rect, string text) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (!TitleFits.TryGetValue(text, out var value)) { value = (Object)(object)_title != (Object)null; int num = 0; while (value && num < text.Length) { value = text[num] == ' ' || _title.HasCharacter(text[num]); num++; } TitleFits[text] = value; } Shadowed(rect, text, value ? Title : TitleFallback); } internal static void SlotIcon(Rect rect, Sprite sprite) { //IL_0000: 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) GUI.Box(rect, GUIContent.none, Slot); Icon(new Rect(((Rect)(ref rect)).x + 3f, ((Rect)(ref rect)).y + 3f, ((Rect)(ref rect)).width - 6f, ((Rect)(ref rect)).height - 6f), sprite); } internal static void Icon(Rect rect, Sprite sprite) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 //IL_00a9: 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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: 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_0083: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)sprite == (Object)null || (Object)(object)sprite.texture == (Object)null || (int)Event.current.type != 7) { return; } if (!IconRects.TryGetValue(sprite, out var value)) { try { Rect textureRect = sprite.textureRect; Texture2D texture = sprite.texture; value = new Rect(((Rect)(ref textureRect)).x / (float)((Texture)texture).width, ((Rect)(ref textureRect)).y / (float)((Texture)texture).height, ((Rect)(ref textureRect)).width / (float)((Texture)texture).width, ((Rect)(ref textureRect)).height / (float)((Texture)texture).height); } catch (Exception) { value = Rect.zero; } IconRects[sprite] = value; } if (((Rect)(ref value)).width > 0f) { GUI.DrawTextureWithTexCoords(rect, (Texture)(object)sprite.texture, value); } } internal 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); } private static Rect Inset(Rect rect, float by) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) return new Rect(((Rect)(ref rect)).x + by, ((Rect)(ref rect)).y + by, ((Rect)(ref rect)).width - 2f * by, ((Rect)(ref rect)).height - 2f * by); } private static void DrawStud(float x, float y) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_stud != (Object)null) { GUI.DrawTexture(new Rect(x - 8f, y - 8f, 16f, 16f), (Texture)(object)_stud); } } private static GUIStyle Make(GUIStyle basis, Font font, int size, Color color, TextAnchor anchor) { //IL_0001: 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_000d: 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) //IL_0015: 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_0023: 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_0031: 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) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_0055: 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_0062: Expected O, but got Unknown GUIStyle val = new GUIStyle(basis) { font = font, fontSize = size, alignment = anchor, wordWrap = false, clipping = (TextClipping)1, richText = false }; val.normal.textColor = color; val.hover.textColor = color; val.active.textColor = color; val.focused.textColor = color; return val; } private static void BuildSkin() { //IL_0034: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown Skin = Object.Instantiate<GUISkin>(GUI.skin); ((Object)Skin).hideFlags = (HideFlags)61; Texture2D texture = Load("scroll_track", new Color(0.1f, 0.07f, 0.05f, 0.8f)); Texture2D texture2 = Load("scroll_thumb", new Color(0.6f, 0.43f, 0.21f, 1f)); Skin.verticalScrollbar = Bar(Skin.verticalScrollbar, texture, new RectOffset(5, 5, 5, 5)); Skin.verticalScrollbarThumb = Bar(Skin.verticalScrollbarThumb, texture2, new RectOffset(5, 5, 6, 6)); Skin.horizontalScrollbar = Bar(Skin.horizontalScrollbar, texture, new RectOffset(5, 5, 5, 5)); Skin.horizontalScrollbarThumb = Bar(Skin.horizontalScrollbarThumb, texture2, new RectOffset(6, 6, 5, 5)); Skin.verticalScrollbarUpButton = Hidden(Skin.verticalScrollbarUpButton); Skin.verticalScrollbarDownButton = Hidden(Skin.verticalScrollbarDownButton); Skin.horizontalScrollbarLeftButton = Hidden(Skin.horizontalScrollbarLeftButton); Skin.horizontalScrollbarRightButton = Hidden(Skin.horizontalScrollbarRightButton); } private static GUIStyle Bar(GUIStyle basis, Texture2D texture, RectOffset border) { //IL_0001: 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_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) //IL_001c: Expected O, but got Unknown //IL_001c: 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) //IL_002b: Expected O, but got Unknown //IL_002b: 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_003a: Expected O, but got Unknown //IL_003a: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown GUIStyle val = new GUIStyle(basis) { border = border, margin = new RectOffset(0, 0, 0, 0), padding = new RectOffset(0, 0, 0, 0), overflow = new RectOffset(0, 0, 0, 0) }; val.normal.background = texture; val.hover.background = texture; val.active.background = texture; val.focused.background = texture; return val; } private static GUIStyle Hidden(GUIStyle basis) { //IL_0001: 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_0011: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown GUIStyle val = new GUIStyle(basis) { fixedWidth = 0f, fixedHeight = 0f }; val.normal.background = null; val.hover.background = null; val.active.background = null; val.focused.background = null; return val; } private static Texture2D Flat(Color color) { //IL_0004: 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) //IL_0011: 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) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown Texture2D val = new Texture2D(1, 1, (TextureFormat)4, false) { hideFlags = (HideFlags)61 }; val.SetPixel(0, 0, color); val.Apply(); return val; } private static Texture2D Load(string name, Color fallback) { //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) //IL_0021: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) try { if (HudTextures.Base64.TryGetValue(name, out var value)) { Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false) { hideFlags = (HideFlags)61 }; if (ImageConversion.LoadImage(val, Convert.FromBase64String(value))) { ((Texture)val).filterMode = (FilterMode)1; ((Texture)val).wrapMode = (TextureWrapMode)1; return val; } Object.Destroy((Object)(object)val); } } catch (Exception ex) { Plugin.Log.LogWarning((object)("HUD texture '" + name + "' could not be decoded (" + ex.Message + "); using a flat colour.")); } return Flat(fallback); } private static void FindFonts() { try { Font[] array = Resources.FindObjectsOfTypeAll<Font>(); StringBuilder stringBuilder = new StringBuilder(); Font[] array2 = array; foreach (Font val in array2) { if ((Object)(object)val != (Object)null) { stringBuilder.Append(((Object)val).name).Append(val.dynamic ? string.Empty : " (static)").Append("; "); } } _body = Pick(array, "AveriaSerif", "Regular", null) ?? Pick(array, "AveriaSerif", null, null); _title = Pick(array, null, null, "Norse") ?? Pick(array, "Norse", null, null); Plugin.Log.LogInfo((object)string.Format("HUD fonts: text = {0}, title = {1} (fonts in the game: {2})", ((Object)(object)_body != (Object)null) ? ((Object)_body).name : "default", ((Object)(object)_title != (Object)null) ? ((Object)_title).name : "default", stringBuilder)); } catch (Exception ex) { Plugin.Log.LogWarning((object)("Could not look for the game's fonts (" + ex.Message + "); the HUD uses the default font.")); } } private static Font Pick(Font[] fonts, string contains, string and, string exact) { foreach (Font val in fonts) { if ((Object)(object)val == (Object)null || !val.dynamic) { continue; } string name = ((Object)val).name; bool num; if (exact == null) { if (name.IndexOf(contains, StringComparison.OrdinalIgnoreCase) < 0) { continue; } if (and == null) { goto IL_0053; } num = name.IndexOf(and, StringComparison.OrdinalIgnoreCase) >= 0; } else { num = string.Equals(name, exact, StringComparison.OrdinalIgnoreCase); } if (!num) { continue; } goto IL_0053; IL_0053: if (val.HasCharacter('A') && val.HasCharacter('a')) { return val; } } return null; } } internal static class HudTextures { internal static readonly Dictionary<string, string> Base64 = new Dictionary<string, string> { { "wood", "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" + "pVr1nIbkHPpxkqP/2Q==" }, { "slot", "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFbklEQVR42u3bTYwcxRUH8P97Vf2xM97ZZXcx/hAoBB+CfOBmICCNgYsVCcilSYADOfiAhJBz" + "TJClZiS0KMqRA4RTolwijziQ2BJCRHJHAoEREcEwQTmADCJGOOxnz85OT9V7HMZjLQu2wwExO64n9aFVfej3q9dddahncPWgLMvMwYMHudPpKHZA5Dn4MJrm" + "8K/OoShwxXemKw1mGUy7DT+61zzn33Ven6bpDRnHxNN+gzCH/rHnXulvy0GAb4e4HADpcFCfuO8n80mjca8larKhHxFoQaGeroL3wwSxQkvxek5E3uwONv/+" + "/KmzHwFADnALkKsCbH3wgdsPHFPgaByZ/aTknYjzIh5jmfxwwkDEkTEREUzl/ap4edn03dMv/+vcyvaK/gbAKPlHDx1obDC/AMbPCLRebla+7PaT/sBFoso0" + "LJCxC4USEUlijaulcTVdi4WZZlW1w0KPv/TWf97bjkDbMY49eNvM+aXqzwS9u3LyvwvL3cZGv4oBgOjS1zHWoaoEALE1bmG2tlafiusiWKqn0S/++NrZs3kO" + "brWGVc5bfhasCkzZ9Pe1xN7pnL/w2YXVuV5VRYZJjCFhImGCjvtlzPB9nRfz+Zfrc+VG1Usi05itpy8uPnHffKsFHU24GSafmXa74/2/f3qUDB9dXu+tfvLF" + "6jwUZJmVCWAiYiLspMswq2FC2RukcWzKPXP1hvTkpn988OnJPAcXBZRGEr955O5Z6+QkGLNvf/jZ7Fq3nzKTYkes/FdZ6FVBzHr7rfvP15K45r1/ZLH95pks" + "y4zNm03TKgrHA3eYrdn/5Vqv2+1VibVGMCFBBDjn+YvlbnrLvoSdp58DOJMBsJ3dhQ4f4iYT++W1bsrMMESKSQpjZKXs1ZzXdSY69OSRI8lD7XbfttuQJ48c" + "SYC1WwbOu26vqllDQsBEARBYq4G3varSWhpdX6+V+wF8ZIdbxKWE2C5UTsR5NRcBJi5UlPqVx640rovV3SMApLFVAJ4ufTOEiQRgBQ1LWy2r+9o+YFy3t99X" + "iAw3S4xrPAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAC4FgA2K0eAXjMYBBBY+BJA33oHUMlERDxhJ0S3" + "NVQYJii0LwNbAgDnOfjFk+9siOrHccS2lkSVep24I3MKILLWp0lCIlia6m9+PKyA081h6SudgZK9rjHVEyjRZM08vBeeqSebScSRgt5/+m/v9PIczK3isABA" + "pPSqF1ldmKm7ehpXXienChSANSx75qdLEbXeySki6OnTTWagJVmWmVb79U8E+Kthmr3xhpll1ck4OUoABk5479z0Wn0qTp3o+wmvvqoKKorCGwDodDrIc7Ap" + "f/xPX7l76ml8fWS5XFrr1YkAZtqRieNi8jfM7ypv3jO34QVG2T/+zIl3/wsMO0Z4S5Wg9adixar5tfeysne+wQdunLtgrfEDJ6w76JNQVRr44TJ30+6ZlQP7" + "5ktR3UXAU8/+5a33siwzo6Yp+nqnaGba7bY//su7DqrKH4wxe6vKleeX1qdW1nu1/sBZ8UrjvH0iQCNrfaOebO6dmy7rtTgVryKK44sn3ngpbzZtqyjcZU+I" + "jxDyh5sLA18tGuZ7mMl4L/2NzYFW3o/tz0EBWGbUkghRZGIRNSL6gSqOL7bfeLfZbNpiS/KXPSK/ta/utw/dcReD7wfRIWbMM1FdVXU8e4OIVLUS1SUVPatE" + "r0SfR6daReHyPOdWqyX/d/O0Xhwbtc7kjzXT/sDvY1ftBls3Om8/Xht7YQtbGm/PtdpF+W0T+p0jyzKTZZnZaatAnud8YvjeV5yorwC3Lay69mn1FQAAAABJ" + "RU5ErkJggg==" }, { "slot_selected", "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" }, { "field", "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" + "64vuA2Z9/nea2gqVAAAAAElFTkSuQmCC" }, { "stud", "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADYElEQVR42lWTbWhbZRTH/+e5N7nJvclNlixpU/bSGLuNqXtR55zKilLZJgN1kEz30YFjguDL" + "nIqwLML0w2CK+sUNfAFRTBibSL/4RYpYhKll0HV9mdLarm9Jk9zb9Ca3997n8UPpaM+ncw7/c/jDOT9gTRSzWWlt3X/lZGzwysnY2n6xuF5Dq4nI5xkVCrz4" + "fjYRi/lPt2zncGXRykAAuqrMhTWl3/Xsz4+8d/WWECAiiHsLVoevFY4dEoK+Hhovp24MT+Nu2YTHORJRDbsybdjblXIjIf/Zox+UPi1msyxXKnn3LP1UyD5b" + "OveiOPxwp0hFgk5HJOjt6IjyBzbF+JaY5rXrAWdvOuF9e/ao+PlC9jwA5PPdMgmArn30QsxtsaGvev9O3Lwzx5NRVdrdlUJEC0BiBNOyMTxRxlTZFLqquGde" + "fsK3Ka4d7Hn3x98YAUJjwddGJyvJm3fmvGRUlU48tw+nTvRg3+4M/D4JqXgYB/d0Ip3aQBXDYn0D47Ac71w+D8a+fPURn9Wyn79xe1oQQLu6Unjq0R1o2S7u" + "T3cgHgtjqWmDMcKD6SR0VWEDY7NiwWwdeDxwfAu7r3Onblj21rsVk3RNYVFNwT8TMwgG/Jgt12EYFnyyBMfl0DUFG6Mq1cwmamZTVQP+7bIeBiarYJ7HITGC" + "LDEMDk9gZr4Gw1iC7TiQJQmcr9xOYgxcCHAOEhIxNrHcskJB33wyqolFa1kYDRs+WcLMXBWO60KWGDgXYIzQtB1UTQthVUEkpNiO406x3NulZkhV+h7KtNGy" + "6/GR/8rwOIcaUEBE4BxgjKD4JIxOLqDeaPGuzXHE9MDovyOhYQaAiMmf7NnW7qXiYUyVTfHH4CTqjSYYY/DJDLbj4q+RaYxNLYARuUf2ZygcDFw8dfmyQ8Vi" + "VsrlSt71D7NvGo3mpYs/9HsVw4KuKmxjVCWJMVRNS9QbLUFE7uvHHvPv7Exc/dMt5YButu6Vey8cP182lvJ9A+MYGJtFdbEpOBfQVYW2bY7j0P4M0u3R4q35" + "2um3Lv1SWw+TEEREovfjl55hJN4p160DlboV4UIgogVabRu022rQ91nPme+/WdGvAEVr0fw13y0/XehzAeD3L17ZKjx3u+r3iaZtzzz5xndDALgQggDCKo3/" + "A61Ag9Hsr3ASAAAAAElFTkSuQmCC" }, { "lock", "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" + "RU5ErkJggg==" }, { "button", "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAwCAYAAADuFn/PAAAG1UlEQVR42u1cS2ydRxX+zsz8j/u0rx3f+hG7aeK4jUvSlBRqCYlHBQ0UVAmhsAAJqaIKiK5Y" + "ISEEQWKFBAuEumWFStIugLZCLaUgUdGFkzRJFeTUkZ00jl/xre/78f//zGHh6/gmdW7s6Jp0Md/VSHfxr8435zuPmTOEzSEBaAAgAk6ePCaff/7lrmIRDIBg" + "0Q4MgI4cGaifPbtQZf64TVuxmTEVgOjY+Lj799nLX60G+llB9NlETPX7rgCzJaAdCODQMMqVsBQZnPEcer2vy/3bzFJlGYBoEsR3IoAA8EAmfrRQDn4bjznj" + "+4dSeHg4jeG+OBK+gmEGWQ7usPUZgghBZDCfq2F6rohLcyXkCo0bCV/9aqVU+12rnW8nQAIwPUn/57VAnxgf6cIzTw7owd44M0NoNgYt/mTR3g+EICEEcbES" + "8D/eW1bvXrwBQXQqkXF/ND9f+midM2qVnUzCOwHQLz5/KKu/cqSfDEOEkYYjAYZAoO3O30oAcAQgySAyDCKBmCv43OXV6C//ue5U6+Fb+WrwNBEEAE3rwWGw" + "J/Hl1XLw5tHPDETfeHJI5cshOYrRiARmVigsav/flYYIGGRZaBcADFPCRRSXtYmHekxPl2+4EYG6Eg4uXskHf3hj1pWEX65WGicAKAIgJiZ2exfOLJ4/sKd7" + "/3NH95paYISngGt54vPXJZUaVN5/4NHv70qnC4EOlCOE1aJNoAFAa6G8dG1y8p3fSESPje3SZrzfiFAzkjHFb0wu8JunF0xfyjt4NVe+RACQibvPSClf/+Gz" + "ozrbHZPMGnN5gXdmBJQApACIhLXwtrTIwDBQC4FPDTAe320QaEARohdfvazmliq/roThTxQAVBrmm0fGunmoN87VQCPShPfmBBQBggBjAEAba9Vt6RGBQDEH" + "mFoi9KcJ2aSB6yhxeF8GVxbKXz9+HD9TExO7Y+dOL37u4eE0MUM4gjG1KFCqM3wHMBtiY11gu+G4WbYygKlFIDtKCCIjRoeSiPty9OU/0iPq4sVCPOGr/uG+" + "OCJjKDKEhSIgiWGYWkoGi3uigQEFxkqFUG4wkh6jN+1xNuN7swuFYVUqlXioNx4lfAVmIIiASqNZKRhr/Q4lRwgiRjkAUj7gSoFUTCHQCFWTJWqtsRhsN/5O" + "NIha/jf3Nqk7fm0Z6DwDvHnj7eau39Attl2HHYgFm/UxVTvCLDrrAAC2SACzZWDHGKC7E2CD8E7Z/y4SRK0OYBnoeAzYjAIrQZ+ULMhmoffF/psRwDYN3Ylz" + "At5OFtRUIXvysvN5aNssyDpBp+3PW0xDmxJkCeh8FnQ7bI//EylB3PQCa7bO9oK2koaylaD/qwSp7bePLDoJtdlN0TUPsBLUeQ/g7cQA6wP3UYJsFXB/JMh6" + "wA56AG8tC9qohG0M6PTV9W2ciFkFus+FmM2CdkKCNjuRUevdUqIN/TfMbZzG4l4liFuCQNPerFIpUGhYBpFBAoArgZhDqAcGUtqriZ1KQaUAYi7dbPMEoYGU" + "UGpwsDe4NlMoL+TqPb0pD55D6O+WWC5GUPKWy7kWuKc70gg1sCslkUlIAIR8OcDSaj2KO6ogPvggVwo1JqfnSiwkmcgAB4c9OHL9Wvqt5wN2bXWt/dYIMDg0" + "smZTJQVfWapQqRrOPzTWe14wA75Lr166VqRiJQAzkE1LPLHXR7mucfM+183iwK6tLMLabEWpprEv6+DAoItGxCBi/f5Mnpnx9vsXlioSAO3pi88trtaPM5N/" + "cG83qg1NI70ODANzuRCRYQiCnQ7bRsYZaqARMUYfcPH0oQQARtxTODe9yv86vyxSMfHjckNfofUJyb507IV6qH//3af2hJ8e63EK5RAxT+DDlRCTMzUs5iME" + "kQ0IW5qSlIRMQuLwgz7Gh1yEmuG7CrliPXzxr9NOtRa+UqqHxxiQ63taEkEnPeeVZMz91re/OBw8MtLlVOualFz7IF81KFY1yCZGbecADANxT6AnIeFIoBEy" + "4r7CSqEevvT2VefDpcrsg9nYE/+dK+Zb54QJAEZGuroLN2ovMejoU48/gC89lo1cR4pAGwKDrARtp+giOFIYEJuz06vitXevi1ItnE4l1XcWc7XTzeNgQ7c/" + "U0AE9CS9E9WG+elINuEc3pfB6FASvWmPHSVgn+u4O7RhFMohXV0q48JMHlPXipBEJwcy7gtT86XcuvHv9FYEAPBwJvHoR+Xge5ExX4vHnLFst+8lYwrG2FHt" + "dgGAiBBEGkurdS5Vw1lm/DOd8P60XKi8hY2LEKbdaym3PK1y6tQx+YPn/nxgtWIG1l+wsZa++zRSKqaKXxjvu/DamYVqi+E/1ub8H3lbLleqM0HvAAAAAElF" + "TkSuQmCC" }, { "button_hover", "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" }, { "button_active", "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAwCAYAAADuFn/PAAAGUUlEQVR42u1cTWxc1RX+zr33vTfzZuznnzH2EKfBUUiDAQFJi6qyQ6jQVuoGRUgskJAqVYJ9" + "K3XRphIrKnXRDQtWrIDAAqlKgYqCKnVFiCKSVgoi2JTGdmyP7fl9837uvaeLGTtOsN0YHGLE/aSj0Wje6py533fOuec8wtaQAMz6l9MnT8pfvvtu1Gw2GQDB" + "YScwADpRrSbnFhbi7Xy6jq2cqQDo6elpf3728hOpsb8gEg8XfTHhK4JlF4CdIADWzOimpmUsnQsUnxkZ8N+eWews9X4G923LABAArg6Gj7ez/E+Bp6aro0Uc" + "qBRRiQIUfAFm5+SdQCBoa7HayjBf62Ku1kUzzpeLvnyh1ur+ebOfbwyABGBHyoXfZbk9dfCOECfuHjbDgwGDISzYghkg2hxAhy1JiEBEQhA4TjVfnGmoS180" + "QYTTofSfm2+1Vq89uYl2hkvBKSL6/fRdkXng8BAxIKxlKAFYEDLt+OdmBEBJghKAMQwG4HuCZxfa+uylVS/J9HtrnewnRBAADK2Lwx1R6bE4zf92/MiwPvH9" + "EdVJDHkSSDXw+XKW17v4eye1GcACIHcEtoNlKgbClAM8cqjiV6JQcJZbCgsKXyx1svfPL/oE/GGtk54CoAiAmJycDOq1xY8PjpXufvT4uM01C08C82ua/zWX" + "USexrXIUPRWVy3VjjCJyAdjW/9YKa0VSq119yZN0/Mi4Z49OeEIbRiGQfP7TNT5/ec0OlPz7F1banxAADA/4P5OQZ5744YQZLPuSwFhY0/hwJoEUBCkAInIC" + "fLNCTAAzgxlIcsaxO33cO+kj14AQ0O98eFXV6t0XW2n+G9lX7l8fGi8/dM9dkTWGRa4ZZ2czMAApaT1vsptSKGc7GK9nKUTkScJK22CkJFEKBJQUyI2l/y53" + "h5590LysfjQ5Wby4vPjIgUqR2LJQAvhsUSPOLIJe3r+eLAn33/5KeSkYwOUljdGyhLEsqiNFFDxx5I1LpWPq31caYaEsJypRAGaQscBSy0CK7Ss1h92lRZ4g" + "NDoWncyi5AsMhIqjshfM1eKDqoUWV1VRF/yex3PDSHKGIPHlSsHhKx4CRm4ZccYoB4AUhIIvkRmTKwCwAF0vsASCy/n3sjqm/ufGweirhNqOtzbMYc+0ANs0" + "3naImMNe+X47f7rM5jbDUdD+pKBrNOSwdxQER0HfEgoiumYOe3QCdkNBjvydCH9nhEDdeJvj/P/NirDa3eMOe52LOhH+BkWYNqaGnAjvXxEmpwG3WwOcFNz2" + "VoTzvKuEvzOVsOsF7csT4C5kbpkI3zjf71oRtzkVchS0vyiIHQXd0jthct3Q/VoHMLk67JafAL4h1QfAagAga1hqw/ABSAF4kpCbfgBcFPB1RxO571dfoj+9" + "y8g1Q0qpxJ2jo1k3M+3VdgZBAkoCUdib3BJi6/6Qs10YAZaBMABCvzfmH3cNGp1Mh57XEJ+srLSs5bPztS4LgrWWcSAClOgFwR2ArwdBPT8eiABJDCmIl+sp" + "xYmen4qijxUASI/+MlfrPhknGsqTGAgYB0cJn9WAQF5/W+awu/ZDqoFKGZgYZGhL8CWbz692JMDvX1hc7AgAVI6CM804q1+cbZCviDPNODTMmBoBjO2Zo5Ob" + "M9H/tAzkGhgrA8cmGMYyfF9gZqFDV2oxFYryFfQX9FS7nbUHS0F7qZ78PCp5eny4KNPcolIGoiKQGUJmAMu9mWnbn512dr2h7xtBQMkHpirA4VEGmOF7Es04" + "y/9xYVlpy2/W2+kfAUjavEY/FAZvFnz55I/vq2STY6GX5pYE9boXSQ4kmuC2hHemHQbgSUboAYIYxhICT6AR5/k/Lyx7S43ubDRa/MGVK8365vSfAOB7UTTU" + "1N1XweLx+w9HuG8q0p4UwlgmZnZ6vMtNPSnIAmxnFjrio0uropuaT0NfPH212f2oz1aWtgggRkvBqdTwb8eiwJuqllEdKWAg9Fj1F/Ycdl7GsJbRSTQt1RP8" + "Z7GDueUuiPB6OOQ/Pz/fWll3PrZ5VwQA8Phw6d44zp4xzD8t+OpoVPKCgi/dqupNrKhqY1Fv5xwnehbgD0pF+dpSI31vUwPU/r+7x41Xq5w+eVL+6q9v3RMn" + "tpoa09cN4zy9Q+0rISksUvPo9NiFc+c2XlnzpTelAMD/AGp2Lfqblp9EAAAAAElFTkSuQmCC" }, { "scroll_track", "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABoUlEQVR42u2TvW5TQRCFz8zu3o3/iMFCkAYUQJDeSgEK74CE7itEFBQUdBQXvwJFQBRUVPgp" + "EtFRIgIxXRSEEiUYXWyca+/OUJhrwEEUqTnSarUjzTer0TmEXyIAmq5dO09kH4zGYU1VPRRKTJpY844NnnS3dt6qgoigZdPsvrO6co4TebG7n1/e/zrsQ6Bg" + "EAS62PD15YtNrXi+/2qr9ybLwJ0OhAEgTcEA1Hm6t3vw7erHT0efi3HQIkQU46hFiNg7zPu9vS80mdDD9XbbPe5Mf8AAqNtFXG8vVY9DvHnQH/S9s4lhAjNm" + "p+KsO8pH+aAorhyf+X6dAE1TGC4XMDQ1qyJedEpW/KnyHQUGgWplfQbw1ihA831/lTLLCcBp9R9wSoCo0gnAgjNa+vtfIkBhOf4O0Azgjc3tobfmQ7OW1Mcx" + "BppLWQgiVe98zbvDxRh7Px08zQKyqT/E2qfLS2cnF5r1RhAVEYWIIopqteLMyqVWayHh5xub24Msm6Z3fpDevX3jlgR9lI+KlkQEIpBCqVFJxDv3rPv6/csy" + "iQDwA/L0t9T3hFG5AAAAAElFTkSuQmCC" }, { "scroll_thumb", "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB2klEQVR42t2TvWsUURTFz3nzsZOd3WgUleCipkgQwcJCBCurNKZZccTCzj/CSpcgFmIZ/QPE" + "bgcFsRabxFKSQlOJESWCYf1IzDo7O+8di9nsgtEUlp7mwX3c37v3vHuJgSSQhFYeNRuT48HdblbM5X3VHQTfsBivhYvdbv/miatPltRqGc7POwDgTjIArKXJ" + "Ed+4lx8/bU+tvvsO6wQSEICjh6o4PT2R0cdco/n4udqJxyupNeX7iSEh39Od9c/Z1NLKxubPXoG8b5HlFnlu8ebt1+LVaifqZXqgdhIiaTsAMGXpqdXytXhz" + "K7v8oaPX52dnFwIPAClDgiRq1cB/v/7DZT0706l6Z0hK7cQzGJrgBZLGJPajuNrFb5LKkwDhmfpOfASwFQF0oOgK62EPibC7AQAkEQBIai8ArOMfAf+i/xXA" + "gZl/N3F07w+DRUUARcBV4mpvF3SQonIYRt9IQmonHs4tbNXiYHFfVJx88fTZdQeWQzNI7uXW7a+HCAPT8YtoWQKRpK5sITklEqqE/o3pY3HQOMiZfl9yEpyE" + "wgr1ODQXzk6asci7NdF8+A1puT/DXtSC4TzcWju5GPq4v/ElO57lFiRgDHX4QLRtPHO7cSm9J7UMWa7zL+SI0FXM7GhQAAAAAElFTkSuQmCC" } }; } internal sealed class HudWindow : MonoBehaviour { private const float PanelWidth = 800f; private const float PanelHeight = 640f; private const float ScreenMargin = 30f; private const float ContentTop = 96f; private const float ContentBottom = 46f; private const float LeftWidth = 400f; private const float ColumnGap = 22f; private const float RowHeight = 44f; private const float SliderRowHeight = 40f; private readonly List<Action> _after = new List<Action>(); private readonly List<PetChoice> _filtered = new List<PetChoice>(128); private readonly List<string> _names = new List<string>(128); private string _search = string.Empty; private string _filteredFor; private List<PetChoice> _filteredFrom; private Vector2 _scroll; private string _currentTyped; private string _currentPrefab; private string _status; private float _statusUntil; private GUIStyle _smallRight; private void Awake() { ((Behaviour)this).enabled = false; } internal void OnOpened() { //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) _search = string.Empty; _filteredFor = null; _filteredFrom = null; _currentTyped = null; _scroll = Vector2.zero; _status = null; _after.Clear(); } private void Update() { if (Hud.IsOpen) { Player localPlayer = Player.m_localPlayer; if ((Object)(object)localPlayer == (Object)null || ((Character)localPlayer).IsDead() || ((Character)localPlayer).IsTeleporting() || Menu.IsVisible() || InventoryGui.IsVisible() || Console.IsVisible() || Input.GetKeyDown((KeyCode)27)) { Hud.Close(); } } } private void OnGUI() { if (!Hud.IsOpen) { return; } try { Draw(); } catch (ExitGUIException) { throw; } catch (Exception arg) { Plugin.Log.LogError((object)$"The HUD failed and was closed: {arg}"); Hud.Close(); } } private void Draw() { //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) HudStyle.Ensure(); if (_smallRight == null) { _smallRight = new GUIStyle(HudStyle.Small) { alignment = (TextAnchor)5 }; } GUI.depth = -100; GUISkin skin = GUI.skin; GUI.skin = HudStyle.Skin; float num = Mathf.Clamp((float)Screen.height / 1080f, 0.75f, 3f) * Plugin.HudScale.Value; GUI.matrix = Matrix4x4.Scale(new Vector3(num, num, 1f)); float num2 = (float)Screen.width / num; float num3 = (float)Screen.height / num; float num4 = Mathf.Min(800f, num2 - 60f); float num5 = Mathf.Min(640f, num3 - 60f); GUI.BeginGroup(new Rect(num2 - num4 - 30f, (num3 - num5) / 2f, num4, num5)); try { DrawFrame(num4, num5); Rect val = default(Rect); ((Rect)(ref val))..ctor(28f, 96f, num4 - 56f, num5 - 96f - 46f); GUI.BeginGroup(val); try { float num6 = Mathf.Min(400f, ((Rect)(ref val)).width * 0.52f); DrawLeft(new Rect(0f, 0f, num6, ((Rect)(ref val)).height)); float num7 = num6 + 22f; DrawRight(new Rect(num7, 0f, ((Rect)(ref val)).width - num7, ((Rect)(ref val)).height)); } finally { GUI.EndGroup(); } DrawFooter(num4, num5); } finally { GUI.EndGroup(); GUI.matrix = Matrix4x4.identity; GUI.skin = skin; } RunQueued(); } private void RunQueued() { if (_after.Count != 0) { Action[] array = _after.ToArray(); _after.Clear(); Action[] array2 = array; for (int i = 0; i < array2.Length; i++) { array2[i](); } } } private void Say(string message) { _status = message; _statusUntil = Time.unscaledTime + 4f; } private void DrawFrame(float width, float height) { //IL_000c: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) HudStyle.Frame(new Rect(0f, 0f, width, height)); HudStyle.DrawTitle(new Rect(70f, 18f, width - 140f, 50f), Text.HudTitle); HudStyle.Divider(60f, width - 60f, 74f); if (GUI.Button(new Rect(width - 66f, 24f, 38f, 34f), "X", HudStyle.Button)) { Hud.Close(); } bool spanish = Text.Spanish; if (GUI.Button(new Rect(width - 66f - 100f, 24f, 46f, 34f), "ES", spanish ? HudStyle.TabOn : HudStyle.Button) && !spanish) { _after.Add(delegate { SetLanguage(HudLanguage.Spanish); }); } if (GUI.Button(new Rect(width - 66f - 50f, 24f, 46f, 34f), "EN", (!spanish) ? HudStyle.TabOn : HudStyle.Button) && spanish) { _after.Add(delegate { SetLanguage(HudLanguage.English); }); } } private void SetLanguage(HudLanguage language) { Plugin.Language.Value = language; Plugin.SaveConfig(); } private void DrawFooter(float width, float height) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) HudStyle.Shadowed(new Rect(32f, height - 36f, 240f, 26f), Text.FooterHint(Plugin.MenuKeyLabel), HudStyle.Small); if (_status != null && Time.unscaledTime < _statusUntil) { HudStyle.Shadowed(new Rect(280f, height - 36f, width - 320f, 26f), _status, HudStyle.Notice); } } private void DrawLeft(Rect area) { //IL_001a: 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_00a8: 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) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) HudStyle.Shadowed(new Rect(((Rect)(ref area)).x, ((Rect)(ref area)).y, ((Rect)(ref area)).width, 28f), Text.CreatureHeading, HudStyle.Heading); List<PetChoice> list = PetList.Get(ZNetScene.instance); RefreshCurrent(list); HudStyle.Shadowed(new Rect(((Rect)(ref area)).x, ((Rect)(ref area)).y + 28f, ((Rect)(ref area)).width, 24f), CurrentLabel(list), HudStyle.Notice); Rect val = default(Rect); ((Rect)(ref val))..ctor(((Rect)(ref area)).x, ((Rect)(ref area)).y + 58f, ((Rect)(ref area)).width, 34f); GUI.SetNextControlName("pets_search"); _search = GUI.TextField(val, _search, 40, HudStyle.Field); if (_search.Length == 0 && GUI.GetNameOfFocusedControl() != "pets_search") { Color contentColor = GUI.contentColor; GUI.contentColor = new Color(1f, 1f, 1f, 0.5f); GUI.Label(new Rect(((Rect)(ref val)).x + 12f, ((Rect)(ref val)).y, ((Rect)(ref val)).width - 24f, ((Rect)(ref val)).height), Text.SearchHint, HudStyle.Small); GUI.contentColor = contentColor; } Rect area2 = default(Rect); ((Rect)(ref area2))..ctor(((Rect)(ref area)).x, ((Rect)(ref area)).y + 100f, ((Rect)(ref area)).width, ((Rect)(ref area)).height - 100f); if (list.Count == 0) { HudStyle.Shadowed(new Rect(((Rect)(ref area2)).x, ((Rect)(ref area2)).y, ((Rect)(ref area2)).width, 50f), Text.NoWorld, HudStyle.Wrap); return; } Filter(list); DrawList(area2); } private void Filter(List<PetChoice> all) { //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) if (_filteredFrom == all && _filteredFor == _search) { return; } _filteredFrom = all; _filteredFor = _search; _filtered.Clear(); string text = _search.Trim(); foreach (PetChoice item in all) { if (text.Length == 0 || item.Display.IndexOf(text, StringComparison.OrdinalIgnoreCase) >= 0 || item.Prefab.IndexOf(text, StringComparison.OrdinalIgnoreCase) >= 0) { _filtered.Add(item); } } _scroll = Vector2.zero; } private void DrawList(Rect area) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) bool flag = _search.Trim().Length == 0; int num = _filtered.Count + (flag ? 1 : 0); if (num == 0) { HudStyle.Shadowed(new Rect(((Rect)(ref area)).x, ((Rect)(ref area)).y, ((Rect)(ref area)).width, 30f), Text.NothingFound, HudStyle.Notice); return; } Rect val = default(Rect); ((Rect)(ref val))..ctor(0f, 0f, ((Rect)(ref area)).width - 18f, (float)num * 44f); _scroll = GUI.BeginScrollView(area, _scroll, val); try { int num2 = Mathf.Max(0, (int)(_scroll.y / 44f) - 1); int num3 = Mathf.Min(num - 1, (int)((_scroll.y + ((Rect)(ref area)).height) / 44f) + 1); Rect rect = default(Rect); for (int i = num2; i <= num3; i++) { ((Rect)(ref rect))..ctor(0f, (float)i * 44f, ((Rect)(ref val)).width, 40f); if (flag && i == 0) { DrawRow(rect, Text.NoPet, string.Empty, _currentPrefab == null, null); continue; } PetChoice petChoice = _filtered[i - (flag ? 1 : 0)]; DrawRow(rect, petChoice.Display, petChoice.Prefab, petChoice.Prefab == _currentPrefab, petChoice.Prefab); } } finally { GUI.EndScrollView(); } } private void DrawRow(Rect rect, string display, string prefab, bool selected, string pick) { //IL_001c: 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) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) GUI.Box(rect, GUIContent.none, selected ? HudStyle.SlotOn : HudStyle.Slot); Color contentColor = GUI.contentColor; GUI.contentColor = (selected ? HudStyle.GoldBright : Color.white); GUI.Label(new Rect(((Rect)(ref rect)).x + 14f, ((Rect)(ref rect)).y, ((Rect)(ref rect)).width - 150f, ((Rect)(ref rect)).height), display, HudStyle.Plain); GUI.contentColor = Color.white; if (prefab.Length > 0 && prefab != display) { GUI.Label(new Rect(((Rect)(ref rect)).xMax - 150f, ((Rect)(ref rect)).y, 136f, ((Rect)(ref rect)).height), prefab, _smallRight); } GUI.contentColor = contentColor; if (GUI.Button(rect, GUIContent.none, HudStyle.Row)) { _after.Add(delegate { Choose(pick, display); }); } } private void Choose(string prefab, string display) { Plugin.Pet.Value = prefab ?? "None"; Plugin.SaveConfig(); Say((prefab == null) ? Text.Cleared : Text.Chosen(display)); } private void RefreshCurrent(List<PetChoice> all) { string text = Plugin.Pet.Value ?? string.Empty; if (text == _currentTyped && _names.Count == all.Count) { return; } _currentTyped = text; _names.Clear(); foreach (PetChoice item in all) { _names.Add(item.Prefab); } _currentPrefab = (PetCatalog.IsNone(text) ? null : PetCatalog.Resolve(text, _names)); } private string CurrentLabel(List<PetChoice> all) { string typed = Plugin.Pet.Value ?? string.Empty; if (PetCatalog.IsNone(typed)) { return Text.CurrentNone; } if (_currentPrefab == null) { return Text.CurrentUnknown(typed); } foreach (PetChoice item in all) { if (item.Prefab == _currentPrefab) { return Text.Current(item.Display); } } return Text.Current(_currentPrefab); } private void DrawRight(Rect area) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0177: 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_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) HudStyle.Shadowed(new Rect(((Rect)(ref area)).x, ((Rect)(ref area)).y, ((Rect)(ref area)).width, 28f), Text.SettingsHeading, HudStyle.Heading); float num = ((Rect)(ref area)).y + 40f; HudStyle.Shadowed(new Rect(((Rect)(r