Files
zzz_REBIRTH__Utils/Vandracon/VersionEnforcer/Harmony/Harmony_GameManager.cs
2025-06-04 16:44:53 +09:30

51 lines
1.9 KiB
C#

using JetBrains.Annotations;
using VersionEnforcer.Scripts;
namespace VersionEnforcer.Harmony
{
[UsedImplicitly]
public class Harmony_GameManager
{
[HarmonyPatch(typeof(GameManager), "ShowMessagePlayerDenied")]
public class GameManager_ShowMessagePlayerDeniedPatch
{
[UsedImplicitly]
public static bool Prefix(GameManager __instance, GameUtils.KickPlayerData _kickData)
{
string text;
string kickReason;
if (_kickData.reason == (GameUtils.EKickReason)500)
{
kickReason = "Mod versions do not match server";
text = string.Format(Localization.Get("auth_ModVersionMismatch"), _kickData.customReason);
}
else
{
kickReason = _kickData.ToString();
text = _kickData.LocalizedMessage();
}
var guiWindowManager = Traverse.Create(__instance).Field("windowManager")?.GetValue() as GUIWindowManager;
if (guiWindowManager == null)
{
Log.Warning($"{Globals.LOG_TAG} Unable to find windowManager");
return true;
}
var messageBoxWindowGroupController =
((XUiWindowGroup)(guiWindowManager).GetWindow(XUiC_MessageBoxWindowGroup.ID)).Controller as
XUiC_MessageBoxWindowGroup;
if (messageBoxWindowGroupController == null)
{
Log.Warning($"{Globals.LOG_TAG} Unable to get window with ID {XUiC_MessageBoxWindowGroup.ID}");
return true;
}
Log.Out($"[NET] Kicked from server: {kickReason}");
messageBoxWindowGroupController.ShowMessage(Localization.Get("auth_messageTitle"), text);
return false;
}
}
}
}