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 LC Extended HUD v1.0.1
LCExtendedHUD/LCExtendedHUD.dll
Decompiled 2 years agousing System; using System.Collections; using System.Diagnostics; using System.IO; 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.Logging; using HarmonyLib; using LCExtendedHUD.Utility; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("LCExtendedHUD")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Extended HUD adds few tweaks to the ingame HUD")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LCExtendedHUD")] [assembly: AssemblyTitle("LCExtendedHUD")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace LCExtendedHUD { [BepInPlugin("com.github.elishmel.lcextendedhud", "LC Extended HUD", "1.1")] public class ExtendedHUD : BaseUnityPlugin { public const string PLUGIN_GUID = "com.github.elishmel.lcextendedhud"; public const string PLUGIN_NAME = "LC Extended HUD"; public const string PLUGIN_VERSION = "1.1"; internal static ManualLogSource Log; private void Awake() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)"Plugin com.github.elishmel.lcextendedhud is loaded!"); new Harmony("com.github.elishmel.lcextendedhud").PatchAll(Assembly.GetExecutingAssembly()); } } public static class PluginInfo { public const string PLUGIN_GUID = "LCExtendedHUD"; public const string PLUGIN_NAME = "LCExtendedHUD"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace LCExtendedHUD.Utility { internal class ResourceLoader { private ResourceLoader() { } public static byte[] GetResourceFromCurrentAssemblyAsBytes(in string resouce) { if (resouce == null) { return null; } Assembly executingAssembly = Assembly.GetExecutingAssembly(); string text = executingAssembly.GetName().Name + "." + resouce; using Stream stream = executingAssembly.GetManifestResourceStream(text); if (stream == null) { ExtendedHUD.Log.LogError((object)("Unable to fetch resouce " + text + ".")); throw new ArgumentException("Resource " + text + " not found"); } using MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); return memoryStream.ToArray(); } } } namespace LCExtendedHUD.Patches { [HarmonyPatch] internal static class HUDPatches { private static GameObject _reticle; private static Image _reticleImage; private static GameObject _scrapCounter; private static TextMeshProUGUI _scrapTextMesh; private static GameObject _conductiveDisplay; private static TextMeshProUGUI _conductiveDisplayMesh; private const string NOT_CONDUCTIVE_TEXT = "not-conductive"; private const string CONDUCTIVE_TEXT = "conductive"; private const string CLEAR_TEXT = "clear"; private const string PROFIT_TEXT = "credits"; private const string RETICLE_TEXTURE_PATH = "Assets.circle.png"; private static Vector3 CREDIT_OFFSET => new Vector3(0f, -15f, 0f); private static Vector3 CONDUCTIVE_OFFSET => new Vector3(0f, -30f, 0f); [HarmonyPostfix] [HarmonyPatch(typeof(HUDManager), "Awake")] private static void buildHUDPatches(HUDManager __instance) { ((MonoBehaviour)__instance).StartCoroutine(awaitPlayerController()); drawReticle(); drawProfit(); drawConductive(); } [HarmonyPostfix] [HarmonyPatch(typeof(HUDManager), "Update")] private static void updateHUDPatches(HUDManager __instance) { updateReticle(); updateProfit(); updateConductive(); } private static void drawReticle() { //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_00a8: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("Systems/UI/Canvas/PlayerCursor/Cursor"); _reticle = Object.Instantiate<GameObject>(val.gameObject, val.transform.parent, false); ((Object)_reticle).name = "Reticle"; _reticleImage = _reticle.GetComponent<Image>(); Texture2D val2 = LoadTexture("Assets.circle.png"); Sprite sprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), Vector2.zero); _reticleImage.sprite = sprite; ((Behaviour)_reticleImage).enabled = true; _reticle.transform.localScale = new Vector3(-0.036f, -0.036f, 0.364f); } private static void updateReticle() { if (!((Object)(object)_reticle == (Object)null) && !((Object)(object)_reticleImage == (Object)null) && !((Object)(object)GameNetworkManager.Instance == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null)) { Image component = GameObject.Find("Systems/UI/Canvas/PlayerCursor/Cursor").GetComponent<Image>(); if ((GameNetworkManager.Instance.localPlayerController.isPlayerDead || ((Behaviour)component).enabled) && ((Behaviour)_reticleImage).enabled) { ((Behaviour)_reticleImage).enabled = false; } else if (!GameNetworkManager.Instance.localPlayerController.isPlayerDead && !((Behaviour)_reticleImage).enabled && !((Behaviour)component).enabled) { ((Behaviour)_reticleImage).enabled = true; } } } private static void drawProfit() { //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_0076: 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_007c: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("Systems/UI/Canvas/IngamePlayerHUD/TopLeftCorner/WeightUI"); if ((Object)(object)val == (Object)null) { return; } _scrapCounter = Object.Instantiate<GameObject>(val.gameObject, val.transform.parent, false); if (!Object.op_Implicit((Object)(object)_scrapCounter)) { ExtendedHUD.Log.LogError((object)"Unable to create scrap copy."); return; } ((Object)_scrapCounter).name = "Credit counter"; Vector3 localPosition = _scrapCounter.transform.localPosition; _scrapCounter.transform.localPosition = localPosition + CREDIT_OFFSET; _scrapTextMesh = _scrapCounter.GetComponentInChildren<TextMeshProUGUI>(); if (Object.op_Implicit((Object)(object)_scrapTextMesh)) { ((Object)_scrapTextMesh).name = "Credits"; ((TMP_Text)_scrapTextMesh).text = "0 credits"; } } private static void updateProfit() { if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && !GameNetworkManager.Instance.localPlayerController.isPlayerDead && !((Object)(object)_scrapTextMesh == (Object)null) && !((Object)(object)_scrapCounter == (Object)null) && GameNetworkManager.Instance.localPlayerController.ItemSlots != null && GameNetworkManager.Instance.localPlayerController.ItemSlots.Length != 0) { ((TMP_Text)_scrapTextMesh).text = string.Format("{0} {1}", GameNetworkManager.Instance.localPlayerController.ItemSlots.Where((GrabbableObject item) => (Object)(object)item != (Object)null && item.itemProperties.isScrap).Sum((GrabbableObject item) => item.scrapValue), "credits"); } } private static void drawConductive() { //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_0076: 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_007c: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("Systems/UI/Canvas/IngamePlayerHUD/TopLeftCorner/WeightUI"); if ((Object)(object)val == (Object)null) { return; } _conductiveDisplay = Object.Instantiate<GameObject>(val.gameObject, val.transform.parent, false); if (!Object.op_Implicit((Object)(object)_conductiveDisplay)) { ExtendedHUD.Log.LogError((object)"Unable to create conductive copy."); return; } ((Object)_conductiveDisplay).name = "Conductive display"; Vector3 localPosition = _conductiveDisplay.transform.localPosition; _conductiveDisplay.transform.localPosition = localPosition + CONDUCTIVE_OFFSET; _conductiveDisplayMesh = _conductiveDisplay.GetComponentInChildren<TextMeshProUGUI>(); ((Object)_conductiveDisplayMesh).name = "Conductive"; if (Object.op_Implicit((Object)(object)_conductiveDisplayMesh)) { ((TMP_Text)_conductiveDisplayMesh).text = "not-conductive"; } } private static void updateConductive() { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Invalid comparison between Unknown and I4 if ((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null || GameNetworkManager.Instance.localPlayerController.isPlayerDead || (Object)(object)_conductiveDisplayMesh == (Object)null || (Object)(object)_conductiveDisplay == (Object)null || GameNetworkManager.Instance.localPlayerController.ItemSlots == null || GameNetworkManager.Instance.localPlayerController.ItemSlots.Length == 0) { return; } if ((int)TimeOfDay.Instance.currentLevelWeather != 2) { ((TMP_Text)_conductiveDisplayMesh).text = "clear"; return; } ((TMP_Text)_conductiveDisplayMesh).text = ((GameNetworkManager.Instance.localPlayerController.ItemSlots.Count((GrabbableObject item) => (Object)(object)item != (Object)null && item.itemProperties.isConductiveMetal) > 0) ? "conductive" : "not-conductive"); } private static IEnumerator awaitPlayerController() { yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null)); } private static Texture2D LoadTexture(string resource) { //IL_000c: 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_0018: Expected O, but got Unknown //IL_001a: Expected O, but got Unknown byte[] resourceFromCurrentAssemblyAsBytes = ResourceLoader.GetResourceFromCurrentAssemblyAsBytes(in resource); Texture2D val = new Texture2D(25, 25); ImageConversion.LoadImage(val, resourceFromCurrentAssemblyAsBytes); return val; } } }