From 782a4f4b7f614bc87155b10fa70c3750ff16b96b Mon Sep 17 00:00:00 2001 From: NotSugden <28943913+NotSugden@users.noreply.github.com> Date: Mon, 12 Jul 2021 08:25:53 +0100 Subject: [PATCH] refactor: enable chat only when needed --- .../InvestigatorMod/AddPrints.cs | 19 ++++++++------- .../InvestigatorMod/Footprint.cs | 7 +++--- .../InvestigatorMod/StartGame.cs | 9 +++---- .../Patches/CrewmateRoles/LoversMod/Chat.cs | 24 ++++++++++++++----- source/Patches/CrewmateRoles/LoversMod/Die.cs | 15 ++++-------- .../Patches/CrewmateRoles/LoversMod/Outro.cs | 8 +++---- .../Patches/NeutralRoles/JesterMod/EndGame.cs | 6 ++--- 7 files changed, 46 insertions(+), 42 deletions(-) diff --git a/source/Patches/CrewmateRoles/InvestigatorMod/AddPrints.cs b/source/Patches/CrewmateRoles/InvestigatorMod/AddPrints.cs index cc7ca41a2..ac1fc7c05 100644 --- a/source/Patches/CrewmateRoles/InvestigatorMod/AddPrints.cs +++ b/source/Patches/CrewmateRoles/InvestigatorMod/AddPrints.cs @@ -18,7 +18,6 @@ public static class AddPrints private static Vector2 Position(PlayerControl player) => player.GetTruePosition() + new Vector2(0, 0.366667f); - public static void Postfix(PlayerControl __instance) { // only update on local player @@ -32,17 +31,19 @@ public static void Postfix(PlayerControl __instance) _time -= Interval; foreach (var player in PlayerControl.AllPlayerControls) { - if (player == null || player.Data.IsDead || - player.PlayerId == PlayerControl.LocalPlayer.PlayerId) continue; + if (player.Data.IsDead || player.AmOwner) continue; var canPlace = !investigator.AllPrints.Any(print => Vector3.Distance(print.Position, Position(player)) < 0.5f && print.Color.a > 0.5 && - print.Player.PlayerId == player.PlayerId); - - if (Vent && ShipStatus.Instance != null) - if (ShipStatus.Instance.AllVents.Any(vent => - Vector2.Distance(vent.gameObject.transform.position, Position(player)) < 1f)) - canPlace = false; + print.Player.PlayerId == player.PlayerId + ); + + if ( + Vent && ShipStatus.Instance != null && + ShipStatus.Instance.AllVents.Any(vent => + Vector2.Distance(vent.gameObject.transform.position, Position(player)) < 1f + ) + ) canPlace = false; if (canPlace) new Footprint(player, investigator); } diff --git a/source/Patches/CrewmateRoles/InvestigatorMod/Footprint.cs b/source/Patches/CrewmateRoles/InvestigatorMod/Footprint.cs index 44df0f652..9f3ca85fa 100644 --- a/source/Patches/CrewmateRoles/InvestigatorMod/Footprint.cs +++ b/source/Patches/CrewmateRoles/InvestigatorMod/Footprint.cs @@ -72,10 +72,11 @@ public bool Update() if (alpha < 0 || alpha > 1) alpha = 0; - if (RainbowUtils.IsRainbow(Player.Data.ColorId) & !Grey) - Color = RainbowUtils.Rainbow; - else if (Grey) + + if (Grey) Color = new Color(0.2f, 0.2f, 0.2f, 1f); + else if (RainbowUtils.IsRainbow(Player.Data.ColorId)) + Color = RainbowUtils.Rainbow; else Color = Palette.PlayerColors[Player.Data.ColorId]; diff --git a/source/Patches/CrewmateRoles/InvestigatorMod/StartGame.cs b/source/Patches/CrewmateRoles/InvestigatorMod/StartGame.cs index dc10947f6..426470571 100644 --- a/source/Patches/CrewmateRoles/InvestigatorMod/StartGame.cs +++ b/source/Patches/CrewmateRoles/InvestigatorMod/StartGame.cs @@ -1,13 +1,10 @@ -using HarmonyLib; +using HarmonyLib; namespace TownOfUs.CrewmateRoles.InvestigatorMod { [HarmonyPatch(typeof(ShipStatus), nameof(ShipStatus.Start))] public static class StartGame { - public static void Postfix(ShipStatus __instance) - { - AddPrints.GameStarted = true; - } + public static void Postfix() => AddPrints.GameStarted = true; } -} \ No newline at end of file +} diff --git a/source/Patches/CrewmateRoles/LoversMod/Chat.cs b/source/Patches/CrewmateRoles/LoversMod/Chat.cs index 44ff66983..cc9b2b09e 100644 --- a/source/Patches/CrewmateRoles/LoversMod/Chat.cs +++ b/source/Patches/CrewmateRoles/LoversMod/Chat.cs @@ -1,4 +1,4 @@ -using HarmonyLib; +using HarmonyLib; namespace TownOfUs.CrewmateRoles.LoversMod { @@ -17,14 +17,26 @@ public static bool Prefix(ChatController __instance, [HarmonyArgument(0)] Player } } - [HarmonyPatch(typeof(HudManager), nameof(HudManager.Update))] + [HarmonyPatch] public static class EnableChat { - public static void Postfix(HudManager __instance) + public static void Enable() { - if (PlayerControl.LocalPlayer.IsLover() & !__instance.Chat.isActiveAndEnabled) - __instance.Chat.SetVisible(true); + if (PlayerControl.LocalPlayer.IsLover()) + HudManager.Instance.Chat.SetVisible(true); } + + [HarmonyPostfix] + [HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.Close))] + public static void MeetingClose() => Enable(); + + [HarmonyPostfix] + [HarmonyPatch(typeof(ShipStatus), nameof(ShipStatus.SpawnPlayer))] + public static void SpawnPlayer() => Enable(); + + [HarmonyPostfix] + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.Revive))] + public static void OnRevive() => Enable(); } } -} \ No newline at end of file +} diff --git a/source/Patches/CrewmateRoles/LoversMod/Die.cs b/source/Patches/CrewmateRoles/LoversMod/Die.cs index 8f4277a42..f5fecacb2 100644 --- a/source/Patches/CrewmateRoles/LoversMod/Die.cs +++ b/source/Patches/CrewmateRoles/LoversMod/Die.cs @@ -5,21 +5,16 @@ namespace TownOfUs.CrewmateRoles.LoversMod { [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.Die))] - public class Die + public static class Die { - public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] DeathReason reason) + public static void Postfix(PlayerControl __instance) { - __instance.Data.IsDead = true; + if (!CustomGameOptions.BothLoversDie || !__instance.IsLover()) return; - - var flag3 = __instance.IsLover() && CustomGameOptions.BothLoversDie; - if (!flag3) return true; var otherLover = Role.GetRole(__instance).OtherLover.Player; - if (otherLover.Data.IsDead) return true; - - if (AmongUsClient.Instance.AmHost) Utils.RpcMurderPlayer(otherLover, otherLover); + if (otherLover.Data.IsDead) return; - return true; + Utils.MurderPlayer(otherLover, otherLover); } } } diff --git a/source/Patches/CrewmateRoles/LoversMod/Outro.cs b/source/Patches/CrewmateRoles/LoversMod/Outro.cs index 5d9917146..dc5f7ee8e 100644 --- a/source/Patches/CrewmateRoles/LoversMod/Outro.cs +++ b/source/Patches/CrewmateRoles/LoversMod/Outro.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using HarmonyLib; using TMPro; using TownOfUs.Roles; @@ -7,7 +7,7 @@ namespace TownOfUs.CrewmateRoles.LoversMod { [HarmonyPatch(typeof(EndGameManager), nameof(EndGameManager.Start))] - internal class Outro + public static class Outro { public static void Postfix(EndGameManager __instance) { @@ -23,7 +23,6 @@ public static void Postfix(EndGameManager __instance) pos = __instance.WinText.transform.localPosition; pos.y = 1.5f; text.transform.position = pos; -// text.scale = 0.5f; return; } @@ -57,7 +56,6 @@ public static void Postfix(EndGameManager __instance) pos = __instance.WinText.transform.localPosition; pos.y = 1.5f; text.transform.position = pos; -// text.scale = 1f; } } -} \ No newline at end of file +} diff --git a/source/Patches/NeutralRoles/JesterMod/EndGame.cs b/source/Patches/NeutralRoles/JesterMod/EndGame.cs index e85ac9e74..b158c66b8 100644 --- a/source/Patches/NeutralRoles/JesterMod/EndGame.cs +++ b/source/Patches/NeutralRoles/JesterMod/EndGame.cs @@ -1,4 +1,4 @@ -using HarmonyLib; +using HarmonyLib; using Hazel; using TownOfUs.Roles; @@ -16,11 +16,11 @@ public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] GameOverRe ((Jester) role).Loses(); var writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, - (byte) CustomRPC.JesterLose, + (byte)CustomRPC.JesterLose, SendOption.Reliable, -1); AmongUsClient.Instance.FinishRpcImmediately(writer); return true; } } -} \ No newline at end of file +}