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 CanvasUtil v1.0.0
CanvasUtil.dll
Decompiled 7 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CanvasUtil")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+cf62804bd0cc7276e22a306e96a1178bf555e6cc")] [assembly: AssemblyProduct("CanvasUtil")] [assembly: AssemblyTitle("CanvasUtil")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/flibber-hk/Silksong.CanvasUtil")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.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 BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace CanvasUtil { public static class CanvasUtil { [CompilerGenerated] private sealed class <FadeInCanvasGroup>d__12 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public CanvasGroup cg; private float <loopFailsafe>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FadeInCanvasGroup>d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <loopFailsafe>5__2 = 0f; cg.alpha = 0f; ((Component)cg).gameObject.SetActive(true); goto IL_00c7; case 1: <>1__state = -1; goto IL_00c7; case 2: { <>1__state = -1; return false; } IL_00c7: if (cg.alpha < 1f) { CanvasGroup obj = cg; obj.alpha += Time.unscaledDeltaTime * 3.2f; <loopFailsafe>5__2 += Time.unscaledDeltaTime; if (cg.alpha >= 0.95f) { cg.alpha = 1f; } else if (!(<loopFailsafe>5__2 >= 2f)) { <>2__current = null; <>1__state = 1; return true; } } cg.alpha = 1f; cg.interactable = true; ((Component)cg).gameObject.SetActive(true); <>2__current = null; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <FadeOutCanvasGroup>d__13 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public CanvasGroup cg; private float <loopFailsafe>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FadeOutCanvasGroup>d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <loopFailsafe>5__2 = 0f; cg.interactable = false; goto IL_00a0; case 1: <>1__state = -1; goto IL_00a0; case 2: { <>1__state = -1; return false; } IL_00a0: if (cg.alpha > 0.05f) { CanvasGroup obj = cg; obj.alpha -= Time.unscaledDeltaTime * 3.2f; <loopFailsafe>5__2 += Time.unscaledDeltaTime; if (!(cg.alpha <= 0.05f) && !(<loopFailsafe>5__2 >= 2f)) { <>2__current = null; <>1__state = 1; return true; } } cg.alpha = 0f; ((Component)cg).gameObject.SetActive(false); <>2__current = null; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static GameObject CreateBasePanel(GameObject parent, RectData rd) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(); if ((Object)(object)parent != (Object)null) { val.transform.SetParent(parent.transform); val.transform.localScale = new Vector3(1f, 1f, 1f); } val.AddComponent<CanvasRenderer>(); AddRectTransform(val, rd); return val; } public static void AddRectTransform(GameObject go, RectData rd) { //IL_0008: 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_0020: 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_0037: Unknown result type (might be due to invalid IL or missing references) RectTransform obj = go.AddComponent<RectTransform>(); obj.anchorMax = rd.AnchorMax; obj.anchorMin = rd.AnchorMin; obj.pivot = rd.AnchorPivot; obj.sizeDelta = rd.RectSizeDelta; obj.anchoredPosition = rd.AnchorPosition; } public static GameObject CreateCanvas(RenderMode renderMode, int referencePixelsPerUnit) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) GameObject obj = CreateCanvas(renderMode); obj.GetComponent<CanvasScaler>().referencePixelsPerUnit = referencePixelsPerUnit; return obj; } public static GameObject CreateCanvas(RenderMode renderMode, Vector2 size) { //IL_0000: 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) GameObject obj = CreateCanvas(renderMode); obj.GetComponent<CanvasScaler>().referenceResolution = size; return obj; } private static GameObject CreateCanvas(RenderMode renderMode) { //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_000b: 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_001d: 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) //IL_002c: Expected O, but got Unknown GameObject val = new GameObject(); val.AddComponent<Canvas>().renderMode = renderMode; val.AddComponent<CanvasScaler>().uiScaleMode = (ScaleMode)1; val.AddComponent<GraphicRaycaster>(); val.AddComponent<CanvasGroup>(); return val; } public static GameObject CreateTextPanel(GameObject parent, string text, int fontSize, TextAnchor textAnchor, RectData rectData, Font font) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) GameObject obj = CreateBasePanel(parent, rectData); Text obj2 = obj.AddComponent<Text>(); obj2.font = font; obj2.text = text; obj2.supportRichText = true; obj2.fontSize = fontSize; obj2.alignment = textAnchor; return obj; } public static GameObject CreateTextPanel(GameObject parent, string text, int fontSize, TextAnchor textAnchor, RectData rectData, bool bold = true) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) Font val = (bold ? Fonts.TrajanBold : Fonts.TrajanNormal); if ((Object)(object)val == (Object)null) { throw new ArgumentException("Could not load Trajan font"); } return CreateTextPanel(parent, text, fontSize, textAnchor, rectData, val); } public static GameObject CreateImagePanel(GameObject parent, Sprite sprite, RectData rectData) { GameObject obj = CreateBasePanel(parent, rectData); Image obj2 = obj.AddComponent<Image>(); obj2.sprite = sprite; obj2.preserveAspect = true; obj2.useSpriteMesh = true; return obj; } public static GameObject CreateButton(GameObject parent, Action<int> action, int id, Sprite spr, string text, int fontSize, TextAnchor textAnchor, RectData rectData, bool bold = true, params Sprite[] extraSprites) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00a2: Unknown result type (might be due to invalid IL or missing references) Action<int> action2 = action; GameObject obj = CreateBasePanel(parent, rectData); CreateTextPanel(obj, text, fontSize, textAnchor, rectData, bold); Image val = obj.AddComponent<Image>(); val.sprite = spr; Button val2 = obj.AddComponent<Button>(); ((Selectable)val2).targetGraphic = (Graphic)(object)val; ((UnityEvent)val2.onClick).AddListener((UnityAction)delegate { action2(id); }); if (extraSprites.Length == 3) { ((Selectable)val2).transition = (Transition)2; ((Selectable)val2).targetGraphic = (Graphic)(object)val; SpriteState val3 = default(SpriteState); ((SpriteState)(ref val3)).highlightedSprite = extraSprites[0]; ((SpriteState)(ref val3)).pressedSprite = extraSprites[1]; ((SpriteState)(ref val3)).disabledSprite = extraSprites[2]; SpriteState spriteState = val3; ((Selectable)val2).spriteState = spriteState; return obj; } ((Selectable)val2).transition = (Transition)0; return obj; } public static GameObject CreateToggle(GameObject parent, Action<bool> action, Sprite boxBgSprite, Sprite boxFgSprite, string text, int fontSize, TextAnchor textAnchor, RectData rectData, bool bold = true, bool isOn = false) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_00f0: Unknown result type (might be due to invalid IL or missing references) Action<bool> action2 = action; GameObject obj = CreateBasePanel(parent, rectData); GameObject val = CreateImagePanel(obj, boxBgSprite, rectData); GameObject val2 = CreateImagePanel(val, boxFgSprite, rectData); Toggle val3 = obj.AddComponent<Toggle>(); val3.isOn = isOn; ((Selectable)val3).targetGraphic = (Graphic)(object)val.GetComponent<Image>(); val3.graphic = (Graphic)(object)val2.GetComponent<Image>(); ((Selectable)val3).transition = (Transition)1; ColorBlock val4 = default(ColorBlock); ((ColorBlock)(ref val4)).normalColor = new Color(1f, 1f, 1f, 1f); ((ColorBlock)(ref val4)).highlightedColor = new Color(1f, 1f, 1f, 1f); ((ColorBlock)(ref val4)).pressedColor = new Color(0.8f, 0.8f, 0.8f, 1f); ((ColorBlock)(ref val4)).disabledColor = new Color(0.8f, 0.8f, 0.8f, 0.5f); ((ColorBlock)(ref val4)).fadeDuration = 0.1f; ColorBlock colors = val4; ((Selectable)val3).colors = colors; ((UnityEvent<bool>)(object)val3.onValueChanged).AddListener((UnityAction<bool>)delegate(bool b) { action2(b); }); ToggleGroup component = parent.GetComponent<ToggleGroup>(); if ((Object)(object)component != (Object)null) { val3.group = component; } return obj; } public static GameObject CreateToggleGroup() { //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_0010: 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_002e: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown GameObject val = new GameObject(); AddRectTransform(val, new RectData(new Vector2(0f, 0f), new Vector2(0f, 0f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f))); val.AddComponent<ToggleGroup>(); return val; } public static GameObject CreateRectMask2DPanel(GameObject parent, RectData rectData) { GameObject obj = CreateBasePanel(parent, rectData); obj.AddComponent<RectMask2D>(); return obj; } [IteratorStateMachine(typeof(<FadeInCanvasGroup>d__12))] public static IEnumerator FadeInCanvasGroup(CanvasGroup cg) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FadeInCanvasGroup>d__12(0) { cg = cg }; } [IteratorStateMachine(typeof(<FadeOutCanvasGroup>d__13))] public static IEnumerator FadeOutCanvasGroup(CanvasGroup cg) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FadeOutCanvasGroup>d__13(0) { cg = cg }; } } [BepInPlugin("io.github.flibber-hk.canvasutil", "CanvasUtil", "1.0.0")] public class CanvasUtilPlugin : BaseUnityPlugin { public const string Id = "io.github.flibber-hk.canvasutil"; public static string Name => "CanvasUtil"; public static string Version => "1.0.0"; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Plugin " + Name + " (io.github.flibber-hk.canvasutil) has loaded!")); } } public class DebugPanel : MonoBehaviour { [RequireComponent(typeof(Text))] private class TextUpdate : MonoBehaviour { private Text _text; public Func<string>? Generator { get; set; } private void Awake() { _text = ((Component)this).GetComponent<Text>(); } private void Update() { _text.text = Generator?.Invoke() ?? string.Empty; } } private const int FONT_SIZE = 18; private GameObject basePanel; private static readonly string[] OSFonts = new string[4] { "Consolas", "Menlo", "Courier New", "DejaVu Mono" }; private static Font? _font; public Text Text { get; private set; } public static Font DefaultFont { get { if ((Object)(object)_font == (Object)null) { _font = Font.CreateDynamicFontFromOSFont(OSFonts, 18); } return _font; } } public static DebugPanel Create(Func<string>? generator = null) { //IL_000b: 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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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_00d6: Unknown result type (might be due to invalid IL or missing references) GameObject obj = CanvasUtil.CreateCanvas((RenderMode)0, new Vector2(1920f, 1080f)); ((Object)obj).name = "DebugPanel Canvas"; CanvasGroup component = obj.GetComponent<CanvasGroup>(); component.interactable = false; component.blocksRaycasts = false; Object.DontDestroyOnLoad((Object)(object)obj); GameObject val = CanvasUtil.CreateBasePanel(obj, new RectData(new Vector2(550f, 700f), new Vector2(100f, -300f), new Vector2(0f, 1f), new Vector2(0f, 1f), new Vector2(0f, 1f))); ((Graphic)val.AddComponent<Image>()).color = new Color(0f, 0f, 0f, 0.25f); GameObject val2 = CanvasUtil.CreateTextPanel(val, string.Empty, 18, (TextAnchor)0, new RectData(new Vector2(500f, 650f), new Vector2(25f, -25f)), DefaultFont); if (generator != null) { val2.AddComponent<TextUpdate>().Generator = generator; } DebugPanel debugPanel = obj.AddComponent<DebugPanel>(); debugPanel.Text = val2.GetComponent<Text>(); debugPanel.basePanel = val; return debugPanel; } public void SetText(string s) { Text.text = s; } public void SetPanelVisible(bool visible) { GameObject obj = basePanel; if (obj != null) { obj.SetActive(visible); } } } public static class Fonts { private static Font? _trajanBold; private static Font? _trajanNormal; private static readonly Dictionary<string, Font> fonts = new Dictionary<string, Font>(); public static Font? TrajanBold { get { if (!Object.op_Implicit((Object)(object)_trajanBold)) { CreateFonts(); } return _trajanBold; } } public static Font? TrajanNormal { get { if (!Object.op_Implicit((Object)(object)_trajanNormal)) { CreateFonts(); } return _trajanNormal; } } private static void CreateFonts() { Font[] array = Resources.FindObjectsOfTypeAll<Font>(); foreach (Font val in array) { if ((Object)(object)val != (Object)null && ((Object)val).name == "TrajanPro-Bold") { _trajanBold = val; } if ((Object)(object)val != (Object)null && ((Object)val).name == "TrajanPro-Regular") { _trajanNormal = val; } } } public static Font? GetFont(string fontName) { if (fonts.ContainsKey(fontName)) { return fonts[fontName]; } Font[] array = Resources.FindObjectsOfTypeAll<Font>(); foreach (Font val in array) { if ((Object)(object)val != (Object)null && ((Object)val).name == fontName) { fonts.Add(fontName, val); break; } } if (!fonts.TryGetValue(fontName, out Font value)) { return null; } return value; } } public class RectData { public Vector2 AnchorMax; public Vector2 AnchorMin; public Vector2 AnchorPivot; public Vector2 AnchorPosition; public Vector2 RectSizeDelta; public RectData(Vector2 sizeDelta, Vector2 anchorPosition) : this(sizeDelta, anchorPosition, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f)) { }//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) //IL_000d: 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_002b: Unknown result type (might be due to invalid IL or missing references) public RectData(Vector2 sizeDelta, Vector2 anchorPosition, Vector2 min, Vector2 max) : this(sizeDelta, anchorPosition, min, max, new Vector2(0.5f, 0.5f)) { }//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) //IL_0003: 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_0010: Unknown result type (might be due to invalid IL or missing references) public RectData(Vector2 sizeDelta, Vector2 anchorPosition, Vector2 min, Vector2 max, Vector2 pivot) { //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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0016: 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_001e: 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) //IL_0026: Unknown result type (might be due to invalid IL or missing references) RectSizeDelta = sizeDelta; AnchorPosition = anchorPosition; AnchorMin = min; AnchorMax = max; AnchorPivot = pivot; } } }