diff --git a/MiraAPI/GameOptions/IModdedOption.cs b/MiraAPI/GameOptions/IModdedOption.cs index d5628a0..abe00eb 100644 --- a/MiraAPI/GameOptions/IModdedOption.cs +++ b/MiraAPI/GameOptions/IModdedOption.cs @@ -14,6 +14,6 @@ namespace MiraAPI.GameOptions public IMiraConfig ParentMod { get; set; } public void ValueChanged(OptionBehaviour optionBehaviour); public string GetHudStringText(); - public OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container); + public OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container); } } diff --git a/MiraAPI/GameOptions/ModdedOptionsManager.cs b/MiraAPI/GameOptions/ModdedOptionsManager.cs index 5ea9378..d8d5dcf 100644 --- a/MiraAPI/GameOptions/ModdedOptionsManager.cs +++ b/MiraAPI/GameOptions/ModdedOptionsManager.cs @@ -12,8 +12,8 @@ namespace MiraAPI.GameOptions { public class ModdedOptionsManager { - public static List Options = new(); - public static List Groups = new(); + public static List Options = []; + public static List Groups = []; private static Dictionary OptionAttributes = new(); private static Dictionary OriginalTypes = new(); public static Dictionary RegisteredMods = new(); diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedEnumOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedEnumOption.cs index 6a00e2d..20f0225 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedEnumOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedEnumOption.cs @@ -9,21 +9,21 @@ namespace MiraAPI.GameOptions.OptionTypes { public string[] Values; - public ModdedEnumOption(string title, int defaultValue, Type enumType, System.Type roleType) : base(title, defaultValue, roleType) + public ModdedEnumOption(string title, int defaultValue, Type enumType, Type roleType) : base(title, defaultValue, roleType) { Values = Enum.GetNames(enumType); } - public override OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container) + public override OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container) { - var stringOption = UnityEngine.Object.Instantiate(stringOpt, container); + var stringOption = (StringOption)UnityEngine.Object.Instantiate(optionBehaviour, container); stringOption.name = Title; stringOption.Title = StringName; stringOption.Value = Value; stringOption.Values = Values.Select(CustomStringName.CreateAndRegister).ToArray(); stringOption.OnValueChanged = (Il2CppSystem.Action)ValueChanged; - stringOption.OnEnable(); + stringOption.Initialize(); OptionBehaviour = stringOption; @@ -44,7 +44,7 @@ namespace MiraAPI.GameOptions.OptionTypes { if (OptionBehaviour is null) return; - StringOption opt = OptionBehaviour as StringOption; + var opt = OptionBehaviour as StringOption; opt.Value = newValue; } } diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs index cf10468..d585b50 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedNumberOption.cs @@ -21,9 +21,9 @@ namespace MiraAPI.GameOptions.OptionTypes Value = Mathf.Clamp(defaultValue, min, max); } - public override OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container) + public override OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container) { - var numberOption = Object.Instantiate(numberOpt, container); + var numberOption = (NumberOption)Object.Instantiate(optionBehaviour, container); numberOption.name = Title; numberOption.Title = StringName; @@ -34,7 +34,7 @@ namespace MiraAPI.GameOptions.OptionTypes numberOption.ValidRange = new FloatRange(Min, Max); numberOption.ZeroIsInfinity = ZeroInfinity; numberOption.OnValueChanged = (Il2CppSystem.Action)ValueChanged; - numberOption.OnEnable(); + numberOption.Initialize(); OptionBehaviour = numberOption; @@ -57,7 +57,7 @@ namespace MiraAPI.GameOptions.OptionTypes if (OptionBehaviour is null) return; - NumberOption opt = OptionBehaviour as NumberOption; + var opt = OptionBehaviour as NumberOption; opt.Value = newValue; } } diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs index a2b4518..d5581e4 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedOption.cs @@ -39,7 +39,7 @@ namespace MiraAPI.GameOptions.OptionTypes public void SetValue(T newValue) { - T oldVal = Value; + var oldVal = Value; Value = newValue; if (!Value.Equals(oldVal) && ChangedEvent != null) { @@ -53,7 +53,7 @@ namespace MiraAPI.GameOptions.OptionTypes public abstract T GetValueFromOptionBehaviour(OptionBehaviour optionBehaviour); - public abstract OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container); + public abstract OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container); public abstract string GetHudStringText(); } diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedStringOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedStringOption.cs index 584fe19..8e107da 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedStringOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedStringOption.cs @@ -12,16 +12,16 @@ namespace MiraAPI.GameOptions.OptionTypes Values = values; } - public override OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container) + public override OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container) { - var stringOption = Object.Instantiate(stringOpt, container); + var stringOption = (StringOption)Object.Instantiate(optionBehaviour, container); stringOption.name = Title; stringOption.Title = StringName; stringOption.Value = Value; stringOption.Values = Values.Select(CustomStringName.CreateAndRegister).ToArray(); stringOption.OnValueChanged = (Il2CppSystem.Action)ValueChanged; - stringOption.OnEnable(); + stringOption.Initialize(); OptionBehaviour = stringOption; @@ -42,7 +42,7 @@ namespace MiraAPI.GameOptions.OptionTypes { if (OptionBehaviour is null) return; - StringOption opt = OptionBehaviour as StringOption; + var opt = OptionBehaviour as StringOption; opt.Value = newValue; } } diff --git a/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs b/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs index 1a6edc9..d01511f 100644 --- a/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs +++ b/MiraAPI/GameOptions/OptionTypes/ModdedToggleOption.cs @@ -8,15 +8,15 @@ namespace MiraAPI.GameOptions.OptionTypes { } - public override OptionBehaviour CreateOption(ToggleOption toggleOpt, NumberOption numberOpt, StringOption stringOpt, Transform container) + public override OptionBehaviour CreateOption(OptionBehaviour optionBehaviour, Transform container) { - var toggleOption = UnityEngine.Object.Instantiate(toggleOpt, container); + var toggleOption = (ToggleOption)Object.Instantiate(optionBehaviour, container); toggleOption.name = Title; toggleOption.Title = StringName; toggleOption.CheckMark.enabled = Value; toggleOption.OnValueChanged = (Il2CppSystem.Action)ValueChanged; - toggleOption.OnEnable(); + toggleOption.Initialize(); OptionBehaviour = toggleOption; return toggleOption; } @@ -35,7 +35,7 @@ namespace MiraAPI.GameOptions.OptionTypes { if (OptionBehaviour is null) return; - ToggleOption toggleOpt = OptionBehaviour as ToggleOption; + var toggleOpt = OptionBehaviour as ToggleOption; toggleOpt.CheckMark.enabled = newValue; } } diff --git a/MiraAPI/GameOptions/UI/ModdedOptionsTab.cs b/MiraAPI/GameOptions/UI/ModdedOptionsTab.cs index cf5c6ae..b00ccaf 100644 --- a/MiraAPI/GameOptions/UI/ModdedOptionsTab.cs +++ b/MiraAPI/GameOptions/UI/ModdedOptionsTab.cs @@ -1,16 +1,16 @@ -using Reactor.Utilities.Extensions; -using System; +using System; using System.Collections.Generic; +using Reactor.Utilities.Extensions; using TMPro; using UnityEngine; using UnityEngine.Events; using Object = UnityEngine.Object; -namespace MiraAPI.API.GameOptions; +namespace MiraAPI.GameOptions.UI; public static class ModdedOptionsTab { - public static List CustomTabs = new List(); - public static List CustomScreens = new List(); + public static readonly List CustomTabs = []; + public static readonly List CustomScreens = []; public static GameObject InitializeForMod(IMiraConfig config, GameSettingMenu __instance) { diff --git a/MiraAPI/Hud/CustomActionButton.cs b/MiraAPI/Hud/CustomActionButton.cs index f2f5d26..3b65f5f 100644 --- a/MiraAPI/Hud/CustomActionButton.cs +++ b/MiraAPI/Hud/CustomActionButton.cs @@ -1,4 +1,5 @@ using MiraAPI.Utilities; +using MiraAPI.Utilities.Assets; using UnityEngine; using UnityEngine.Events; diff --git a/MiraAPI/IMiraConfig.cs b/MiraAPI/IMiraConfig.cs index adf63a5..3cde9a5 100644 --- a/MiraAPI/IMiraConfig.cs +++ b/MiraAPI/IMiraConfig.cs @@ -1,4 +1,5 @@ using MiraAPI.Utilities; +using MiraAPI.Utilities.Assets; using UnityEngine; namespace MiraAPI diff --git a/MiraAPI/MiraAPI.csproj b/MiraAPI/MiraAPI.csproj index 052c0f7..c2c0897 100644 --- a/MiraAPI/MiraAPI.csproj +++ b/MiraAPI/MiraAPI.csproj @@ -19,7 +19,7 @@ - + diff --git a/MiraAPI/Networking/SyncOptionsRpc.cs b/MiraAPI/Networking/SyncOptionsRpc.cs index 1af1837..ee4aaca 100644 --- a/MiraAPI/Networking/SyncOptionsRpc.cs +++ b/MiraAPI/Networking/SyncOptionsRpc.cs @@ -2,7 +2,7 @@ using Reactor.Networking.Attributes; using Reactor.Networking.Rpc; -namespace MiraAPI.Networking.Options; +namespace MiraAPI.Networking; // METHOD RPC DOESNT WORK WITH THE ARRAYS AND STUFF SO THIS IS HOW WE WILL DO IT FOR NOW [RegisterCustomRpc((uint)MiraRpc.SyncGameOptions)] diff --git a/MiraAPI/Networking/SyncRoleOptionsRpc.cs b/MiraAPI/Networking/SyncRoleOptionsRpc.cs index eb259da..280dd5a 100644 --- a/MiraAPI/Networking/SyncRoleOptionsRpc.cs +++ b/MiraAPI/Networking/SyncRoleOptionsRpc.cs @@ -1,11 +1,11 @@ -using Hazel; +using System; +using Hazel; using MiraAPI.Roles; using Reactor.Networking.Attributes; using Reactor.Networking.Rpc; using Reactor.Utilities; -using System; -namespace MiraAPI.Networking.Options; +namespace MiraAPI.Networking; [RegisterCustomRpc((uint)MiraRpc.SyncRoleOptions)] public class SyncRoleOptionsRpc(MiraAPIPlugin plugin, uint id) : PlayerCustomRpc(plugin, id) diff --git a/MiraAPI/Patches/HudManagerPatches.cs b/MiraAPI/Patches/HudManagerPatches.cs index 7e65a24..07d7464 100644 --- a/MiraAPI/Patches/HudManagerPatches.cs +++ b/MiraAPI/Patches/HudManagerPatches.cs @@ -18,66 +18,10 @@ namespace MiraAPI.Patches /// Custom role tab private static TaskPanelBehaviour _roleTab; - /// Scrolling increment - private const float Increment = 0.3f; - - /// Bounds for scrolling - private static FloatRange _bounds = new FloatRange(2.9f, 4.6f); - - /// - /// Add options scrolling (on the hud text) - /// - public static void OptionsScrollingLogic(HudManager __instance) - { - if (Input.GetKeyDown(KeyCode.Tab)) - { - if (ToHudStringPatch.CurrentPage >= ModdedOptionsManager.RegisteredMods.Count) - { - ToHudStringPatch.CurrentPage = 0; - } - else - { - ToHudStringPatch.CurrentPage += 1; - } - } - - var numPlayers = GameData.Instance ? GameData.Instance.PlayerCount : 10; - HudManager.Instance.GameSettings.text = GameOptionsManager.Instance.CurrentGameOptions.ToHudString(numPlayers); - var pos = __instance.GameSettings.transform.localPosition; - - if (!PlayerControl.LocalPlayer.CanMove) - { - return; - } - - if (ToHudStringPatch.CurrentPage == 0) - { - __instance.GameSettings.transform.localPosition = new Vector3(pos.x, _bounds.min, pos.z); - return; - } - - _bounds.max = __instance.GameSettings.rectTransform.sizeDelta.y + _bounds.min; - - var delta = Input.mouseScrollDelta.y switch - { - > 0f => -Increment, - < 0f => Increment, - _ => 0f - }; - - pos = new Vector3(pos.x, Mathf.Clamp(pos.y + delta, _bounds.min, _bounds.max), pos.z); - - __instance.GameSettings.transform.localPosition = pos; - } - [HarmonyPostfix, HarmonyPatch("Update")] public static void UpdatePostfix(HudManager __instance) { var local = PlayerControl.LocalPlayer; - if (LobbyBehaviour.Instance) - { - OptionsScrollingLogic(__instance); - } if (AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started && !ShipStatus.Instance) { diff --git a/MiraAPI/Patches/Options/GameSettingsMenuPatches.cs b/MiraAPI/Patches/Options/GameSettingsMenuPatches.cs index 333ddcd..0bf8465 100644 --- a/MiraAPI/Patches/Options/GameSettingsMenuPatches.cs +++ b/MiraAPI/Patches/Options/GameSettingsMenuPatches.cs @@ -1,10 +1,10 @@ using HarmonyLib; -using MiraAPI.API.GameOptions; using MiraAPI.GameOptions; using Reactor.Utilities; using Reactor.Utilities.Extensions; using System.Collections.Generic; using System.Linq; +using MiraAPI.GameOptions.UI; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/Patches/Roles/RolesSettingsMenuPatches.cs b/MiraAPI/Patches/Roles/RolesSettingsMenuPatches.cs index 2c2fe52..374ea35 100644 --- a/MiraAPI/Patches/Roles/RolesSettingsMenuPatches.cs +++ b/MiraAPI/Patches/Roles/RolesSettingsMenuPatches.cs @@ -1,11 +1,11 @@ using AmongUs.GameOptions; using HarmonyLib; using Il2CppInterop.Runtime; -using MiraAPI.Networking.Options; using MiraAPI.Roles; using Reactor.Networking.Rpc; using Reactor.Utilities.Extensions; using System.Linq; +using MiraAPI.Networking; using UnityEngine; using Object = UnityEngine.Object; diff --git a/MiraAPI/Roles/CustomRoleManager.cs b/MiraAPI/Roles/CustomRoleManager.cs index e3c02a9..962c551 100644 --- a/MiraAPI/Roles/CustomRoleManager.cs +++ b/MiraAPI/Roles/CustomRoleManager.cs @@ -2,7 +2,6 @@ using BepInEx; using BepInEx.Unity.IL2CPP; using Il2CppInterop.Runtime; -using MiraAPI.Networking.Options; using Reactor.Localization.Utilities; using Reactor.Networking.Rpc; using Reactor.Utilities; @@ -10,6 +9,7 @@ using Reactor.Utilities.Extensions; using System; using System.Collections.Generic; using System.Linq; +using MiraAPI.Networking; using TMPro; using UnityEngine; using Object = UnityEngine.Object; @@ -82,7 +82,7 @@ public static class CustomRoleManager } else { - ModRoles.TryAdd(info, new List() { roleBehaviour }); + ModRoles.TryAdd(info, [roleBehaviour]); } CustomRoles.Add(roleId, roleBehaviour); diff --git a/MiraAPI/Roles/ICustomRole.cs b/MiraAPI/Roles/ICustomRole.cs index e76cec8..e15ab68 100644 --- a/MiraAPI/Roles/ICustomRole.cs +++ b/MiraAPI/Roles/ICustomRole.cs @@ -53,7 +53,7 @@ public interface ICustomRole void HudUpdate(HudManager hudManager) { } - string GetCustomEjectionMessage(GameData.PlayerInfo player) + string GetCustomEjectionMessage(NetworkedPlayerInfo player) { return Team == ModdedRoleTeams.Impostor ? $"{player.PlayerName} was The {RoleName}" : null; } diff --git a/MiraAPI/Utilities/Assets/LoadableAsset.cs b/MiraAPI/Utilities/Assets/LoadableAsset.cs index 537aa38..e2e63bc 100644 --- a/MiraAPI/Utilities/Assets/LoadableAsset.cs +++ b/MiraAPI/Utilities/Assets/LoadableAsset.cs @@ -1,4 +1,4 @@ -namespace MiraAPI.Utilities +namespace MiraAPI.Utilities.Assets { public abstract class LoadableAsset where T : UnityEngine.Object { diff --git a/MiraAPI/Utilities/Assets/LoadableBundleAsset.cs b/MiraAPI/Utilities/Assets/LoadableBundleAsset.cs index a1ace01..7d820c3 100644 --- a/MiraAPI/Utilities/Assets/LoadableBundleAsset.cs +++ b/MiraAPI/Utilities/Assets/LoadableBundleAsset.cs @@ -1,8 +1,8 @@ -using Reactor.Utilities.Extensions; -using System; +using System; +using Reactor.Utilities.Extensions; using UnityEngine; -namespace MiraAPI.Utilities +namespace MiraAPI.Utilities.Assets { public class LoadableBundleAsset(string name, AssetBundle bundle) : LoadableAsset where T : UnityEngine.Object {