moved checks higher

This commit is contained in:
JohnCorby 2021-12-11 18:40:20 -08:00
parent 00d93f765c
commit 1ccd277c5c

View File

@ -82,6 +82,26 @@ namespace QSB.Messaging
var msg = (QSBMessage)Activator.CreateInstance(_msgTypeToType[msgType]); var msg = (QSBMessage)Activator.CreateInstance(_msgTypeToType[msgType]);
netMsg.ReadMessage(msg); netMsg.ReadMessage(msg);
if (PlayerTransformSync.LocalInstance == null)
{
DebugLog.ToConsole($"Warning - Tried to handle message of type <{msg.GetType().Name}> before localplayer was established.", MessageType.Warning);
return;
}
if (QSBPlayerManager.PlayerExists(msg.From))
{
var player = QSBPlayerManager.GetPlayer(msg.From);
if (!player.IsReady
&& player.PlayerId != QSBPlayerManager.LocalPlayerId
&& player.State is ClientState.AliveInSolarSystem or ClientState.AliveInEye or ClientState.DeadInSolarSystem
&& msg is not QSBEventRelay { Event: PlayerInformationEvent or PlayerReadyEvent or RequestStateResyncEvent or ServerStateEvent })
{
DebugLog.ToConsole($"Warning - Got message (type:{msg.GetType().Name}) from player {msg.From}, but they were not ready. Asking for state resync, just in case.", MessageType.Warning);
QSBEventManager.FireEvent(EventNames.QSBRequestStateResync);
}
}
try try
{ {
if (!msg.ShouldReceive) if (!msg.ShouldReceive)
@ -89,26 +109,6 @@ namespace QSB.Messaging
return; return;
} }
if (PlayerTransformSync.LocalInstance == null)
{
DebugLog.ToConsole($"Warning - Tried to handle message of type <{msg.GetType().Name}> before localplayer was established.", MessageType.Warning);
return;
}
if (QSBPlayerManager.PlayerExists(msg.From))
{
var player = QSBPlayerManager.GetPlayer(msg.From);
if (!player.IsReady
&& player.PlayerId != QSBPlayerManager.LocalPlayerId
&& player.State is ClientState.AliveInSolarSystem or ClientState.AliveInEye or ClientState.DeadInSolarSystem
&& msg is not QSBEventRelay { Event: PlayerInformationEvent or PlayerReadyEvent or RequestStateResyncEvent or ServerStateEvent })
{
DebugLog.ToConsole($"Warning - Got message (type:{msg.GetType().Name}) from player {msg.From}, but they were not ready. Asking for state resync, just in case.", MessageType.Warning);
QSBEventManager.FireEvent(EventNames.QSBRequestStateResync);
}
}
if (msg.From != QSBPlayerManager.LocalPlayerId) if (msg.From != QSBPlayerManager.LocalPlayerId)
{ {
msg.OnReceiveRemote(); msg.OnReceiveRemote();