From ff2f44fd64cbf62a835cfbfc0c80e5559ae3a447 Mon Sep 17 00:00:00 2001 From: XtraCube <72575280+XtraCube@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:49:15 -0400 Subject: [PATCH] code style stuff and merge --- .../Buttons/Teleporter/TeleportButton.cs | 9 ++-- .../Cosmetics/ExampleCosmeticGroup.cs | 8 +--- .../Options/Roles/FreezerRoleSettings.cs | 4 +- MiraAPI.Example/Roles/ChameleonRole.cs | 9 ++-- MiraAPI/Cosmetics/AbstractCosmeticsGroup.cs | 16 +++---- .../AbstractCosmeticsGroupComparer.cs | 17 +++++-- MiraAPI/Cosmetics/CosmeticComparer.cs | 44 +++++++++++------- MiraAPI/Cosmetics/CosmeticGroupSingleton.cs | 32 ++++++------- MiraAPI/Cosmetics/CustomCosmeticManager.cs | 45 ++++++++++--------- .../RegisterCustomCosmeticAttribute.cs | 10 ++--- MiraAPI/Cosmetics/VanillaCosmeticsGroup.cs | 30 ++++++++----- MiraAPI/GameModes/CustomGameModeManager.cs | 8 ++-- .../Attributes/ModdedEnumOptionAttribute.cs | 4 +- .../Attributes/ModdedNumberOptionAttribute.cs | 6 +-- .../Attributes/ModdedToggleOptionAttribute.cs | 4 +- .../OptionTypes/ModdedNumberOption.cs | 4 +- .../GameOptions/OptionTypes/ModdedOption.cs | 16 +++++-- .../OptionTypes/ModdedToggleOption.cs | 4 +- MiraAPI/Modifiers/ModifierManager.cs | 1 - .../Patches/Colors/ScrollingColorsPatch.cs | 2 +- MiraAPI/Patches/Cosmetics/HatsTabPatch.cs | 23 +++++----- .../Cosmetics/InventoryManagerPatch.cs | 5 --- .../Patches/Cosmetics/NameplatesTabPatch.cs | 38 ++++++++-------- MiraAPI/Patches/Cosmetics/SkinsTabPatch.cs | 41 ++++++++--------- MiraAPI/Patches/Cosmetics/VisorsTabPatch.cs | 42 +++++++++-------- MiraAPI/Patches/Hud/ButtonResetPatches.cs | 2 +- MiraAPI/Patches/HudManagerPatches.cs | 1 - .../Patches/Options/GameOptionsMenuPatch.cs | 4 +- .../Patches/Options/GameSettingMenuPatches.cs | 6 +-- .../Patches/Options/LobbyViewPanePatches.cs | 8 ++-- .../Options/NotificationPopperPatch.cs | 16 ++++--- .../Patches/Options/RoleSettingMenuPatches.cs | 6 +-- MiraAPI/Patches/PlayerControlPatches.cs | 1 + MiraAPI/Patches/Roles/GameStartupPatch.cs | 2 +- MiraAPI/Patches/Roles/NameTagPatch.cs | 2 +- MiraAPI/Patches/Roles/RoleBehaviourPatches.cs | 2 +- MiraAPI/Patches/Roles/RoleManagerPatches.cs | 4 +- .../Roles/RoleOptionsCollectionPatch.cs | 4 +- MiraAPI/Patches/Roles/SabotageButtonPatch.cs | 2 +- MiraAPI/Patches/Roles/TaskAdderPatch.cs | 8 ++-- MiraAPI/PluginLoading/MiraPluginInfo.cs | 10 ++--- MiraAPI/PluginLoading/MiraPluginManager.cs | 6 +-- MiraAPI/Roles/CustomRoleConfiguration.cs | 6 ++- MiraAPI/Roles/CustomRoleManager.cs | 8 ++-- MiraAPI/Roles/CustomRoleSingleton.cs | 2 +- MiraAPI/Roles/ICustomRole.cs | 6 +-- .../Utilities/Assets/Addressable/Catalog.cs | 9 ++-- .../Assets/Addressable/CatalogTools.cs | 21 +++++---- .../WaitForAsyncOperationHandleFinish.cs | 9 ++-- .../Assets/LoadableAddressableAsset.cs | 16 +++---- .../Assets/LoadableAddressablesGroupAsset.cs | 15 ++++--- MiraAPI/Utilities/Helpers.cs | 4 +- 52 files changed, 312 insertions(+), 290 deletions(-) diff --git a/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs b/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs index 3a8d810..b60f054 100644 --- a/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs +++ b/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs @@ -1,10 +1,10 @@ -using MiraAPI.Example.Options.Roles; +using System.Collections; +using MiraAPI.Example.Options.Roles; using MiraAPI.Example.Roles; using MiraAPI.GameOptions; using MiraAPI.Hud; using MiraAPI.Utilities.Assets; using Reactor.Utilities; -using System.Collections; using UnityEngine; namespace MiraAPI.Example.Buttons.Teleporter; @@ -40,7 +40,10 @@ public class TeleportButton : CustomActionButton { base.FixedUpdate(playerControl); - if (!EffectActive) return; + if (!EffectActive) + { + return; + } if (Input.GetKey(KeyCode.Mouse0)) { diff --git a/MiraAPI.Example/Cosmetics/ExampleCosmeticGroup.cs b/MiraAPI.Example/Cosmetics/ExampleCosmeticGroup.cs index 5629b54..ef0b87f 100644 --- a/MiraAPI.Example/Cosmetics/ExampleCosmeticGroup.cs +++ b/MiraAPI.Example/Cosmetics/ExampleCosmeticGroup.cs @@ -1,9 +1,5 @@ -using MiraAPI.Cosmetics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; +using MiraAPI.Cosmetics; namespace MiraAPI.Example.Cosmetics; public class ExampleCosmeticGroup : AbstractCosmeticsGroup diff --git a/MiraAPI.Example/Options/Roles/FreezerRoleSettings.cs b/MiraAPI.Example/Options/Roles/FreezerRoleSettings.cs index 0e26665..a99c9e0 100644 --- a/MiraAPI.Example/Options/Roles/FreezerRoleSettings.cs +++ b/MiraAPI.Example/Options/Roles/FreezerRoleSettings.cs @@ -1,7 +1,7 @@ -using MiraAPI.Example.Roles; +using System; +using MiraAPI.Example.Roles; using MiraAPI.GameOptions; using MiraAPI.GameOptions.Attributes; -using System; using MiraAPI.Utilities; namespace MiraAPI.Example.Options.Roles; diff --git a/MiraAPI.Example/Roles/ChameleonRole.cs b/MiraAPI.Example/Roles/ChameleonRole.cs index e3eb6c4..46f385e 100644 --- a/MiraAPI.Example/Roles/ChameleonRole.cs +++ b/MiraAPI.Example/Roles/ChameleonRole.cs @@ -1,5 +1,4 @@ using MiraAPI.Roles; -using TMPro; using UnityEngine; namespace MiraAPI.Example.Roles; @@ -22,8 +21,8 @@ public class ChameloenRole : CrewmateRole, ICustomRole { if (playerControl.MyPhysics.Velocity.magnitude > 0) { - SpriteRenderer rend = playerControl.cosmetics.currentBodySprite.BodySprite; - TextMeshPro tmp = playerControl.cosmetics.nameText; + var rend = playerControl.cosmetics.currentBodySprite.BodySprite; + var tmp = playerControl.cosmetics.nameText; tmp.color = Color.Lerp(tmp.color, new Color(tmp.color.r, tmp.color.g, tmp.color.b, 1), Time.deltaTime * 4f); rend.color = Color.Lerp(rend.color, new Color(1, 1, 1, 1), Time.deltaTime * 4f); @@ -34,8 +33,8 @@ public class ChameloenRole : CrewmateRole, ICustomRole } else { - SpriteRenderer rend = playerControl.cosmetics.currentBodySprite.BodySprite; - TextMeshPro tmp = playerControl.cosmetics.nameText; + var rend = playerControl.cosmetics.currentBodySprite.BodySprite; + var tmp = playerControl.cosmetics.nameText; tmp.color = Color.Lerp(tmp.color, new Color(tmp.color.r, tmp.color.g, tmp.color.b, playerControl.AmOwner ? 0.3f : 0), Time.deltaTime * 4f); rend.color = Color.Lerp(rend.color, new Color(1, 1, 1, playerControl.AmOwner ? 0.3f : 0), Time.deltaTime * 4f); diff --git a/MiraAPI/Cosmetics/AbstractCosmeticsGroup.cs b/MiraAPI/Cosmetics/AbstractCosmeticsGroup.cs index a18be22..faaa132 100644 --- a/MiraAPI/Cosmetics/AbstractCosmeticsGroup.cs +++ b/MiraAPI/Cosmetics/AbstractCosmeticsGroup.cs @@ -10,24 +10,24 @@ public abstract class AbstractCosmeticsGroup public List Nameplates { get; } = []; /// - /// The name of the group. Visible in options menu. + /// Gets the name of the group. Visible in options menu. /// public abstract string GroupName { get; } /// - /// A function that returns whether the group should be visible or not. + /// Gets a function that determines whether the group should be visible or not. /// public virtual Func GroupVisible => () => true; /// - /// The sorting mode of individual hats within this group. + /// Gets the sorting mode of individual hats within this group. /// - public virtual SortingMode SortingMode { get; } = SortingMode.AlphabeticName; - + public virtual SortingMode SortingMode => SortingMode.AlphabeticName; + /// - /// The priority of a group for sorting groups. + /// Gets the priority of a group for sorting groups. /// - public virtual int SortingPriority { get; } = 0; + public virtual int SortingPriority { get; } } public enum SortingMode @@ -36,4 +36,4 @@ public enum SortingMode AlphabeticProductId, AlphabeticStoreName, AlphabeticName, -} \ No newline at end of file +} diff --git a/MiraAPI/Cosmetics/AbstractCosmeticsGroupComparer.cs b/MiraAPI/Cosmetics/AbstractCosmeticsGroupComparer.cs index cec8967..5fc7d7d 100644 --- a/MiraAPI/Cosmetics/AbstractCosmeticsGroupComparer.cs +++ b/MiraAPI/Cosmetics/AbstractCosmeticsGroupComparer.cs @@ -2,12 +2,21 @@ using System.Collections.Generic; namespace MiraAPI.Cosmetics; -internal class AbstractCosmeticsGroupComparer : Comparer +internal sealed class AbstractCosmeticsGroupComparer : Comparer { - public override int Compare(AbstractCosmeticsGroup x, AbstractCosmeticsGroup y) + public override int Compare(AbstractCosmeticsGroup? x, AbstractCosmeticsGroup? y) { + switch (x) + { + case not null when y is null: + return 1; + case null when y is null: + return 0; + case null: + return -1; + } + var p = x.SortingPriority - y.SortingPriority; - if (p == 0) return StringComparer.InvariantCultureIgnoreCase.Compare(x.GroupName, y.GroupName); - return p; + return p == 0 ? StringComparer.InvariantCultureIgnoreCase.Compare(x.GroupName, y.GroupName) : p; } } diff --git a/MiraAPI/Cosmetics/CosmeticComparer.cs b/MiraAPI/Cosmetics/CosmeticComparer.cs index 18b1990..401ccb0 100644 --- a/MiraAPI/Cosmetics/CosmeticComparer.cs +++ b/MiraAPI/Cosmetics/CosmeticComparer.cs @@ -3,26 +3,36 @@ using System.Collections.Generic; using System.Linq; namespace MiraAPI.Cosmetics; -internal class CosmeticComparer(AbstractCosmeticsGroup group) : Comparer +internal sealed class CosmeticComparer(AbstractCosmeticsGroup group) : Comparer { - internal static readonly string[] noCosmetics = ["hat_NoHat", "skin_None", "nameplate_NoPlate", "visor_EmptyVisor"]; - public override int Compare(CosmeticData x, CosmeticData y) + internal static readonly string[] NoCosmetics = ["hat_NoHat", "skin_None", "nameplate_NoPlate", "visor_EmptyVisor"]; + public override int Compare(CosmeticData? x, CosmeticData? y) { - if (noCosmetics.Contains(x.ProdId)) return -1; - if (noCosmetics.Contains(y.ProdId)) return 1; - switch (group.SortingMode) + if (NoCosmetics.Contains(x?.ProdId)) { - default: - case SortingMode.AlphabeticName: - return StringComparer.InvariantCultureIgnoreCase.Compare(x.GetItemName(), y.GetItemName()); - case SortingMode.AlphabeticProductId: - return StringComparer.InvariantCultureIgnoreCase.Compare(x.ProductId, y.ProductId); - case SortingMode.Priority: - return CustomCosmeticManager._cosmeticToPriority[x] - CustomCosmeticManager._cosmeticToPriority[y]; - case SortingMode.AlphabeticStoreName: - if (x is HatData h1 && y is HatData h2) return StringComparer.InvariantCultureIgnoreCase.Compare(h1.StoreName, h2.StoreName); - if (x is SkinData s1 && y is SkinData s2) return StringComparer.InvariantCultureIgnoreCase.Compare(s1.StoreName, s2.StoreName); - goto case SortingMode.AlphabeticName; + return -1; } + + if (NoCosmetics.Contains(y?.ProdId)) + { + return 1; + } + + return group.SortingMode switch + { + SortingMode.AlphabeticProductId => StringComparer.InvariantCultureIgnoreCase.Compare(x?.ProductId, y?.ProductId), + SortingMode.Priority => CustomCosmeticManager.CosmeticToPriority[x!] - CustomCosmeticManager.CosmeticToPriority[y!], + SortingMode.AlphabeticStoreName => x switch + { + HatData h1 when y is HatData h2 => StringComparer.InvariantCultureIgnoreCase.Compare( + h1.StoreName, + h2.StoreName), + SkinData s1 when y is SkinData s2 => StringComparer.InvariantCultureIgnoreCase.Compare( + s1.StoreName, + s2.StoreName), + _ => StringComparer.InvariantCultureIgnoreCase.Compare(x?.GetItemName(), y?.GetItemName()), + }, + _ => StringComparer.InvariantCultureIgnoreCase.Compare(x?.GetItemName(), y?.GetItemName()), + }; } } diff --git a/MiraAPI/Cosmetics/CosmeticGroupSingleton.cs b/MiraAPI/Cosmetics/CosmeticGroupSingleton.cs index 5a41ed8..5abfaea 100644 --- a/MiraAPI/Cosmetics/CosmeticGroupSingleton.cs +++ b/MiraAPI/Cosmetics/CosmeticGroupSingleton.cs @@ -1,23 +1,19 @@ -using System; -using System.Linq; +using System.Linq; namespace MiraAPI.Cosmetics; -public class CosmeticGroupSingleton where T : AbstractCosmeticsGroup +/// +/// Used to get access to a CosmeticGroup. +/// +/// The type. +public static class CosmeticGroupSingleton where T : AbstractCosmeticsGroup { - private static T _instance; + private static T? _instance; - public static T Instance - { - get => _instance ??= CustomCosmeticManager.Groups.OfType().Single(); - set - { - if (_instance != null) - { - throw new InvalidOperationException($"Instance for {typeof(T)} is already set"); - } - - _instance = value; - } - } -} \ No newline at end of file + /// + /// Gets instance of the cosmetic group. + /// +#pragma warning disable CA1000 + public static T Instance => _instance ??= CustomCosmeticManager.Groups.OfType().Single(); +#pragma warning restore CA1000 +} diff --git a/MiraAPI/Cosmetics/CustomCosmeticManager.cs b/MiraAPI/Cosmetics/CustomCosmeticManager.cs index 354a076..dd61ba4 100644 --- a/MiraAPI/Cosmetics/CustomCosmeticManager.cs +++ b/MiraAPI/Cosmetics/CustomCosmeticManager.cs @@ -1,19 +1,19 @@ -using HarmonyLib; -using MiraAPI.PluginLoading; -using MonoMod.Utils; -using Reactor.Utilities; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; +using HarmonyLib; +using MiraAPI.PluginLoading; +using MonoMod.Utils; +using Reactor.Utilities; namespace MiraAPI.Cosmetics; public static class CustomCosmeticManager { - private static readonly Dictionary OptionAttributes = new(); - private static readonly Dictionary TypeToGroup = new(); - internal static readonly Dictionary _cosmeticToPriority = new(); - internal static readonly Dictionary _cosmeticToGroup = new(); + private static readonly Dictionary OptionAttributes = []; + private static readonly Dictionary TypeToGroup = []; + internal static readonly Dictionary CosmeticToPriority = []; + internal static readonly Dictionary CosmeticToGroup = []; internal static readonly List Groups = []; @@ -67,14 +67,13 @@ public static class CustomCosmeticManager { Logger.Error($"Failed to get group for {type.Name}"); return; - } + } OptionAttributes.Add(property, attribute); } internal static void LoadCosmetic(PropertyInfo property, RegisterCustomCosmeticAttribute attribute) { - if (!TypeToGroup.TryGetValue(property.DeclaringType, out var group)) { Logger.Error($"Failed to get group for {property.DeclaringType.Name}"); @@ -103,22 +102,26 @@ public static class CustomCosmeticManager return; } - _cosmeticToPriority.AddRange(((IEnumerable)property.GetValue(group)).ToDictionary(y => y, x => attribute.Priority)); - _cosmeticToGroup.AddRange(((IEnumerable)property.GetValue(group)).ToDictionary(y => y, x => group)); + CosmeticToPriority.AddRange(((IEnumerable)property.GetValue(group)).ToDictionary(y => y, x => attribute.Priority)); + CosmeticToGroup.AddRange(((IEnumerable)property.GetValue(group)).ToDictionary(y => y, x => group)); } internal static bool Registered { get; set; } internal static void LoadAll() { CosmeticGroupSingleton.Instance.runtimeRegister(); - if (Registered || !CosmeticGroupSingleton.Instance.registered) return; + if (Registered || !CosmeticGroupSingleton.Instance.registered) + { + return; + } + Registered = true; - _cosmeticToPriority.AddRange(CosmeticGroupSingleton.Instance.Cosmetics.ToDictionary(y => y, x => 0)); - _cosmeticToGroup.AddRange(CosmeticGroupSingleton.Instance.Cosmetics.ToDictionary(y => y, x => CosmeticGroupSingleton.Instance)); - OptionAttributes.Do(x => LoadCosmetic(x.Key,x.Value)); - DestroyableSingleton.Instance.allHats = _cosmeticToGroup.Keys.Where(x=>x is HatData).Select(x=>(HatData)x).ToArray(); - DestroyableSingleton.Instance.allVisors = _cosmeticToGroup.Keys.Where(x=>x is VisorData).Select(x => (VisorData)x).ToArray(); - DestroyableSingleton.Instance.allSkins = _cosmeticToGroup.Keys.Where(x=>x is SkinData).Select(x => (SkinData)x).ToArray(); - DestroyableSingleton.Instance.allNamePlates = _cosmeticToGroup.Keys.Where(x=>x is NamePlateData).Select(x => (NamePlateData)x).ToArray(); + CosmeticToPriority.AddRange(CosmeticGroupSingleton.Instance.Cosmetics.ToDictionary(y => y, x => 0)); + CosmeticToGroup.AddRange(CosmeticGroupSingleton.Instance.Cosmetics.ToDictionary(y => y, x => CosmeticGroupSingleton.Instance)); + OptionAttributes.Do(x => LoadCosmetic(x.Key, x.Value)); + DestroyableSingleton.Instance.allHats = CosmeticToGroup.Keys.OfType().ToArray(); + DestroyableSingleton.Instance.allVisors = CosmeticToGroup.Keys.OfType().ToArray(); + DestroyableSingleton.Instance.allSkins = CosmeticToGroup.Keys.OfType().ToArray(); + DestroyableSingleton.Instance.allNamePlates = CosmeticToGroup.Keys.OfType().ToArray(); } } diff --git a/MiraAPI/Cosmetics/RegisterCustomCosmeticAttribute.cs b/MiraAPI/Cosmetics/RegisterCustomCosmeticAttribute.cs index 9629ec4..6605895 100644 --- a/MiraAPI/Cosmetics/RegisterCustomCosmeticAttribute.cs +++ b/MiraAPI/Cosmetics/RegisterCustomCosmeticAttribute.cs @@ -3,11 +3,7 @@ namespace MiraAPI.Cosmetics; [AttributeUsage(AttributeTargets.Property)] -public class RegisterCustomCosmeticAttribute : Attribute +public class RegisterCustomCosmeticAttribute(int priority = 0) : Attribute { - public int Priority { get; } = 0; - public RegisterCustomCosmeticAttribute(int priority=0) - { - Priority = priority; - } -} \ No newline at end of file + public int Priority { get; } = priority; +} diff --git a/MiraAPI/Cosmetics/VanillaCosmeticsGroup.cs b/MiraAPI/Cosmetics/VanillaCosmeticsGroup.cs index 5ee1034..3b148c8 100644 --- a/MiraAPI/Cosmetics/VanillaCosmeticsGroup.cs +++ b/MiraAPI/Cosmetics/VanillaCosmeticsGroup.cs @@ -3,21 +3,29 @@ namespace MiraAPI.Cosmetics; public class VanillaCosmeticsGroup : AbstractCosmeticsGroup { - public override string GroupName { get; } = "Vanilla"; - internal HatData[] VanillaHats { get { return DestroyableSingleton.Instance.allHats; } } - internal VisorData[] VanillaVisors { get { return DestroyableSingleton.Instance.allVisors; } } - internal SkinData[] VanillaSkins { get { return DestroyableSingleton.Instance.allSkins; } } - internal NamePlateData[] VanillaNameplates { get { return DestroyableSingleton.Instance.allNamePlates; } } + public override string GroupName => "Vanilla"; + internal static HatData[] VanillaHats => DestroyableSingleton.Instance.allHats; + internal static VisorData[] VanillaVisors => DestroyableSingleton.Instance.allVisors; + internal static SkinData[] VanillaSkins => DestroyableSingleton.Instance.allSkins; + internal static NamePlateData[] VanillaNameplates => DestroyableSingleton.Instance.allNamePlates; - internal readonly List Cosmetics = new(); + internal List Cosmetics { get; } = []; internal bool registered { get; set; } internal bool runtimeRegister() { - if (registered) return true; - if (!DestroyableSingleton.InstanceExists || VanillaHats.Length == 0 - || VanillaVisors.Length == 0 || VanillaSkins.Length == 0 - || VanillaNameplates.Length == 0) return false; + if (registered) + { + return true; + } + + if (!DestroyableSingleton.InstanceExists || VanillaHats.Length == 0 + || VanillaVisors.Length == 0 || VanillaSkins.Length == 0 + || VanillaNameplates.Length == 0) + { + return false; + } + registered = true; Hats.AddRange(VanillaHats); Visors.AddRange(VanillaVisors); @@ -29,4 +37,4 @@ public class VanillaCosmeticsGroup : AbstractCosmeticsGroup Cosmetics.AddRange(Nameplates); return true; } -} \ No newline at end of file +} diff --git a/MiraAPI/GameModes/CustomGameModeManager.cs b/MiraAPI/GameModes/CustomGameModeManager.cs index 388eb5d..565dc2c 100644 --- a/MiraAPI/GameModes/CustomGameModeManager.cs +++ b/MiraAPI/GameModes/CustomGameModeManager.cs @@ -1,7 +1,7 @@ -using Reactor.Utilities; -using System; +using System; using System.Collections.Generic; using System.Linq; +using Reactor.Utilities; namespace MiraAPI.GameModes; @@ -21,7 +21,7 @@ public static class CustomGameModeManager } /// - /// Current gamemode. + /// Gets current gamemode. /// public static CustomGameMode? ActiveMode { get; internal set; } = new DefaultMode(); @@ -29,7 +29,7 @@ public static class CustomGameModeManager /// Set current gamemode. /// /// gamemode ID. - public static void SetGameMode(int id) + internal static void SetGameMode(int id) { if (GameModes.TryGetValue(id, out var gameMode)) { diff --git a/MiraAPI/GameOptions/Attributes/ModdedEnumOptionAttribute.cs b/MiraAPI/GameOptions/Attributes/ModdedEnumOptionAttribute.cs index 2944520..f85939e 100644 --- a/MiraAPI/GameOptions/Attributes/ModdedEnumOptionAttribute.cs +++ b/MiraAPI/GameOptions/Attributes/ModdedEnumOptionAttribute.cs @@ -1,6 +1,6 @@ -using MiraAPI.GameOptions.OptionTypes; -using System; +using System; using System.Reflection; +using MiraAPI.GameOptions.OptionTypes; namespace MiraAPI.GameOptions.Attributes; diff --git a/MiraAPI/GameOptions/Attributes/ModdedNumberOptionAttribute.cs b/MiraAPI/GameOptions/Attributes/ModdedNumberOptionAttribute.cs index 2bd4438..6e6e194 100644 --- a/MiraAPI/GameOptions/Attributes/ModdedNumberOptionAttribute.cs +++ b/MiraAPI/GameOptions/Attributes/ModdedNumberOptionAttribute.cs @@ -1,7 +1,7 @@ -using MiraAPI.GameOptions.OptionTypes; -using MiraAPI.Utilities; -using System; +using System; using System.Reflection; +using MiraAPI.GameOptions.OptionTypes; +using MiraAPI.Utilities; namespace MiraAPI.GameOptions.Attributes; diff --git a/MiraAPI/GameOptions/Attributes/ModdedToggleOptionAttribute.cs b/MiraAPI/GameOptions/Attributes/ModdedToggleOptionAttribute.cs index c389292..d44a7c0 100644 --- a/MiraAPI/GameOptions/Attributes/ModdedToggleOptionAttribute.cs +++ b/MiraAPI/GameOptions/Attributes/ModdedToggleOptionAttribute.cs @@ -1,6 +1,6 @@ -using MiraAPI.GameOptions.OptionTypes; -using System; +using System; using System.Reflection; +using MiraAPI.GameOptions.OptionTypes; namespace MiraAPI.GameOptions.Attributes; diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs index e86d88d..acd9218 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs @@ -1,7 +1,7 @@ -using AmongUs.GameOptions; +using System; +using AmongUs.GameOptions; using MiraAPI.Networking; using MiraAPI.Utilities; -using System; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs index d811f1d..61fac57 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs @@ -1,10 +1,10 @@ -using BepInEx.Configuration; +using System; +using BepInEx.Configuration; using MiraAPI.Networking; using MiraAPI.PluginLoading; using MiraAPI.Roles; using Reactor.Localization.Utilities; using Reactor.Networking.Rpc; -using System; using UnityEngine; namespace MiraAPI.GameOptions.OptionTypes; @@ -45,7 +45,11 @@ public abstract class ModdedOption : IModdedOption get => _parentMod; set { - if (_parentMod != null || value == null) return; + if (_parentMod != null || value == null) + { + return; + } + _parentMod = value; var entry = _parentMod.GetConfigFile().Bind(ConfigDefinition, DefaultValue); Value = entry.Value; @@ -90,7 +94,11 @@ public abstract class ModdedOption : IModdedOption get => _configDefinition; set { - if (_configDefinition is not null) return; + if (_configDefinition is not null) + { + return; + } + _configDefinition = value; } } diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs index 12f8f5f..1773512 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs @@ -1,5 +1,5 @@ -using MiraAPI.Networking; -using System; +using System; +using MiraAPI.Networking; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/Modifiers/ModifierManager.cs b/MiraAPI/Modifiers/ModifierManager.cs index 819f289..773da63 100644 --- a/MiraAPI/Modifiers/ModifierManager.cs +++ b/MiraAPI/Modifiers/ModifierManager.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using MiraAPI.Modifiers.Types; using MiraAPI.Networking; -using MiraAPI.PluginLoading; using MiraAPI.Roles; using MiraAPI.Utilities; using Reactor.Networking.Rpc; diff --git a/MiraAPI/Patches/Colors/ScrollingColorsPatch.cs b/MiraAPI/Patches/Colors/ScrollingColorsPatch.cs index e89de23..0c71dc6 100644 --- a/MiraAPI/Patches/Colors/ScrollingColorsPatch.cs +++ b/MiraAPI/Patches/Colors/ScrollingColorsPatch.cs @@ -11,7 +11,7 @@ public static class ScrollingColorsPatch private static BoxCollider2D? _collider; /// - /// Add scrolling to the colors tab + /// Add scrolling to the colors tab. /// [HarmonyPostfix, HarmonyPatch("OnEnable")] public static void AddScrollingToColorsTabPatch(PlayerTab __instance) diff --git a/MiraAPI/Patches/Cosmetics/HatsTabPatch.cs b/MiraAPI/Patches/Cosmetics/HatsTabPatch.cs index d242e18..4830182 100644 --- a/MiraAPI/Patches/Cosmetics/HatsTabPatch.cs +++ b/MiraAPI/Patches/Cosmetics/HatsTabPatch.cs @@ -1,12 +1,11 @@ -using AmongUs.Data; +using System; +using System.Collections.Generic; +using System.Linq; +using AmongUs.Data; using HarmonyLib; using MiraAPI.Cosmetics; using MonoMod.Utils; -using Reactor.Utilities; using Reactor.Utilities.Extensions; -using System; -using System.Collections.Generic; -using System.Linq; using TMPro; using UnityEngine; @@ -28,11 +27,11 @@ public static class HatsTabPatch foreach (var colorchip in __instance.ColorChips) colorchip.gameObject.Destroy(); __instance.ColorChips.Clear(); var groupNameText = __instance.GetComponentInChildren(false); - int hatIdx = 0; + var hatIdx = 0; __instance.currentHat = DestroyableSingleton.Instance.GetHatById(DataManager.Player.Customization.Hat); - foreach (var (group,hats) in hatGroups.Where(x=>x.Key.GroupVisible() && x.Key.Hats.Count > 0)) + foreach (var (group, hats) in hatGroups.Where(x=>x.Key.GroupVisible() && x.Key.Hats.Count > 0)) { var text = UnityEngine.Object.Instantiate(groupNameText, __instance.scroller.Inner); text.gameObject.transform.localScale = Vector3.one; @@ -45,16 +44,16 @@ public static class HatsTabPatch hatIdx = (hatIdx + 4) / 5 * 5; - float xLerp = __instance.XRange.Lerp(0.5f); - float yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; + var xLerp = __instance.XRange.Lerp(0.5f); + var yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; text.transform.localPosition = new Vector3(xLerp, yLerp, -1f); hatIdx += 5; foreach (var hat in hats) { - float num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); - float num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; - ColorChip colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); + var num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); + var num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; + var colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); colorChip.transform.localPosition = new Vector3(num, num2, -1f); colorChip.Button.OnClick.AddListener((Action)(() => __instance.SelectHat(hat))); colorChip.Button.ClickMask = __instance.scroller.Hitbox; diff --git a/MiraAPI/Patches/Cosmetics/InventoryManagerPatch.cs b/MiraAPI/Patches/Cosmetics/InventoryManagerPatch.cs index d6afd63..fccaa1a 100644 --- a/MiraAPI/Patches/Cosmetics/InventoryManagerPatch.cs +++ b/MiraAPI/Patches/Cosmetics/InventoryManagerPatch.cs @@ -1,10 +1,5 @@ using HarmonyLib; using MiraAPI.Cosmetics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MiraAPI.Patches.Cosmetics; diff --git a/MiraAPI/Patches/Cosmetics/NameplatesTabPatch.cs b/MiraAPI/Patches/Cosmetics/NameplatesTabPatch.cs index 1cdb20e..8e2d52f 100644 --- a/MiraAPI/Patches/Cosmetics/NameplatesTabPatch.cs +++ b/MiraAPI/Patches/Cosmetics/NameplatesTabPatch.cs @@ -1,18 +1,18 @@ -using AmongUs.Data; -using HarmonyLib; -using MiraAPI.Cosmetics; -using MonoMod.Utils; -using Reactor.Utilities.Extensions; -using System; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; +using AmongUs.Data; +using HarmonyLib; +using MiraAPI.Cosmetics; +using MiraAPI.Utilities.Assets.Addressable; +using MonoMod.Utils; +using Reactor.Utilities; +using Reactor.Utilities.Extensions; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; -using MiraAPI.Utilities.Assets.Addressable; -using Reactor.Utilities; using UnityEngine.ResourceManagement.AsyncOperations; -using System.Collections; namespace MiraAPI.Patches.Cosmetics; [HarmonyPatch(typeof(NameplatesTab), nameof(NameplatesTab.OnEnable))] @@ -20,24 +20,24 @@ public static class NameplatesTabPatch { public static bool Prefix(NameplatesTab __instance) { - var Groups = new SortedList>( + var groups = new SortedList>( new AbstractCosmeticsGroupComparer() ); CustomCosmeticManager.Groups.Do(x => x.Nameplates.Sort(new CosmeticComparer(x))); var c = CustomCosmeticManager.Groups.Select(x => new KeyValuePair>(x, x.Nameplates)). ToDictionary(x => x.Key, x => x.Value.Where(x => x.Free || DataManager.Player.Purchases.GetPurchase(x.ProductId, x.BundleId)).ToList()); - Groups.AddRange>(c); + groups.AddRange>(c); Logger.Info($"{c.Count}"); foreach (var colorchip in __instance.ColorChips) colorchip.gameObject.Destroy(); __instance.ColorChips.Clear(); var groupNameText = __instance.GetComponentInChildren(false); - int hatIdx = 0; + var hatIdx = 0; __instance.PlayerPreview.gameObject.SetActive(false); __instance.StartCoroutine(__instance.CoLoadNameplatePreview()); - foreach (var (group, hats) in Groups.Where(x => x.Key.GroupVisible() && x.Key.Nameplates.Count > 0)) + foreach (var (group, hats) in groups.Where(x => x.Key.GroupVisible() && x.Key.Nameplates.Count > 0)) { var text = UnityEngine.Object.Instantiate(groupNameText, __instance.scroller.Inner); text.gameObject.transform.localScale = Vector3.one; @@ -50,17 +50,17 @@ public static class NameplatesTabPatch hatIdx = (hatIdx + 1) / 2 * 2; - float xLerp = __instance.XRange.Lerp(0.5f); - float yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; + var xLerp = __instance.XRange.Lerp(0.5f); + var yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; text.transform.localPosition = new Vector3(xLerp, yLerp, -1f); hatIdx += 2; foreach (var hat in hats) { - float num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); - float num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; + var num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); + var num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; - ColorChip colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); + var colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); colorChip.transform.localPosition = new Vector3(num, num2, -1f); colorChip.Button.OnClick.AddListener((Action)(() => __instance.SelectNameplate(hat))); @@ -83,7 +83,7 @@ public static class NameplatesTabPatch return false; } - static IEnumerator SetupColorChip(NameplateChip colorChip, AsyncOperationHandle handle) + private static IEnumerator SetupColorChip(NameplateChip colorChip, AsyncOperationHandle handle) { yield return new WaitForAsyncOperationHandleFinish(handle); colorChip.image.sprite = handle.Result?.Image; diff --git a/MiraAPI/Patches/Cosmetics/SkinsTabPatch.cs b/MiraAPI/Patches/Cosmetics/SkinsTabPatch.cs index d151879..589cf23 100644 --- a/MiraAPI/Patches/Cosmetics/SkinsTabPatch.cs +++ b/MiraAPI/Patches/Cosmetics/SkinsTabPatch.cs @@ -1,23 +1,18 @@ -using AmongUs.Data; -using HarmonyLib; -using MiraAPI.Cosmetics; -using MonoMod.Utils; -using Reactor.Utilities.Extensions; -using Sentry; -using System; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; +using AmongUs.Data; +using HarmonyLib; +using MiraAPI.Cosmetics; +using MiraAPI.Utilities.Assets.Addressable; +using MonoMod.Utils; +using Reactor.Utilities; +using Reactor.Utilities.Extensions; using TMPro; using UnityEngine; -using static Rewired.Controller; using UnityEngine.AddressableAssets; -using System.Drawing; -using System.Collections; using UnityEngine.ResourceManagement.AsyncOperations; -using Reactor.Utilities; -using MiraAPI.Utilities.Assets.Addressable; namespace MiraAPI.Patches.Cosmetics; [HarmonyPatch(typeof(SkinsTab), nameof(SkinsTab.OnEnable))] @@ -25,20 +20,20 @@ public static class SkinsTabPatch { public static bool Prefix(SkinsTab __instance) { - var Groups = new SortedList>( + var groups = new SortedList>( new AbstractCosmeticsGroupComparer() ); CustomCosmeticManager.Groups.Do(x => x.Skins.Sort(new CosmeticComparer(x))); var c = CustomCosmeticManager.Groups.Select(x => new KeyValuePair>(x, x.Skins)). ToDictionary(x => x.Key, x => x.Value.Where(x => x.Free || DataManager.Player.Purchases.GetPurchase(x.ProductId, x.BundleId)).ToList()); - Groups.AddRange>(c); + groups.AddRange>(c); foreach (var colorchip in __instance.ColorChips) colorchip.gameObject.Destroy(); __instance.ColorChips.Clear(); var groupNameText = __instance.GetComponentInChildren(false); - int hatIdx = 0; + var hatIdx = 0; - foreach (var (group, skins) in Groups.Where(x => x.Key.GroupVisible() && x.Key.Skins.Count > 0)) + foreach (var (group, skins) in groups.Where(x => x.Key.GroupVisible() && x.Key.Skins.Count > 0)) { var text = UnityEngine.Object.Instantiate(groupNameText, __instance.scroller.Inner); text.gameObject.transform.localScale = Vector3.one; @@ -51,16 +46,16 @@ public static class SkinsTabPatch hatIdx = (hatIdx + 4) / 5 * 5; - float xLerp = __instance.XRange.Lerp(0.5f); - float yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; + var xLerp = __instance.XRange.Lerp(0.5f); + var yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; text.transform.localPosition = new Vector3(xLerp, yLerp, -1f); hatIdx += 5; foreach (var skin in skins) { - float num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); - float num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; - ColorChip colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); + var num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); + var num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; + var colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); colorChip.transform.localPosition = new Vector3(num, num2, -1f); colorChip.Button.OnClick.AddListener((Action)(() => __instance.SelectSkin(skin))); colorChip.Button.ClickMask = __instance.scroller.Hitbox; diff --git a/MiraAPI/Patches/Cosmetics/VisorsTabPatch.cs b/MiraAPI/Patches/Cosmetics/VisorsTabPatch.cs index 9e9dbcb..6a95277 100644 --- a/MiraAPI/Patches/Cosmetics/VisorsTabPatch.cs +++ b/MiraAPI/Patches/Cosmetics/VisorsTabPatch.cs @@ -1,20 +1,18 @@ -using AmongUs.Data; -using HarmonyLib; -using MiraAPI.Cosmetics; -using MonoMod.Utils; -using Reactor.Utilities.Extensions; -using Reactor.Utilities; -using System; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TMPro; -using UnityEngine.AddressableAssets; -using UnityEngine; +using AmongUs.Data; +using HarmonyLib; +using MiraAPI.Cosmetics; using MiraAPI.Utilities.Assets.Addressable; +using MonoMod.Utils; +using Reactor.Utilities; +using Reactor.Utilities.Extensions; +using TMPro; +using UnityEngine; +using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; -using System.Collections; namespace MiraAPI.Patches.Cosmetics; [HarmonyPatch(typeof(VisorsTab), nameof(VisorsTab.OnEnable))] @@ -22,20 +20,20 @@ public static class VisorsTabPatch { public static bool Prefix(VisorsTab __instance) { - var Groups = new SortedList>( + var groups = new SortedList>( new AbstractCosmeticsGroupComparer() ); CustomCosmeticManager.Groups.Do(x => x.Visors.Sort(new CosmeticComparer(x))); var c = CustomCosmeticManager.Groups.Select(x => new KeyValuePair>(x, x.Visors)). ToDictionary(x => x.Key, x => x.Value.Where(x => x.Free || DataManager.Player.Purchases.GetPurchase(x.ProductId, x.BundleId)).ToList()); - Groups.AddRange>(c); + groups.AddRange>(c); foreach (var colorchip in __instance.ColorChips) colorchip.gameObject.Destroy(); __instance.ColorChips.Clear(); var groupNameText = __instance.GetComponentInChildren(false); - int hatIdx = 0; + var hatIdx = 0; - foreach (var (group, visors) in Groups.Where(x => x.Key.GroupVisible() && x.Key.Visors.Count > 0)) + foreach (var (group, visors) in groups.Where(x => x.Key.GroupVisible() && x.Key.Visors.Count > 0)) { var text = UnityEngine.Object.Instantiate(groupNameText, __instance.scroller.Inner); text.gameObject.transform.localScale = Vector3.one; @@ -48,16 +46,16 @@ public static class VisorsTabPatch hatIdx = (hatIdx + 4) / 5 * 5; - float xLerp = __instance.XRange.Lerp(0.5f); - float yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; + var xLerp = __instance.XRange.Lerp(0.5f); + var yLerp = __instance.YStart - (hatIdx / __instance.NumPerRow) * __instance.YOffset; text.transform.localPosition = new Vector3(xLerp, yLerp, -1f); hatIdx += 5; foreach (var visor in visors) { - float num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); - float num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; - ColorChip colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); + var num = __instance.XRange.Lerp(hatIdx % __instance.NumPerRow / (__instance.NumPerRow - 1f)); + var num2 = __instance.YStart - hatIdx / __instance.NumPerRow * __instance.YOffset; + var colorChip = UnityEngine.Object.Instantiate(__instance.ColorTabPrefab, __instance.scroller.Inner); colorChip.transform.localPosition = new Vector3(num, num2, -1f); colorChip.Button.OnClick.AddListener((Action)(() => __instance.SelectVisor(visor))); colorChip.Button.ClickMask = __instance.scroller.Hitbox; diff --git a/MiraAPI/Patches/Hud/ButtonResetPatches.cs b/MiraAPI/Patches/Hud/ButtonResetPatches.cs index b9756ce..0859bea 100644 --- a/MiraAPI/Patches/Hud/ButtonResetPatches.cs +++ b/MiraAPI/Patches/Hud/ButtonResetPatches.cs @@ -4,7 +4,7 @@ using MiraAPI.Hud; namespace MiraAPI.Patches.Hud; /// -/// Reset button patches +/// Reset button patches. /// [HarmonyPatch] public static class ButtonResetPatches diff --git a/MiraAPI/Patches/HudManagerPatches.cs b/MiraAPI/Patches/HudManagerPatches.cs index af7057d..85d7750 100644 --- a/MiraAPI/Patches/HudManagerPatches.cs +++ b/MiraAPI/Patches/HudManagerPatches.cs @@ -1,6 +1,5 @@ using HarmonyLib; using MiraAPI.Hud; -using MiraAPI.Roles; using Reactor.Utilities.Extensions; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs b/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs index 92cd925..c641e88 100644 --- a/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs +++ b/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs @@ -1,9 +1,9 @@ -using HarmonyLib; +using System.Linq; +using HarmonyLib; using MiraAPI.Utilities; using MiraAPI.Utilities.Assets; using Reactor.Localization.Utilities; using Reactor.Utilities.Extensions; -using System.Linq; using TMPro; using UnityEngine; using UnityEngine.Events; diff --git a/MiraAPI/Patches/Options/GameSettingMenuPatches.cs b/MiraAPI/Patches/Options/GameSettingMenuPatches.cs index a44b35c..a6d8fde 100644 --- a/MiraAPI/Patches/Options/GameSettingMenuPatches.cs +++ b/MiraAPI/Patches/Options/GameSettingMenuPatches.cs @@ -1,9 +1,9 @@ -using HarmonyLib; +using System; +using System.Linq; +using HarmonyLib; using MiraAPI.PluginLoading; using MiraAPI.Utilities.Assets; using Reactor.Utilities.Extensions; -using System; -using System.Linq; using TMPro; using UnityEngine; using UnityEngine.Events; diff --git a/MiraAPI/Patches/Options/LobbyViewPanePatches.cs b/MiraAPI/Patches/Options/LobbyViewPanePatches.cs index ee26822..e2e89c0 100644 --- a/MiraAPI/Patches/Options/LobbyViewPanePatches.cs +++ b/MiraAPI/Patches/Options/LobbyViewPanePatches.cs @@ -1,11 +1,11 @@ -using HarmonyLib; +using System; +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; using MiraAPI.PluginLoading; using MiraAPI.Roles; using MiraAPI.Utilities; using MiraAPI.Utilities.Assets; -using System; -using System.Collections.Generic; -using System.Linq; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; diff --git a/MiraAPI/Patches/Options/NotificationPopperPatch.cs b/MiraAPI/Patches/Options/NotificationPopperPatch.cs index 54cbed0..39ad02f 100644 --- a/MiraAPI/Patches/Options/NotificationPopperPatch.cs +++ b/MiraAPI/Patches/Options/NotificationPopperPatch.cs @@ -1,7 +1,9 @@ -using HarmonyLib; +using System.Linq; +using HarmonyLib; using Il2CppSystem; using MiraAPI.Roles; -using System.Linq; +using UnityEngine; +using Object = Il2CppSystem.Object; namespace MiraAPI.Patches.Options; @@ -23,9 +25,13 @@ public static class NotificationPopperPatch return true; } - var text = teamType == RoleTeamTypes.Crewmate - ? Palette.CrewmateSettingChangeText.ToTextColor() - : Palette.ImpostorRed.ToTextColor(); + var text = customRole.Team switch + { + ModdedRoleTeams.Crewmate => Palette.CrewmateSettingChangeText.ToTextColor(), + ModdedRoleTeams.Impostor => Palette.ImpostorRed.ToTextColor(), + ModdedRoleTeams.Neutral => Palette.DisabledGrey.ToTextColor(), + _ => Color.white.ToTextColor(), + }; var item = TranslationController.Instance.GetString( StringNames.LobbyChangeSettingNotificationRole, diff --git a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs index 4cc492e..ebbc00f 100644 --- a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs +++ b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs @@ -1,4 +1,6 @@ -using HarmonyLib; +using System; +using System.Linq; +using HarmonyLib; using Il2CppInterop.Runtime.InteropTypes.Arrays; using MiraAPI.Networking; using MiraAPI.Roles; @@ -7,8 +9,6 @@ using MiraAPI.Utilities.Assets; using Reactor.Networking.Rpc; using Reactor.Utilities; using Reactor.Utilities.Extensions; -using System; -using System.Linq; using TMPro; using UnityEngine; using UnityEngine.Events; diff --git a/MiraAPI/Patches/PlayerControlPatches.cs b/MiraAPI/Patches/PlayerControlPatches.cs index 92d9b8a..b65e2ee 100644 --- a/MiraAPI/Patches/PlayerControlPatches.cs +++ b/MiraAPI/Patches/PlayerControlPatches.cs @@ -32,6 +32,7 @@ public static class PlayerControlPatches /// Calls the OnDeath method for all active modifiers. /// /// PlayerControl instance. + /// The death reason. [HarmonyPostfix] [HarmonyPatch(nameof(PlayerControl.Die))] public static void PlayerControlDiePostfix(PlayerControl __instance, DeathReason reason) diff --git a/MiraAPI/Patches/Roles/GameStartupPatch.cs b/MiraAPI/Patches/Roles/GameStartupPatch.cs index b452791..4e2d7ae 100644 --- a/MiraAPI/Patches/Roles/GameStartupPatch.cs +++ b/MiraAPI/Patches/Roles/GameStartupPatch.cs @@ -9,7 +9,7 @@ public static class GameStartupPatch private static bool _runOnce; /// - /// This is used for registering roles when the game opens, might be a janky solution, but it works + /// This is used for registering roles when the game opens, might be a janky solution, but it works. /// [HarmonyPostfix] [HarmonyPatch(nameof(MainMenuManager.Start))] diff --git a/MiraAPI/Patches/Roles/NameTagPatch.cs b/MiraAPI/Patches/Roles/NameTagPatch.cs index 821db1c..65404b0 100644 --- a/MiraAPI/Patches/Roles/NameTagPatch.cs +++ b/MiraAPI/Patches/Roles/NameTagPatch.cs @@ -4,7 +4,7 @@ using UnityEngine; namespace MiraAPI.Patches.Roles; /// -/// Set nametag color depending on option +/// Set nametag color depending on option. /// [HarmonyPatch(typeof(PlayerNameColor))] public static class NameTagPatch diff --git a/MiraAPI/Patches/Roles/RoleBehaviourPatches.cs b/MiraAPI/Patches/Roles/RoleBehaviourPatches.cs index 98cb5e6..259aa50 100644 --- a/MiraAPI/Patches/Roles/RoleBehaviourPatches.cs +++ b/MiraAPI/Patches/Roles/RoleBehaviourPatches.cs @@ -8,7 +8,7 @@ namespace MiraAPI.Patches.Roles; public static class RoleBehaviourPatches { /// - /// Update TeamColor text for Launchpad roles + /// Update TeamColor text for custom roles. /// [HarmonyPrefix] [HarmonyPatch(nameof(RoleBehaviour.TeamColor), MethodType.Getter)] diff --git a/MiraAPI/Patches/Roles/RoleManagerPatches.cs b/MiraAPI/Patches/Roles/RoleManagerPatches.cs index 357b2eb..e5f905b 100644 --- a/MiraAPI/Patches/Roles/RoleManagerPatches.cs +++ b/MiraAPI/Patches/Roles/RoleManagerPatches.cs @@ -1,8 +1,8 @@ -using AmongUs.GameOptions; +using System.Linq; +using AmongUs.GameOptions; using HarmonyLib; using MiraAPI.Modifiers; using MiraAPI.Roles; -using System.Linq; namespace MiraAPI.Patches.Roles; diff --git a/MiraAPI/Patches/Roles/RoleOptionsCollectionPatch.cs b/MiraAPI/Patches/Roles/RoleOptionsCollectionPatch.cs index bfa9e9f..eaf4eef 100644 --- a/MiraAPI/Patches/Roles/RoleOptionsCollectionPatch.cs +++ b/MiraAPI/Patches/Roles/RoleOptionsCollectionPatch.cs @@ -8,7 +8,7 @@ namespace MiraAPI.Patches.Roles; public static class RoleOptionsCollectionPatch { /// - /// Set the role chance for custom Launchpad roles based on config + /// Set the role chance for custom Launchpad roles based on config. /// [HarmonyPrefix] [HarmonyPatch(nameof(RoleOptionsCollectionV08.GetChancePerGame))] @@ -31,7 +31,7 @@ public static class RoleOptionsCollectionPatch } /// - /// Set the amount for custom Launchpad roles based on config + /// Set the amount for custom Launchpad roles based on config. /// [HarmonyPrefix] [HarmonyPatch(nameof(RoleOptionsCollectionV08.GetNumPerGame))] diff --git a/MiraAPI/Patches/Roles/SabotageButtonPatch.cs b/MiraAPI/Patches/Roles/SabotageButtonPatch.cs index 6706235..258af83 100644 --- a/MiraAPI/Patches/Roles/SabotageButtonPatch.cs +++ b/MiraAPI/Patches/Roles/SabotageButtonPatch.cs @@ -4,7 +4,7 @@ using MiraAPI.Roles; namespace MiraAPI.Patches.Roles; [HarmonyPatch(typeof(SabotageButton))] -public class SabotageButtonPatch +public static class SabotageButtonPatch { /// /// Patches the Sabotage button to check if the player's custom role can use sabotage. diff --git a/MiraAPI/Patches/Roles/TaskAdderPatch.cs b/MiraAPI/Patches/Roles/TaskAdderPatch.cs index ee3c34d..4245ecd 100644 --- a/MiraAPI/Patches/Roles/TaskAdderPatch.cs +++ b/MiraAPI/Patches/Roles/TaskAdderPatch.cs @@ -1,11 +1,11 @@ -using AmongUs.GameOptions; -using HarmonyLib; -using System; +using System; using System.Collections.Generic; +using System.Linq; +using AmongUs.GameOptions; +using HarmonyLib; using MiraAPI.PluginLoading; using MiraAPI.Roles; using MiraAPI.Utilities.Assets; -using System.Linq; using TMPro; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/PluginLoading/MiraPluginInfo.cs b/MiraAPI/PluginLoading/MiraPluginInfo.cs index 164fa90..e958b42 100644 --- a/MiraAPI/PluginLoading/MiraPluginInfo.cs +++ b/MiraAPI/PluginLoading/MiraPluginInfo.cs @@ -1,14 +1,10 @@ -using BepInEx; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using BepInEx; using BepInEx.Configuration; using MiraAPI.GameModes; using MiraAPI.GameOptions; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Collections.ObjectModel; -using System.Linq; -using MiraAPI.GameOptions.OptionTypes; using MiraAPI.Hud; -using MiraAPI.Roles; namespace MiraAPI.PluginLoading; diff --git a/MiraAPI/PluginLoading/MiraPluginManager.cs b/MiraAPI/PluginLoading/MiraPluginManager.cs index 15c14af..2b6cb6c 100644 --- a/MiraAPI/PluginLoading/MiraPluginManager.cs +++ b/MiraAPI/PluginLoading/MiraPluginManager.cs @@ -59,11 +59,11 @@ public sealed class MiraPluginManager /// /// Get a mira plugin by its GUID. /// - /// The plugin GUID. + /// The plugin GUID. /// A MiraPluginInfo. - public static MiraPluginInfo GetPluginByGuid(string guid) + public static MiraPluginInfo GetPluginByGuid(string uniqueId) { - return Instance._registeredPlugins.Values.First(plugin => plugin.PluginId == guid); + return Instance._registeredPlugins.Values.First(plugin => plugin.PluginId == uniqueId); } private static void RegisterAllOptions(Assembly assembly, MiraPluginInfo pluginInfo) diff --git a/MiraAPI/Roles/CustomRoleConfiguration.cs b/MiraAPI/Roles/CustomRoleConfiguration.cs index 7f6c6a0..6e80eb0 100644 --- a/MiraAPI/Roles/CustomRoleConfiguration.cs +++ b/MiraAPI/Roles/CustomRoleConfiguration.cs @@ -39,6 +39,8 @@ public struct CustomRoleConfiguration CanModifyChance = true; } +#pragma warning disable S1104 +#pragma warning disable CA1051 /// /// Gets the hard limit of players that can have this role. This property is used to set a limit in the Role Options menu. If set to 0, the role will not be assigned at start. /// @@ -123,4 +125,6 @@ public struct CustomRoleConfiguration /// Gets the Ghost role that is applied when the player is killed. /// public RoleTypes GhostRole; -} \ No newline at end of file +#pragma warning restore S1104 +#pragma warning restore CA1051 +} diff --git a/MiraAPI/Roles/CustomRoleManager.cs b/MiraAPI/Roles/CustomRoleManager.cs index 417f3a8..4546d1e 100644 --- a/MiraAPI/Roles/CustomRoleManager.cs +++ b/MiraAPI/Roles/CustomRoleManager.cs @@ -1,4 +1,7 @@ -using AmongUs.GameOptions; +using System; +using System.Collections.Generic; +using System.Linq; +using AmongUs.GameOptions; using Il2CppInterop.Runtime; using Il2CppInterop.Runtime.Injection; using MiraAPI.Networking; @@ -8,9 +11,6 @@ using Reactor.Localization.Utilities; using Reactor.Networking.Rpc; using Reactor.Utilities; using Reactor.Utilities.Extensions; -using System; -using System.Collections.Generic; -using System.Linq; using TMPro; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/Roles/CustomRoleSingleton.cs b/MiraAPI/Roles/CustomRoleSingleton.cs index 808202c..79cbdad 100644 --- a/MiraAPI/Roles/CustomRoleSingleton.cs +++ b/MiraAPI/Roles/CustomRoleSingleton.cs @@ -8,7 +8,7 @@ namespace MiraAPI.Roles; /// The role you are trying to access. public static class CustomRoleSingleton where T : ICustomRole { - private static ICustomRole? _instance; + private static T? _instance; /// /// Gets the instance of the role. diff --git a/MiraAPI/Roles/ICustomRole.cs b/MiraAPI/Roles/ICustomRole.cs index b7adf66..5d50abb 100644 --- a/MiraAPI/Roles/ICustomRole.cs +++ b/MiraAPI/Roles/ICustomRole.cs @@ -1,8 +1,8 @@ -using BepInEx.Configuration; +using System.Text; +using BepInEx.Configuration; using MiraAPI.Modifiers; using MiraAPI.PluginLoading; using MiraAPI.Utilities; -using System.Text; using UnityEngine; namespace MiraAPI.Roles; @@ -38,7 +38,7 @@ public interface ICustomRole ModdedRoleTeams Team { get; } /// - /// Configure advanced settings of the role. + /// Gets the advanced settings of the role. /// CustomRoleConfiguration Configuration { get; } diff --git a/MiraAPI/Utilities/Assets/Addressable/Catalog.cs b/MiraAPI/Utilities/Assets/Addressable/Catalog.cs index 15031ff..4321e37 100644 --- a/MiraAPI/Utilities/Assets/Addressable/Catalog.cs +++ b/MiraAPI/Utilities/Assets/Addressable/Catalog.cs @@ -1,6 +1,6 @@ -using BepInEx.Unity.IL2CPP.Utils.Collections; +using System.Collections; +using BepInEx.Unity.IL2CPP.Utils.Collections; using Reactor.Utilities; -using System.Collections; using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets.ResourceLocators; using UnityEngine.ResourceManagement.AsyncOperations; @@ -15,7 +15,8 @@ public class Catalog(string CatalogPath) /// /// Loads the catalog asynchronously. /// - public void LoadCatalogAsync() { + public void LoadCatalogAsync() + { Coroutines.Start(LoadCatalogAsynchronously()); } @@ -48,4 +49,4 @@ public class Catalog(string CatalogPath) yield return updateHandle; updateHandle.Release(); } -} \ No newline at end of file +} diff --git a/MiraAPI/Utilities/Assets/Addressable/CatalogTools.cs b/MiraAPI/Utilities/Assets/Addressable/CatalogTools.cs index b083e76..4771f3b 100644 --- a/MiraAPI/Utilities/Assets/Addressable/CatalogTools.cs +++ b/MiraAPI/Utilities/Assets/Addressable/CatalogTools.cs @@ -1,6 +1,5 @@ -using BepInEx.Unity.IL2CPP.Utils.Collections; -using System.IO; -using System.Reflection; +using System.IO; +using BepInEx.Unity.IL2CPP.Utils.Collections; using UnityEngine.AddressableAssets; namespace MiraAPI.Utilities.Assets.Addressable; @@ -13,18 +12,18 @@ public static class CatalogTools /// /// Converts string filenames to catalog paths within the plugins folder. /// - /// A string of the catalog file without the extension + /// A string of the catalog file without the extension. /// The path to the catalog file. public static string ToLocalPath(this string fileName) { - return Path.GetDirectoryName(Assembly.GetAssembly(typeof(MiraApiPlugin)).Location) + $"\\{fileName}.catalog"; + return Path.GetDirectoryName(typeof(MiraApiPlugin).Assembly.Location) + $"\\{fileName}.catalog"; } /// /// Finds the resource locations of a specific label. /// - /// The label of the addressables assets - /// An IList of IResourceLocation + /// The label of the addressables assets. + /// An IList of IResourceLocation. public static Il2CppSystem.Collections.Generic.IList GetResourceLocation(string label) { return Addressables.LoadResourceLocationsAsync(label).WaitForCompletion(); @@ -33,11 +32,11 @@ public static class CatalogTools /// /// Finds the resource locations of multiple specific labels. /// - /// The label of the addressables assets - /// An IList of IResourceLocation + /// The label of the addressables assets. + /// An IList of IResourceLocation. public static Il2CppSystem.Collections.Generic.IList GetResourceLocations(string[] labels) { - var il2cppLabels = new Il2CppSystem.Collections.Generic.IList(labels.WrapToIl2Cpp().Pointer); - return Addressables.LoadResourceLocationsAsync(il2cppLabels, Addressables.MergeMode.Union).WaitForCompletion(); + var il2CPPLabels = new Il2CppSystem.Collections.Generic.IList(labels.WrapToIl2Cpp().Pointer); + return Addressables.LoadResourceLocationsAsync(il2CPPLabels, Addressables.MergeMode.Union).WaitForCompletion(); } } diff --git a/MiraAPI/Utilities/Assets/Addressable/WaitForAsyncOperationHandleFinish.cs b/MiraAPI/Utilities/Assets/Addressable/WaitForAsyncOperationHandleFinish.cs index 4ce9638..92fbc1b 100644 --- a/MiraAPI/Utilities/Assets/Addressable/WaitForAsyncOperationHandleFinish.cs +++ b/MiraAPI/Utilities/Assets/Addressable/WaitForAsyncOperationHandleFinish.cs @@ -1,18 +1,19 @@ using System.Collections; +using UnityEngine; using UnityEngine.ResourceManagement.AsyncOperations; namespace MiraAPI.Utilities.Assets.Addressable; /// -/// An IEnumerator for awaiting an AsyncOperationHandle -/// -/// The AsyncOperationHandle being awaited +/// An IEnumerator for awaiting an AsyncOperationHandle. +/// . +/// The AsyncOperationHandle being awaited. public class WaitForAsyncOperationHandleFinish(AsyncOperationHandle handle) : IEnumerator { public object Current => null; public bool MoveNext() { - return handle.PercentComplete != 1.0f && !handle.IsDone; + return !Mathf.Approximately(handle.PercentComplete, 1.0f) && !handle.IsDone; } public void Reset() { diff --git a/MiraAPI/Utilities/Assets/LoadableAddressableAsset.cs b/MiraAPI/Utilities/Assets/LoadableAddressableAsset.cs index 918c820..76fae01 100644 --- a/MiraAPI/Utilities/Assets/LoadableAddressableAsset.cs +++ b/MiraAPI/Utilities/Assets/LoadableAddressableAsset.cs @@ -6,29 +6,29 @@ namespace MiraAPI.Utilities.Assets; /// /// A utility class for loading assets from the addressables api. /// -/// The name/identifier of the asset -/// The type of the asset to be loaded -public class LoadableAddressableAsset(string name) : LoadableAsset where T : UnityEngine.Object +/// The name/identifier of the asset. +/// The type of the asset to be loaded. +public class LoadableAddressableAsset(string name) : LoadableAsset where T : UnityEngine.Object { /// /// Loads the asset from the addressables api. /// - /// The asset + /// The asset. /// The asset did not load properly. public override T LoadAsset() { - if (LoadedAsset) + if (LoadedAsset != null) { return LoadedAsset; } LoadedAsset = Addressables.LoadAssetAsync(name).WaitForCompletion(); - if (!LoadedAsset) + if (LoadedAsset == null) { - throw new Exception($"INVALID ASSET: {name}"); + throw new InvalidOperationException($"INVALID ASSET: {name}"); } return LoadedAsset; } -} \ No newline at end of file +} diff --git a/MiraAPI/Utilities/Assets/LoadableAddressablesGroupAsset.cs b/MiraAPI/Utilities/Assets/LoadableAddressablesGroupAsset.cs index 09450d4..bad5ef6 100644 --- a/MiraAPI/Utilities/Assets/LoadableAddressablesGroupAsset.cs +++ b/MiraAPI/Utilities/Assets/LoadableAddressablesGroupAsset.cs @@ -8,17 +8,18 @@ namespace MiraAPI.Utilities.Assets; /// A utility class for loading multiple assets from the addressables api. /// /// A list of IResourceLocations that locate the assets. -/// The type of the assets to be loaded +/// The type of the assets to be loaded. public class LoadableAddressableGroupAsset(Il2CppSystem.Collections.Generic.IList locations) where T : UnityEngine.Object { /// - /// A reference to the loaded assets. Intended to be used for caching purposes. + /// Gets or sets a reference to the loaded assets. Intended to be used for caching purposes. /// - protected List LoadedAsset = new(); + protected List LoadedAsset { get; set; } = []; + /// /// Loads the assets from the addressables api. /// - /// The assets + /// The assets. /// The asset did not load properly. public List LoadAsset() { @@ -29,13 +30,13 @@ public class LoadableAddressableGroupAsset(Il2CppSystem.Collections.Generic.I var assets = Addressables.LoadAssetsAsync(locations, null, false).WaitForCompletion(); var array = new Il2CppSystem.Collections.Generic.List(assets.Pointer); - LoadedAsset = new List(array.ToArray()); + LoadedAsset = [..array.ToArray()]; if (LoadedAsset is null || LoadedAsset.Count == 0) { - throw new Exception($"INVALID ASSET LOCATION/s"); + throw new InvalidOperationException("INVALID ASSET LOCATION/s"); } return LoadedAsset; } -} \ No newline at end of file +} diff --git a/MiraAPI/Utilities/Helpers.cs b/MiraAPI/Utilities/Helpers.cs index fda3e03..c5085b5 100644 --- a/MiraAPI/Utilities/Helpers.cs +++ b/MiraAPI/Utilities/Helpers.cs @@ -1,8 +1,8 @@ -using MiraAPI.Roles; -using System.Collections.Generic; +using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; +using MiraAPI.Roles; using TMPro; using UnityEngine; using Object = UnityEngine.Object;