diff --git a/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs b/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs index ddd0e4b..f0fb354 100644 --- a/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs +++ b/MiraAPI/Patches/Options/GameOptionsMenuPatch.cs @@ -25,17 +25,17 @@ public static class GameOptionsMenuPatch __instance.MapPicker.gameObject.SetActive(false); float num = 2.1f; - + var filteredGroups = GameSettingMenuPatches.SelectedMod.OptionGroups.Where(x => x.GroupVisible.Invoke() && x.AdvancedRole is null); - + foreach (IModdedOptionGroup group in filteredGroups) { - var filteredOpts = ModdedOptionsManager.Groups[group].Where(x=>x.Visible.Invoke()).ToList(); + var filteredOpts = ModdedOptionsManager.Groups[group].Where(x => x.Visible.Invoke()).ToList(); if (filteredOpts.Count == 0) { continue; } - + CategoryHeaderMasked categoryHeaderMasked = Object.Instantiate(__instance.categoryHeaderOrigin, Vector3.zero, Quaternion.identity, __instance.settingsContainer); categoryHeaderMasked.SetHeader(CustomStringName.CreateAndRegister(group.GroupName), 20); if (group.GroupColor != Color.clear) @@ -46,7 +46,7 @@ public static class GameOptionsMenuPatch categoryHeaderMasked.transform.localScale = Vector3.one * 0.63f; categoryHeaderMasked.transform.localPosition = new Vector3(-0.903f, num, -2f); num -= 0.63f; - + foreach (var opt in filteredOpts) { OptionBehaviour newOpt = opt.CreateOption(__instance.checkboxOrigin, __instance.numberOptionOrigin, __instance.stringOptionOrigin, __instance.settingsContainer); @@ -83,7 +83,6 @@ public static class GameOptionsMenuPatch } __instance.scrollBar.SetYBoundsMax(-num - 1.65f); - return false; } diff --git a/MiraAPI/Patches/Options/GameSettingMenuPatches.cs b/MiraAPI/Patches/Options/GameSettingMenuPatches.cs index 47e002a..24f2a43 100644 --- a/MiraAPI/Patches/Options/GameSettingMenuPatches.cs +++ b/MiraAPI/Patches/Options/GameSettingMenuPatches.cs @@ -16,7 +16,7 @@ namespace MiraAPI.Patches.Options; public static class GameSettingMenuPatches { public static int CurrentSelectedMod { get; private set; } - + public static MiraPluginInfo SelectedMod { get; private set; } private static TextMeshPro _text; @@ -116,12 +116,14 @@ public static class GameSettingMenuPatches roleChance.gameObject.DestroyImmediate(); } - roles.roleChances.Clear(); roles.roleChances = null; roles.AdvancedRolesSettings.gameObject.SetActive(false); roles.RoleChancesSettings.gameObject.SetActive(true); roles.SetQuotaTab(); + + roles.scrollBar.CalculateAndSetYBounds(roles.roleChances.Count + 3, 1f, 6f, 0.43f); + roles.scrollBar.ScrollToTop(); } if (settings?.Children != null) @@ -150,6 +152,7 @@ public static class GameSettingMenuPatches settings.Children = null; settings.Initialize(); + settings.scrollBar.ScrollToTop(); } } } diff --git a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs index 847678c..7cf44a0 100644 --- a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs +++ b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs @@ -1,13 +1,13 @@ using HarmonyLib; +using MiraAPI.Networking; using MiraAPI.Roles; using MiraAPI.Utilities; using MiraAPI.Utilities.Assets; +using Reactor.Networking.Rpc; +using Reactor.Utilities; using Reactor.Utilities.Extensions; using System; using System.Linq; -using MiraAPI.Networking; -using Reactor.Networking.Rpc; -using Reactor.Utilities; using TMPro; using UnityEngine; using UnityEngine.Events; @@ -25,7 +25,7 @@ public static class RoleSettingMenuPatches { __instance.roleChances = new Il2CppSystem.Collections.Generic.List(); __instance.advancedSettingChildren = new Il2CppSystem.Collections.Generic.List(); - + var maskBg = __instance.scrollBar.transform.FindChild("MaskBg"); if (GameSettingMenuPatches.CurrentSelectedMod == 0) @@ -45,17 +45,17 @@ public static class RoleSettingMenuPatches __instance.scrollBar.transform.localPosition = new Vector3(-1.4957f, 1.5261f, -4); maskBg.localPosition = new Vector3(1.5353f, -1.0607f, -.1f); maskBg.localScale = new Vector3(6.6811f, 4.1563f, 0.5598f); - + int num3 = 0; var crewRoles = GameSettingMenuPatches.SelectedMod.CustomRoles.Values .OfType() .Where(role => role.Team == ModdedRoleTeams.Crewmate && !role.HideSettings) .ToList(); - + if (crewRoles.Count > 0) { - + CategoryHeaderEditRole categoryHeaderEditRole = Object.Instantiate(__instance.categoryHeaderEditRoleOrigin, Vector3.zero, Quaternion.identity, __instance.RoleChancesSettings.transform); categoryHeaderEditRole.SetHeader(StringNames.CrewmateRolesHeader, 20); categoryHeaderEditRole.transform.localPosition = new Vector3(4.986f, num, -2f); @@ -67,7 +67,7 @@ public static class RoleSettingMenuPatches num3++; } } - + var impRoles = GameSettingMenuPatches.SelectedMod.CustomRoles.Values .OfType() .Where(role => role.Team == ModdedRoleTeams.Impostor && !role.HideSettings) @@ -89,7 +89,7 @@ public static class RoleSettingMenuPatches num3++; } } - + var neutRoles = GameSettingMenuPatches.SelectedMod.CustomRoles.Values .OfType() .Where(role => role.Team == ModdedRoleTeams.Neutral && !role.HideSettings) @@ -104,7 +104,7 @@ public static class RoleSettingMenuPatches categoryHeaderEditRole3.Title.text = "Neutral Roles"; categoryHeaderEditRole3.transform.localPosition = new Vector3(4.986f, num, -2f); num -= 0.522f; - + foreach (var role in neutRoles) { CreateQuotaOption(__instance, role as RoleBehaviour, ref num, num3); @@ -161,7 +161,7 @@ public static class RoleSettingMenuPatches private static void CreateAdvancedSettings(RolesSettingsMenu __instance, RoleBehaviour role) { - foreach (var option in __instance.advancedSettingChildren) + foreach (var option in __instance.advancedSettingChildren) { Object.Destroy(option.gameObject); } @@ -171,7 +171,7 @@ public static class RoleSettingMenuPatches float num = -0.872f; var filteredOptions = GameSettingMenuPatches.SelectedMod.Options.Where(x => x.AdvancedRole == role.GetType()); - + foreach (var option in filteredOptions) { if (option.AdvancedRole is not null && option.AdvancedRole != role.GetType()) @@ -207,7 +207,7 @@ public static class RoleSettingMenuPatches { ICustomRole customRole = role as ICustomRole; __instance.roleDescriptionText.text = customRole.RoleLongDescription; - __instance.roleTitleText.text = DestroyableSingleton.Instance.GetString(role.StringName, []); + __instance.roleTitleText.text = DestroyableSingleton.Instance.GetString(role.StringName, Array.Empty()); __instance.roleScreenshot.sprite = Sprite.Create(customRole.OptionsScreenshot.LoadAsset().texture, new Rect(0, 0, 370, 230), Vector2.one / 2, 100); __instance.roleScreenshot.drawMode = SpriteDrawMode.Sliced; __instance.roleHeaderSprite.color = customRole.RoleColor;