more left info and fixes

This commit is contained in:
D1GQ committed 2024-08-17 05:32:39 -05:00
1 parent 797169d9d3
commit 644b821fe2
4 files changed
+61 -3

No files matched your search

+2 -1
View File
@@ -15,6 +15,7 @@ public class ExtendedPlayerInfo
public float TimeSinceLastTask { get; set; } = 5f;
public uint LastTaskId { get; set; } = 0;
public int TimesCalledMeeting { get; set; } = 0;
public DisconnectReasons DisconnectReason { get; set; } = DisconnectReasons.Unknown;
public ExtendedRoleInfo? RoleInfo { get; set; }
}
@@ -27,7 +28,7 @@ public class ExtendedRoleInfo
public static class PlayerControlExtensions
{
private static readonly Dictionary<string, ExtendedPlayerInfo> playerInfo = [];
public static readonly Dictionary<string, ExtendedPlayerInfo> playerInfo = [];
// Get BetterData from PlayerControl
public static ExtendedPlayerInfo? BetterData(this PlayerControl player)
+17
View File
@@ -19,6 +19,23 @@ class GamePlayManager
{
AntiCheat.PauseAntiCheat();
}
// Clear unused Better Data
var keysToRemove = new List<string>();
foreach (var betterInfo in PlayerControlExtensions.playerInfo)
{
if (!Main.AllPlayerControls.Any(pc => pc.Data.Puid == betterInfo.Key))
{
keysToRemove.Add(betterInfo.Key);
}
}
foreach (var key in keysToRemove)
{
PlayerControlExtensions.playerInfo.Remove(key);
}
}
[HarmonyPatch(nameof(LobbyBehaviour.Start))]
[HarmonyPostfix]
+29 -1
View File
@@ -76,7 +76,35 @@ class MeetingHudUpdatePatch
if (!flag)
{
SetPlayerTextInfoMeeting(pva, "<color=#6b6b6b>Disconnected</color>", isInfo: true);
string DisconnectText;
var playerData = GameData.Instance.GetPlayerById(pva.TargetPlayerId);
switch (playerData.BetterData().DisconnectReason)
{
case DisconnectReasons.ExitGame:
DisconnectText = "Left The Game";
break;
case DisconnectReasons.Banned:
if (playerData.BetterData().BannedByAntiCheat)
{
DisconnectText = "Banned By Anti-Cheat>";
}
else
{
DisconnectText = "Banned By Host";
}
break;
case DisconnectReasons.Kicked:
DisconnectText = "Kicked By Host";
break;
case DisconnectReasons.Hacking:
DisconnectText = "Banned By Server";
break;
default:
DisconnectText = "Disconnected";
break;
}
SetPlayerTextInfoMeeting(pva, $"<color=#6b6b6b>{DisconnectText}</color>", isInfo: true);
SetPlayerTextInfoMeeting(pva, "");
pva.transform.Find("votePlayerBase").gameObject.SetActive(false);
pva.transform.Find("deadX_border").gameObject.SetActive(false);
+13 -1
View File
@@ -110,11 +110,23 @@ class OnPlayerLeftPatch
HudManager.Instance?.NotifyOfDisconnect(data.Character);
}
}
[HarmonyPatch(typeof(GameData))]
[HarmonyPatch("HandleDisconnect")]
[HarmonyPatch(MethodType.Normal)]
[HarmonyPatch(new Type[] { typeof(PlayerControl), typeof(DisconnectReasons) })]
class GameDataHandleDisconnectPatch
{
public static void Prefix(/*GameData __instance,*/ [HarmonyArgument(0)] PlayerControl player, [HarmonyArgument(1)] DisconnectReasons reason)
{
player.BetterData().DisconnectReason = reason;
}
}
[HarmonyPatch(typeof(GameData), nameof(GameData.ShowNotification))]
class GameDataShowNotificationPatch
{
public static bool Prefix(AmongUsClient __instance, ref string playerName, ref DisconnectReasons reason)
public static bool Prefix(/*GameData __instance,*/ ref string playerName, ref DisconnectReasons reason)
{
string ReasonText;
switch (reason)