From f80b6a5330beb13741a73e6a78ccc639c8cc2bc1 Mon Sep 17 00:00:00 2001 From: miniduikboot Date: Tue, 23 Jul 2024 21:01:54 +0200 Subject: [PATCH] Support 2024.6.18 (#84) Co-authored-by: Pietrodjaowjao Co-authored-by: js6pak --- AmongUs.props | 2 +- Reactor.Benchmarks/packages.lock.json | 6 ++-- .../Patches/GameOptionsPatches.cs | 4 +-- Reactor.Debugger/Window/Tabs/GameTab.cs | 10 +++--- Reactor.Debugger/packages.lock.json | 6 ++-- Reactor.Example/packages.lock.json | 6 ++-- Reactor/Networking/Patches/ClientPatches.cs | 32 ++++++++++++------- Reactor/Networking/Patches/HttpPatches.cs | 13 ++------ Reactor/packages.lock.json | 6 ++-- 9 files changed, 44 insertions(+), 41 deletions(-) diff --git a/AmongUs.props b/AmongUs.props index 489c57b..a72a589 100644 --- a/AmongUs.props +++ b/AmongUs.props @@ -1,7 +1,7 @@ - + diff --git a/Reactor.Benchmarks/packages.lock.json b/Reactor.Benchmarks/packages.lock.json index 2e8b71c..cd4ff5e 100644 --- a/Reactor.Benchmarks/packages.lock.json +++ b/Reactor.Benchmarks/packages.lock.json @@ -4,9 +4,9 @@ "net6.0": { "AmongUs.GameLibs.Steam": { "type": "Direct", - "requested": "[2023.11.28, )", - "resolved": "2023.11.28", - "contentHash": "EsKrZS4tjTRrY7mtZls3tMy54zije4vleEA9s0UGUr4SF3qm2axR6wMncyIJCk4ACXlN5Bxpsd3/upDe9Gnx6A==" + "requested": "[2024.6.18, )", + "resolved": "2024.6.18", + "contentHash": "xb+HP1xXn4/ES8AgXpk9xeoW568LFYw5NTjY6bHwd6vQjHDf2kT1xHMmQ1me5Vfee/Gp69YIMZDXUAUToG7Elg==" }, "BenchmarkDotNet": { "type": "Direct", diff --git a/Reactor.Debugger/Patches/GameOptionsPatches.cs b/Reactor.Debugger/Patches/GameOptionsPatches.cs index be7f0e4..4611a76 100644 --- a/Reactor.Debugger/Patches/GameOptionsPatches.cs +++ b/Reactor.Debugger/Patches/GameOptionsPatches.cs @@ -28,10 +28,10 @@ internal static class GameOptionsPatches [HarmonyPrefix] public static void UnlockAllOptions(GameSettingMenu __instance) { - __instance.HideForOnline = new Il2CppReferenceArray(0); + __instance.GameSettingsTab.HideForOnline = new Il2CppReferenceArray(0); } - [HarmonyPatch(typeof(NumberOption), nameof(NumberOption.OnEnable))] + [HarmonyPatch(typeof(NumberOption), nameof(NumberOption.SetUpFromData))] [HarmonyPostfix] public static void UnlockOptionRange(NumberOption __instance) { diff --git a/Reactor.Debugger/Window/Tabs/GameTab.cs b/Reactor.Debugger/Window/Tabs/GameTab.cs index 7747bae..ff2bb9f 100644 --- a/Reactor.Debugger/Window/Tabs/GameTab.cs +++ b/Reactor.Debugger/Window/Tabs/GameTab.cs @@ -69,11 +69,13 @@ internal sealed class GameTab : BaseTab private static void SpawnDummy() { - var playerControl = Object.Instantiate(TutorialManager.Instance.PlayerPrefab); + var playerControl = Object.Instantiate(AmongUsClient.Instance.PlayerPrefab); var playerId = playerControl.PlayerId = (byte) GameData.Instance.GetAvailableId(); - GameData.Instance.AddPlayer(playerControl); + var data = GameData.Instance.AddDummy(playerControl); + AmongUsClient.Instance.Spawn(data); AmongUsClient.Instance.Spawn(playerControl); + playerControl.isDummy = true; playerControl.transform.position = PlayerControl.LocalPlayer.transform.position; playerControl.GetComponent().enabled = true; @@ -88,8 +90,8 @@ internal sealed class GameTab : BaseTab playerControl.SetSkin(HatManager.Instance.allSkins[playerId % HatManager.Instance.allSkins.Count].ProdId, color); playerControl.SetVisor(HatManager.Instance.allVisors[playerId % HatManager.Instance.allVisors.Count].ProdId, color); playerControl.SetNamePlate(HatManager.Instance.allNamePlates[playerId % HatManager.Instance.allNamePlates.Count].ProdId); - playerControl.Data.PlayerLevel = playerId; + data.PlayerLevel = playerId; - GameData.Instance.RpcSetTasks(playerControl.PlayerId, new Il2CppStructArray(0)); + data.RpcSetTasks(new Il2CppStructArray(0)); } } diff --git a/Reactor.Debugger/packages.lock.json b/Reactor.Debugger/packages.lock.json index 190fd3b..fc4ad1e 100644 --- a/Reactor.Debugger/packages.lock.json +++ b/Reactor.Debugger/packages.lock.json @@ -4,9 +4,9 @@ "net6.0": { "AmongUs.GameLibs.Steam": { "type": "Direct", - "requested": "[2023.11.28, )", - "resolved": "2023.11.28", - "contentHash": "EsKrZS4tjTRrY7mtZls3tMy54zije4vleEA9s0UGUr4SF3qm2axR6wMncyIJCk4ACXlN5Bxpsd3/upDe9Gnx6A==" + "requested": "[2024.6.18, )", + "resolved": "2024.6.18", + "contentHash": "xb+HP1xXn4/ES8AgXpk9xeoW568LFYw5NTjY6bHwd6vQjHDf2kT1xHMmQ1me5Vfee/Gp69YIMZDXUAUToG7Elg==" }, "BepInEx.AutoPlugin": { "type": "Direct", diff --git a/Reactor.Example/packages.lock.json b/Reactor.Example/packages.lock.json index 190fd3b..fc4ad1e 100644 --- a/Reactor.Example/packages.lock.json +++ b/Reactor.Example/packages.lock.json @@ -4,9 +4,9 @@ "net6.0": { "AmongUs.GameLibs.Steam": { "type": "Direct", - "requested": "[2023.11.28, )", - "resolved": "2023.11.28", - "contentHash": "EsKrZS4tjTRrY7mtZls3tMy54zije4vleEA9s0UGUr4SF3qm2axR6wMncyIJCk4ACXlN5Bxpsd3/upDe9Gnx6A==" + "requested": "[2024.6.18, )", + "resolved": "2024.6.18", + "contentHash": "xb+HP1xXn4/ES8AgXpk9xeoW568LFYw5NTjY6bHwd6vQjHDf2kT1xHMmQ1me5Vfee/Gp69YIMZDXUAUToG7Elg==" }, "BepInEx.AutoPlugin": { "type": "Direct", diff --git a/Reactor/Networking/Patches/ClientPatches.cs b/Reactor/Networking/Patches/ClientPatches.cs index 8197333..10e9779 100644 --- a/Reactor/Networking/Patches/ClientPatches.cs +++ b/Reactor/Networking/Patches/ClientPatches.cs @@ -26,10 +26,10 @@ internal static class ClientPatches } } - [HarmonyPatch(typeof(InnerNetClient._HandleGameDataInner_d__39), nameof(InnerNetClient._HandleGameDataInner_d__39.MoveNext))] + [HarmonyPatch(typeof(InnerNetClient._HandleGameDataInner_d__41), nameof(InnerNetClient._HandleGameDataInner_d__41.MoveNext))] public static class HandleGameDataInnerPatch { - public static bool Prefix(InnerNetClient._HandleGameDataInner_d__39 __instance, ref bool __result) + public static bool Prefix(InnerNetClient._HandleGameDataInner_d__41 __instance, ref bool __result) { var innerNetClient = __instance.__4__this; var reader = __instance.reader; @@ -125,18 +125,22 @@ internal static class ClientPatches } } - [HarmonyPatch(typeof(InnerNetClient._CoSendSceneChange_d__30), nameof(InnerNetClient._CoSendSceneChange_d__30.MoveNext))] + [HarmonyPatch(typeof(InnerNetClient._CoSendSceneChange_d__32), nameof(InnerNetClient._CoSendSceneChange_d__32.MoveNext))] public static class CoSendSceneChangePatch { - public static bool Prefix(InnerNetClient._CoSendSceneChange_d__30 __instance, ref bool __result) + public static bool Prefix(InnerNetClient._CoSendSceneChange_d__32 __instance, ref bool __result) { if (ReactorConnection.Instance!.Syncer != Syncer.Host) return true; var innerNetClient = __instance.__4__this; - if (__instance.__1__state == 2) + // Check for the conditions when the scene change message should be sent + if (!innerNetClient.AmHost && + innerNetClient.connection.State == ConnectionState.Connected && + innerNetClient.ClientId >= 0) { - if (!innerNetClient.AmHost && innerNetClient.connection.State == ConnectionState.Connected) + var clientData = innerNetClient.FindClientById(innerNetClient.ClientId); + if (clientData != null) { var writer = MessageWriter.Get(SendOption.Reliable); writer.StartMessage(Tags.GameData); @@ -154,21 +158,25 @@ internal static class ClientPatches writer.EndMessage(); innerNetClient.SendOrDisconnect(writer); writer.Recycle(); - } - __instance.__1__state = -1; - __result = false; - return false; + // Create a new coroutine to let AmongUsClient handle scene changes too + innerNetClient.StartCoroutine(innerNetClient.CoOnPlayerChangedScene(clientData, __instance.sceneName)); + + // Cancel this coroutine + __instance.__1__state = -1; + __result = false; + return false; + } } return true; } } - [HarmonyPatch(typeof(InnerNetClient._CoHandleSpawn_d__40), nameof(InnerNetClient._CoHandleSpawn_d__40.MoveNext))] + [HarmonyPatch(typeof(InnerNetClient._CoHandleSpawn_d__42), nameof(InnerNetClient._CoHandleSpawn_d__42.MoveNext))] public static class CoHandleSpawnPatch { - public static void Postfix(InnerNetClient._CoHandleSpawn_d__40 __instance, bool __result) + public static void Postfix(InnerNetClient._CoHandleSpawn_d__42 __instance, bool __result) { if (ReactorConnection.Instance!.Syncer != Syncer.Host) return; diff --git a/Reactor/Networking/Patches/HttpPatches.cs b/Reactor/Networking/Patches/HttpPatches.cs index a47dd98..9d1355c 100644 --- a/Reactor/Networking/Patches/HttpPatches.cs +++ b/Reactor/Networking/Patches/HttpPatches.cs @@ -106,17 +106,10 @@ internal static class HttpPatches { Warning("Vanilla region, locking public toggle"); - __instance.MakePublicButtonBehaviour.enabled = false; - var actionMapGlyphDisplay = __instance.MakePublicButton.GetComponentInChildren(includeInactive: true); - if (actionMapGlyphDisplay) - { - actionMapGlyphDisplay.gameObject.SetActive(value: false); - } + __instance.HostPublicButton.enabled = false; + __instance.HostPrivateButton.transform.FindChild("Inactive").GetComponent().color = new Color(1, 1, 1, 0.5f); - __instance.MakePublicButton.color = new Color(1, 1, 1, 0.5f); - __instance.MakePublicButton.sprite = __instance.PrivateGameImage; - - var onClick = __instance.MakePublicButton.GetComponent().OnClick = new Button.ButtonClickedEvent(); + var onClick = __instance.HostPrivateButton.OnClick = new Button.ButtonClickedEvent(); onClick.AddListener((Action) MakePublicDisallowedPopup.Show); if (AmongUsClient.Instance.AmHost && AmongUsClient.Instance.IsGamePublic) diff --git a/Reactor/packages.lock.json b/Reactor/packages.lock.json index 41bd8e0..d06c335 100644 --- a/Reactor/packages.lock.json +++ b/Reactor/packages.lock.json @@ -4,9 +4,9 @@ "net6.0": { "AmongUs.GameLibs.Steam": { "type": "Direct", - "requested": "[2023.11.28, )", - "resolved": "2023.11.28", - "contentHash": "EsKrZS4tjTRrY7mtZls3tMy54zije4vleEA9s0UGUr4SF3qm2axR6wMncyIJCk4ACXlN5Bxpsd3/upDe9Gnx6A==" + "requested": "[2024.6.18, )", + "resolved": "2024.6.18", + "contentHash": "xb+HP1xXn4/ES8AgXpk9xeoW568LFYw5NTjY6bHwd6vQjHDf2kT1xHMmQ1me5Vfee/Gp69YIMZDXUAUToG7Elg==" }, "BepInEx.AutoPlugin": { "type": "Direct",