From e1056dce6a7afcedbd140b9e42e23b9ef16565aa Mon Sep 17 00:00:00 2001 From: D1GQ Date: Wed, 21 Aug 2024 14:09:57 -0500 Subject: [PATCH] fix no name and error --- Modules/ExtendedPlayerInfo.cs | 8 +++++++- Modules/RPC.cs | 5 +++++ Patches/GamePlayManagerPatch.cs | 25 ++++++++++++++----------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Modules/ExtendedPlayerInfo.cs b/Modules/ExtendedPlayerInfo.cs index de66476..0864588 100644 --- a/Modules/ExtendedPlayerInfo.cs +++ b/Modules/ExtendedPlayerInfo.cs @@ -9,7 +9,7 @@ public static class PlayerControlDataExtension public class ExtendedPlayerInfo { public NetworkedPlayerInfo? _Data { get; set; } - public string RealName { get; set; } = string.Empty; + public string? RealName { get; set; } public Dictionary LastNameSetFor { get; set; } = []; public bool IsBetterUser { get; set; } = false; public bool IsBetterHost { get; set; } = false; @@ -58,6 +58,11 @@ public static class PlayerControlDataExtension if (player.IsAlive() || player.Data.RoleType == RoleTypes.GuardianAngel) player.BetterData().RoleInfo.DeadDisplayRole = player.Data.RoleType; } + + if (string.IsNullOrEmpty(player.BetterData().RealName)) + { + player.BetterData().RealName = player.Data.PlayerName; + } } // Get BetterData from PlayerControl @@ -104,6 +109,7 @@ public static class PlayerControlDataExtension playerInfo[player.Data.Puid] = new ExtendedPlayerInfo { _Data = player.Data, + RealName = player.Data.PlayerName, RoleInfo = new ExtendedRoleInfo() }; } diff --git a/Modules/RPC.cs b/Modules/RPC.cs index 5413dc0..0c5853d 100644 --- a/Modules/RPC.cs +++ b/Modules/RPC.cs @@ -226,6 +226,11 @@ internal static class RPC switch (callId) { + case (byte)RpcCalls.SetName: + reader.ReadUInt32(); + var name = reader.ReadString(); + player.BetterData().RealName = name; + break; case (byte)RpcCalls.SendChat: var text = reader.ReadString(); diff --git a/Patches/GamePlayManagerPatch.cs b/Patches/GamePlayManagerPatch.cs index a60fc06..125ef54 100644 --- a/Patches/GamePlayManagerPatch.cs +++ b/Patches/GamePlayManagerPatch.cs @@ -21,21 +21,24 @@ class GamePlayManager } // Clear unused Better Data - var keysToRemove = new List(); - - foreach (var betterInfo in PlayerControlDataExtension.playerInfo) + try { - if (!Main.AllPlayerControls.Any(pc => pc.Data.Puid == betterInfo.Key)) + var keysToRemove = new List(); + + foreach (var betterInfo in PlayerControlDataExtension.playerInfo) { - keysToRemove.Add(betterInfo.Key); + if (!Main.AllPlayerControls.Any(pc => pc.Data.Puid == betterInfo.Key)) + { + keysToRemove.Add(betterInfo.Key); + } + } + + foreach (var key in keysToRemove) + { + PlayerControlDataExtension.playerInfo.Remove(key); } } - - foreach (var key in keysToRemove) - { - PlayerControlDataExtension.playerInfo.Remove(key); - } - + catch { } } [HarmonyPatch(nameof(LobbyBehaviour.Start))] [HarmonyPostfix]