From fd5a11394a31ad969265029d032a6ce814c1ed8c Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 14:15:05 +0100 Subject: [PATCH] Fixed bug caused by reckless code Changed how regions menu is displayed --- Unify/Patches/Regions.cs | 39 +++++++++++++++++++++++++++-------- Unify/Unify.cs | 4 +++- build/Unify-2021.3.31.3s.dll | Bin 11264 -> 11776 bytes 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Unify/Patches/Regions.cs b/Unify/Patches/Regions.cs index 917b447..14e4982 100644 --- a/Unify/Patches/Regions.cs +++ b/Unify/Patches/Regions.cs @@ -102,8 +102,8 @@ namespace Unify.Patches DirectConnect.OnEnter = new Button.ButtonClickedEvent(); DirectConnect.OnEnter.AddListener((Action) UpdateRegion); - int offset = ((ServerManager.DefaultRegions.Length + 1) / 2) + 1; - DirectConnect.transform.localPosition = new Vector3(0, 2f - (offset / 2f), -100f); + int offset = _newRegions.Length + ModRegions.Count; + DirectConnect.transform.localPosition = new Vector3(0, 1f - (offset / 2f), -100f); } } @@ -115,15 +115,35 @@ namespace Unify.Patches DirectConnect.gameObject.SetActive(true); var regionButtons = __instance.ButtonPool.activeChildren.ToArray(); - int half = (regionButtons.Length + 1) / 2; - - for (int x = 0; x < regionButtons.Length; x++) - { - ServerListButton regionButton = regionButtons[x].Cast(); - regionButton.transform.localPosition = new Vector3(1.25f * ((x < half)? -1: 1), 2f - 0.5f * (x - ((x < half)? 0 : half)), 0f); + for (int i = 0; i < regionButtons.Length; i++) + { + ServerListButton regionButton = regionButtons[i].Cast(); + + (float x, float y) = CalculatePosition(i); + regionButton.transform.localPosition = new Vector3(1.25f + x, 2f - 0.5f * y, 0f); } } + + private static (float x, float y) CalculatePosition(int index) + { + // currently broken + /*if (DirectRegion != null && ServerManager.DefaultRegions[index].Name == DirectRegion.Name) + { + int offset = Math.Max( + Math.Max(LoadCustomUserRegions().Length, _newRegions.Length + ModRegions.Count), + _oldRegions.Length); + return (1.25f, 2f - offset); + }*/ + + bool isCustomRegion = index >= _oldRegions.Length; + bool isCustomUserRegion = index >= _oldRegions.Length + _newRegions.Length + ModRegions.Count; + float x = (isCustomRegion ? 3f : 0) + (isCustomUserRegion ? 3f : 0) - 4.25f; + float y = index - (isCustomRegion ? _oldRegions.Length : 0) - + (isCustomUserRegion ? _newRegions.Length + ModRegions.Count : 0); + + return (x, y); + } } [HarmonyPatch(typeof(JoinGameButton), nameof(JoinGameButton.OnClick))] @@ -161,4 +181,5 @@ namespace Unify.Patches } // TODO: -// Store custom servers in a JSON file \ No newline at end of file +// Store custom servers in a JSON file +// Mention `AddRegion` method in README \ No newline at end of file diff --git a/Unify/Unify.cs b/Unify/Unify.cs index 96aa87f..c1f9ee8 100644 --- a/Unify/Unify.cs +++ b/Unify/Unify.cs @@ -6,6 +6,7 @@ using BepInEx; using BepInEx.Configuration; using BepInEx.IL2CPP; using HarmonyLib; +using Hazel.Udp; using Reactor; using Unify.Patches; @@ -42,7 +43,8 @@ namespace Unify RegionsPatch.Patch(); - Harmony.UnpatchAll(ReactorPlugin.Id); + // Unpatches the modded handshake, because Impostor is STILL not fully updated yet + Harmony.Unpatch(typeof(UdpConnection).GetMethod("HandleSend"), HarmonyPatchType.Prefix, ReactorPlugin.Id); Harmony.PatchAll(); } diff --git a/build/Unify-2021.3.31.3s.dll b/build/Unify-2021.3.31.3s.dll index 4d06d21906b99a6cd7cd068bc37bde221476d02b..dab467af08f55da7be93b2769301c08778f5cf0b 100644 GIT binary patch delta 5115 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 delta 4640 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 L!C{}Uo;u_IRXg_`