diff --git a/MiraAPI/Patches/ServerDropdownPatch.cs b/MiraAPI/Patches/ServerDropdownPatch.cs index 36da2d7..6ff7e68 100644 --- a/MiraAPI/Patches/ServerDropdownPatch.cs +++ b/MiraAPI/Patches/ServerDropdownPatch.cs @@ -1,4 +1,6 @@ -using HarmonyLib; +using System.Linq; +using HarmonyLib; +using Reactor.Utilities; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; @@ -8,20 +10,29 @@ namespace MiraAPI.Patches; [HarmonyPatch(typeof(ServerDropdown), nameof(ServerDropdown.FillServerOptions))] public static class ServerDropdownPatch { + public static bool RegionEquals(this IRegionInfo region, IRegionInfo other) + { + return region.Name == other.Name && + region.TranslateName == other.TranslateName && + region.PingServer == other.PingServer && + region.TargetServer == other.TargetServer && + region.Servers.All(s=>other.Servers.Any(x=>x.Equals(s))); + } + public static bool Prefix(ServerDropdown __instance) { var num = 0; __instance.background.size = new Vector2(8.4f, 4.8f); - foreach (var regionInfo in DestroyableSingleton.Instance.AvailableRegions) + foreach (var regionInfo in ServerManager.Instance.AvailableRegions) { var findingGame = SceneManager.GetActiveScene().name is "FindAGame"; - if (DestroyableSingleton.Instance.CurrentRegion.Equals(regionInfo)) + if (ServerManager.Instance.CurrentRegion.RegionEquals(regionInfo)) { __instance.defaultButtonSelected = __instance.firstOption; __instance.firstOption.ChangeButtonText( - DestroyableSingleton.Instance.GetStringWithDefault( + TranslationController.Instance.GetStringWithDefault( regionInfo.TranslateName, regionInfo.Name)); } @@ -34,11 +45,11 @@ public static class ServerDropdownPatch { x += 2; } - var y = -0.55f * (num / 2); + var y = -0.55f * (num / 2f); serverListButton.transform.localPosition = new Vector3(x, __instance.y_posButton + y, -1f); serverListButton.transform.localScale = Vector3.one; serverListButton.Text.text = - DestroyableSingleton.Instance.GetStringWithDefault( + TranslationController.Instance.GetStringWithDefault( regionInfo.TranslateName, regionInfo.Name); serverListButton.Text.ForceMeshUpdate(); @@ -47,9 +58,9 @@ public static class ServerDropdownPatch __instance.controllerSelectable.Add(serverListButton.Button); __instance.background.transform.localPosition = new Vector3( findingGame ? 2f : 0f, - __instance.initialYPos + (-0.3f * (num / 2)), + __instance.initialYPos + -0.3f * (num / 2f), 0f); - __instance.background.size = new Vector2(__instance.background.size.x, 1.2f + (0.6f * (num / 2))); + __instance.background.size = new Vector2(__instance.background.size.x, 1.2f + 0.6f * (num / 2f)); num++; } }