51 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |