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 CommandItemCount v1.5.1
CommandItemCount.dll
Decompiled 5 months agousing System; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using On.RoR2.UI; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.UI; 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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("CommandItemCount")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f596f1901233011f9dd0de86c8b86f5d84727f0e")] [assembly: AssemblyProduct("CommandItemCount")] [assembly: AssemblyTitle("CommandItemCount")] [assembly: AssemblyVersion("1.0.0.0")] namespace CommandItemCount; public enum Position { TopRight, BottomRight, BottomLeft, TopLeft, Center } public enum Size { Small, Medium, Large } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("de.userstorm.commanditemcount", "CommandItemCount", "1.5.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class CommandItemCountPlugin : BaseUnityPlugin { public static ConfigEntry<bool> Show0 { get; set; } public static ConfigEntry<bool> ShowX { get; set; } public static ConfigEntry<Position> NumberPosition { get; set; } public static ConfigEntry<Size> NumberSize { get; set; } public static ConfigEntry<bool> EnableTooltip { get; set; } public static ConfigEntry<bool> EnableCloseDialogWithEscape { get; set; } public static ConfigEntry<bool> EnableCloseDialogWithWASD { get; set; } public static ConfigEntry<bool> EnableCloseDialogWithSpace { get; set; } public static ConfigEntry<bool> EnableCloseDialogWithShift { get; set; } private TextAlignmentOptions GetAlignment() { return (TextAlignmentOptions)(NumberPosition.Value switch { Position.TopRight => 260, Position.BottomRight => 1028, Position.BottomLeft => 1025, Position.TopLeft => 257, Position.Center => 514, _ => 260, }); } private Vector2 GetPosition() { //IL_0056: 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_0076: 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_0096: 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) //IL_00e0: 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) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0110: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0167: 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_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) switch (NumberSize.Value) { case Size.Small: switch (NumberPosition.Value) { case Position.TopRight: return new Vector2(-5f, -1.5f); case Position.BottomRight: return new Vector2(-5f, 1.5f); case Position.BottomLeft: return new Vector2(5f, 1.5f); case Position.TopLeft: return new Vector2(5f, -1.5f); case Position.Center: return new Vector2(0f, 0f); } break; case Size.Medium: switch (NumberPosition.Value) { case Position.TopRight: return new Vector2(-5f, 0.5f); case Position.BottomRight: return new Vector2(-5f, 0.5f); case Position.BottomLeft: return new Vector2(5f, 0.5f); case Position.TopLeft: return new Vector2(5f, 0.5f); case Position.Center: return new Vector2(0f, 0f); } break; case Size.Large: switch (NumberPosition.Value) { case Position.TopRight: return new Vector2(-5f, 2.5f); case Position.BottomRight: return new Vector2(-5f, -2f); case Position.BottomLeft: return new Vector2(5f, -2f); case Position.TopLeft: return new Vector2(5f, 2.5f); case Position.Center: return new Vector2(0f, 0f); } break; } return new Vector2(-5f, -1.5f); } private float GetSize() { return NumberSize.Value switch { Size.Small => 18f, Size.Medium => 30f, Size.Large => 42f, _ => 18f, }; } private void CreateNumberLabel(Transform parent, ItemIndex itemIndex, int count) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected I4, but got Unknown //IL_003e: 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_004f: 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_0099: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) string text = $"TextContainer_{(int)itemIndex}"; Transform val = parent.Find(text); if ((Object)(object)val != (Object)null) { Object.Destroy((Object)(object)((Component)val).gameObject); } if (Show0.Value || count != 0) { GameObject val2 = new GameObject(text); val2.transform.parent = parent; val2.AddComponent<CanvasRenderer>(); RectTransform val3 = val2.AddComponent<RectTransform>(); HGTextMeshProUGUI obj = val2.AddComponent<HGTextMeshProUGUI>(); ((TMP_Text)obj).text = (ShowX.Value ? "x" : "") + count; ((TMP_Text)obj).fontSize = GetSize(); ((Graphic)obj).color = Color.white; ((TMP_Text)obj).alignment = GetAlignment(); ((TMP_Text)obj).enableWordWrapping = false; ((Transform)val3).localPosition = Vector2.op_Implicit(Vector2.zero); val3.anchorMin = Vector2.zero; val3.anchorMax = Vector2.one; ((Transform)val3).localScale = Vector3.one; val3.sizeDelta = Vector2.zero; val3.anchoredPosition = GetPosition(); } } private void CreateTooltip(Transform parent, PickupDef pickupDefinition, int count) { //IL_0001: 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_0022: 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) //IL_0030: 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) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) ItemDef itemDef = ItemCatalog.GetItemDef(pickupDefinition.itemIndex); EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDefinition.equipmentIndex); bool flag = (Object)(object)itemDef != (Object)null; TooltipContent val = default(TooltipContent); val.titleColor = pickupDefinition.darkColor; val.titleToken = (flag ? itemDef.nameToken : equipmentDef.nameToken); val.bodyToken = (flag ? itemDef.descriptionToken : equipmentDef.descriptionToken); TooltipContent content = val; ((Component)parent).gameObject.AddComponent<TooltipProvider>().SetContent(content); } private void SetPickupOptionsHook(orig_SetPickupOptions orig, PickupPickerPanel self, Option[] options) { //IL_0055: 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_0068: 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) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, options); if (options.Length < 1) { return; } ReadOnlyCollection<MPButton> elements = Reflection.GetFieldValue<UIElementAllocator<MPButton>>((object)self, "buttonAllocator").elements; Inventory inventory = LocalUserManager.GetFirstLocalUser().cachedMasterController.master.inventory; for (int i = 0; i < options.Length; i++) { Transform transform = ((Component)elements[i]).transform; PickupDef pickupDef = PickupCatalog.GetPickupDef(options[i].pickup.pickupIndex); ItemIndex itemIndex = pickupDef.itemIndex; int count = ((!((object)(ItemIndex)(ref itemIndex)).Equals((object)(ItemIndex)(-1))) ? inventory.GetItemCountEffective(itemIndex) : 0); if (((object)(EquipmentIndex)(ref pickupDef.equipmentIndex)).Equals((object)(EquipmentIndex)(-1))) { CreateNumberLabel(transform, itemIndex, count); } if (EnableTooltip.Value) { CreateTooltip(transform, pickupDef, count); } } } private void HandleClosePickupPickerPanel() { if ((!EnableCloseDialogWithEscape.Value || !Input.GetKeyDown((KeyCode)27)) && (!EnableCloseDialogWithWASD.Value || !Input.GetKeyDown((KeyCode)119)) && (!EnableCloseDialogWithWASD.Value || !Input.GetKeyDown((KeyCode)97)) && (!EnableCloseDialogWithWASD.Value || !Input.GetKeyDown((KeyCode)115)) && (!EnableCloseDialogWithWASD.Value || !Input.GetKeyDown((KeyCode)100)) && (!EnableCloseDialogWithSpace.Value || !Input.GetKeyDown((KeyCode)32)) && (!EnableCloseDialogWithShift.Value || !Input.GetKeyDown((KeyCode)304))) { return; } PickupPickerPanel[] array = Object.FindObjectsOfType(typeof(PickupPickerPanel)) as PickupPickerPanel[]; if (array.Length != 0) { PickupPickerPanel[] array2 = array; for (int i = 0; i < array2.Length; i++) { Object.Destroy((Object)(object)((Component)array2[i]).gameObject); } if (Input.GetKeyDown((KeyCode)27)) { Console.instance.SubmitCmd((NetworkUser)null, "pause", false); } } } private void InitConfig() { Show0 = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "Show0", true, "Display '0' or 'x0' if item count is 0"); ShowX = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "ShowX", true, "Display the 'x' in front of the number"); NumberPosition = ((BaseUnityPlugin)this).Config.Bind<Position>("Settings", "NumberPosition", Position.TopRight, "Number Position"); NumberSize = ((BaseUnityPlugin)this).Config.Bind<Size>("Settings", "NumberSize", Size.Small, "Number Size"); EnableTooltip = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EnableTooltip", true, "Show Item/Equipment Tooltip"); EnableCloseDialogWithEscape = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EnableCloseDialogWithEscape", true, "Closes the item picker dialog when Esc is pressed"); EnableCloseDialogWithWASD = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EnableCloseDialogWithWASD", true, "Closes the item picker dialog when W, A, S or D is pressed"); EnableCloseDialogWithSpace = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EnableCloseDialogWithSpace", true, "Closes the item picker dialog when Space is pressed"); EnableCloseDialogWithShift = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EnableCloseDialogWithShift", true, "Closes the item picker dialog when Shift is pressed"); if (RiskOfOptionsMod.enabled) { RiskOfOptionsMod.Init("This mod shows the current item counts in the item selection dialog of the Artifact of Command and the Scrapper."); RiskOfOptionsMod.AddCheckboxOption(Show0); RiskOfOptionsMod.AddCheckboxOption(ShowX); RiskOfOptionsMod.AddChoiceOption<Position>(NumberPosition); RiskOfOptionsMod.AddChoiceOption<Size>(NumberSize); RiskOfOptionsMod.AddCheckboxOption(EnableTooltip); RiskOfOptionsMod.AddCheckboxOption(EnableCloseDialogWithEscape); RiskOfOptionsMod.AddCheckboxOption(EnableCloseDialogWithWASD); RiskOfOptionsMod.AddCheckboxOption(EnableCloseDialogWithSpace); RiskOfOptionsMod.AddCheckboxOption(EnableCloseDialogWithShift); } } public void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown InitConfig(); PickupPickerPanel.SetPickupOptions += new hook_SetPickupOptions(SetPickupOptionsHook); } public void Update() { HandleClosePickupPickerPanel(); } public void OnDestroy() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown PickupPickerPanel.SetPickupOptions -= new hook_SetPickupOptions(SetPickupOptionsHook); } } internal static class RiskOfOptionsMod { private static bool? _enabled; internal static bool enabled { get { if (!_enabled.HasValue) { _enabled = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); } return _enabled.Value; } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void Init(string description) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //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) ModSettingsManager.SetModDescription(description); using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("icon"); Texture2D val = new Texture2D(0, 0); byte[] array = new byte[stream.Length]; stream.Read(array, 0, (int)stream.Length); if (ImageConversion.LoadImage(val, array)) { ModSettingsManager.SetModIcon(Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f))); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void AddCheckboxOption(ConfigEntry<bool> configEntry) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(configEntry)); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void AddStepSliderOption(ConfigEntry<float> configEntry, float min, float max, float step) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown StepSliderConfig val = new StepSliderConfig(); ((SliderConfig)val).min = min; ((SliderConfig)val).max = max; val.increment = step; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(configEntry, val)); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void AddChoiceOption<T>(ConfigEntry<T> configEntry) where T : Enum { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)configEntry)); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void AddKeyBindOption(ConfigEntry<KeyboardShortcut> configEntry) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new KeyBindOption(configEntry)); } }