mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-10 16:14:45 +00:00
add _waitingForEvent
This commit is contained in:
parent
72938b4c7c
commit
accef60619
@ -29,7 +29,7 @@ namespace QSB.Player.Events
|
||||
|
||||
public override void OnReceiveRemote(bool server, PlayerInformationMessage message)
|
||||
{
|
||||
DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info);
|
||||
RequestStateResyncEvent._waitingForEvent = false;
|
||||
if (QSBPlayerManager.PlayerExists(message.AboutId))
|
||||
{
|
||||
QSBPlayerManager.HandleFullStateMessage(message);
|
||||
|
@ -16,18 +16,41 @@ namespace QSB.Player.Events
|
||||
// Can be sent by any client (including host) to signal they want latest worldobject, player, and server infomation
|
||||
public class RequestStateResyncEvent : QSBEvent<PlayerMessage>
|
||||
{
|
||||
public static bool _waitingForEvent;
|
||||
|
||||
public override bool RequireWorldObjectsReady => false;
|
||||
|
||||
public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBRequestStateResync, Handler);
|
||||
public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBRequestStateResync, Handler);
|
||||
|
||||
private void Handler() => SendEvent(CreateMessage());
|
||||
private void Handler()
|
||||
{
|
||||
if (_waitingForEvent)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_waitingForEvent = true;
|
||||
SendEvent(CreateMessage());
|
||||
}
|
||||
|
||||
private PlayerMessage CreateMessage() => new()
|
||||
{
|
||||
AboutId = LocalPlayerId
|
||||
};
|
||||
|
||||
public override void OnReceiveLocal(bool isHost, PlayerMessage message)
|
||||
{
|
||||
QSBCore.UnityEvents.FireInNUpdates(() =>
|
||||
{
|
||||
if (_waitingForEvent)
|
||||
{
|
||||
DebugLog.ToConsole($"Did not receive PlayerInformationEvent in time. Setting _waitingForEvent to false.", OWML.Common.MessageType.Info);
|
||||
_waitingForEvent = false;
|
||||
}
|
||||
}, 60);
|
||||
}
|
||||
|
||||
public override void OnReceiveRemote(bool isHost, PlayerMessage message)
|
||||
{
|
||||
// send response only to the requesting client
|
||||
|
Loading…
x
Reference in New Issue
Block a user