Fix RoundStartTimeSpan not being networked on client-side after reconnecting (#23707)

Fix RoundStartTimeSpan state not being networked on reconnections
This commit is contained in:
DoutorWhite
2024-01-07 21:30:10 -03:00
committed by GitHub
parent c4a99c129b
commit 31133ef788
4 changed files with 23 additions and 1 deletions

View File

@@ -57,6 +57,7 @@ namespace Content.Client.GameTicking.Managers
SubscribeNetworkEvent<TickerJoinLobbyEvent>(JoinLobby);
SubscribeNetworkEvent<TickerJoinGameEvent>(JoinGame);
SubscribeNetworkEvent<TickerConnectionStatusEvent>(ConnectionStatus);
SubscribeNetworkEvent<TickerLobbyStatusEvent>(LobbyStatus);
SubscribeNetworkEvent<TickerLobbyInfoEvent>(LobbyInfo);
SubscribeNetworkEvent<TickerLobbyCountdownEvent>(LobbyCountdown);
@@ -110,6 +111,11 @@ namespace Content.Client.GameTicking.Managers
_stateManager.RequestStateChange<LobbyState>();
}
private void ConnectionStatus(TickerConnectionStatusEvent message)
{
RoundStartTimeSpan = message.RoundStartTimeSpan;
}
private void LobbyStatus(TickerLobbyStatusEvent message)
{
StartTime = message.StartTime;

View File

@@ -86,6 +86,11 @@ namespace Content.Server.GameTicking
("desc", desc));
}
private TickerConnectionStatusEvent GetConnectionStatusMsg()
{
return new TickerConnectionStatusEvent(RoundStartTimeSpan);
}
private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session)
{
_playerGameStatuses.TryGetValue(session.UserId, out var status);

View File

@@ -66,6 +66,8 @@ namespace Content.Server.GameTicking
? Loc.GetString("player-first-join-message", ("name", args.Session.Name))
: Loc.GetString("player-join-message", ("name", args.Session.Name)));
RaiseNetworkEvent(GetConnectionStatusMsg(), session.Channel);
if (LobbyEnabled && _roundStartCountdownHasNotStartedYetDueToNoPlayers)
{
_roundStartCountdownHasNotStartedYetDueToNoPlayers = false;

View File

@@ -63,6 +63,15 @@ namespace Content.Shared.GameTicking
}
}
[Serializable, NetSerializable]
public sealed class TickerConnectionStatusEvent : EntityEventArgs
{
public TimeSpan RoundStartTimeSpan { get; }
public TickerConnectionStatusEvent(TimeSpan roundStartTimeSpan)
{
RoundStartTimeSpan = roundStartTimeSpan;
}
}
[Serializable, NetSerializable]
public sealed class TickerLobbyStatusEvent : EntityEventArgs