RequestGameStateMessage: wait until world objects ready before sending response

This commit is contained in:
JohnCorby 2022-04-05 17:33:32 -07:00
parent 72e8ccbab4
commit a97e869850

View File

@ -2,6 +2,7 @@
using QSB.Messaging;
using QSB.Player;
using QSB.Utility;
using QSB.WorldSync;
namespace QSB.SaveSync.Messages;
@ -13,27 +14,28 @@ internal class RequestGameStateMessage : QSBMessage
public RequestGameStateMessage() => To = 0;
public override void OnReceiveRemote() => Delay.RunFramesLater(100, () =>
{
if (!QSBPlayerManager.PlayerExists(From))
Delay.RunWhen(() => QSBWorldSync.AllObjectsReady, () =>
{
// player was kicked
return;
}
if (!QSBPlayerManager.PlayerExists(From))
{
// player was kicked
return;
}
new GameStateMessage(From).Send();
new GameStateMessage(From).Send();
var gameSave = PlayerData._currentGameSave;
var gameSave = PlayerData._currentGameSave;
var factSaves = gameSave.shipLogFactSaves;
foreach (var item in factSaves)
{
new ShipLogFactSaveMessage(item.Value).Send();
}
var factSaves = gameSave.shipLogFactSaves;
foreach (var item in factSaves)
{
new ShipLogFactSaveMessage(item.Value).Send();
}
var dictConditions = gameSave.dictConditions;
foreach (var item in dictConditions)
{
new PersistentConditionMessage(item.Key, item.Value).Send();
}
});
}
var dictConditions = gameSave.dictConditions;
foreach (var item in dictConditions)
{
new PersistentConditionMessage(item.Key, item.Value).Send();
}
}));
}