Ready Indicator in the lobby (#1771)
* Ready Indicator in the lobby * Use SessionID instead of Name * Don't show ready state when game is already running * Make Ready List not selectable * -Remove disconnected sessions from Ready -Fix showing ReadyStatus when staying in lobby
This commit is contained in:
@@ -49,6 +49,7 @@ using Robust.Shared.Localization;
|
||||
using Robust.Shared.Log;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Timing;
|
||||
@@ -138,6 +139,7 @@ namespace Content.Server.GameTicking
|
||||
_netManager.RegisterNetMessage<MsgTickerLobbyStatus>(nameof(MsgTickerLobbyStatus));
|
||||
_netManager.RegisterNetMessage<MsgTickerLobbyInfo>(nameof(MsgTickerLobbyInfo));
|
||||
_netManager.RegisterNetMessage<MsgTickerLobbyCountdown>(nameof(MsgTickerLobbyCountdown));
|
||||
_netManager.RegisterNetMessage<MsgTickerLobbyReady>(nameof(MsgTickerLobbyReady));
|
||||
_netManager.RegisterNetMessage<MsgRoundEndMessage>(nameof(MsgRoundEndMessage));
|
||||
_netManager.RegisterNetMessage<MsgRequestWindowAttention>(nameof(MsgRequestWindowAttention));
|
||||
|
||||
@@ -381,6 +383,7 @@ namespace Content.Server.GameTicking
|
||||
|
||||
_playersInLobby[player] = ready;
|
||||
_netManager.ServerSendMessage(_getStatusMsg(player), player.ConnectedClient);
|
||||
_netManager.ServerSendToAll(GetReadySingle(player, ready));
|
||||
}
|
||||
|
||||
public T AddGameRule<T>() where T : GameRule, new()
|
||||
@@ -871,6 +874,7 @@ namespace Content.Server.GameTicking
|
||||
_netManager.ServerSendMessage(_netManager.CreateNetMessage<MsgTickerJoinLobby>(), session.ConnectedClient);
|
||||
_netManager.ServerSendMessage(_getStatusMsg(session), session.ConnectedClient);
|
||||
_netManager.ServerSendMessage(GetInfoMsg(), session.ConnectedClient);
|
||||
_netManager.ServerSendMessage(GetReadyStatus(), session.ConnectedClient);
|
||||
}
|
||||
|
||||
private void _playerJoinGame(IPlayerSession session)
|
||||
@@ -882,6 +886,26 @@ namespace Content.Server.GameTicking
|
||||
_netManager.ServerSendMessage(_netManager.CreateNetMessage<MsgTickerJoinGame>(), session.ConnectedClient);
|
||||
}
|
||||
|
||||
private MsgTickerLobbyReady GetReadyStatus()
|
||||
{
|
||||
var msg = _netManager.CreateNetMessage<MsgTickerLobbyReady>();
|
||||
msg.PlayerReady = new Dictionary<NetSessionId, bool>();
|
||||
foreach (var player in _playersInLobby.Keys)
|
||||
{
|
||||
_playersInLobby.TryGetValue(player, out var ready);
|
||||
msg.PlayerReady.Add(player.SessionId, ready);
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
private MsgTickerLobbyReady GetReadySingle(IPlayerSession player, bool ready)
|
||||
{
|
||||
var msg = _netManager.CreateNetMessage<MsgTickerLobbyReady>();
|
||||
msg.PlayerReady = new Dictionary<NetSessionId, bool>();
|
||||
msg.PlayerReady.Add(player.SessionId, ready);
|
||||
return msg;
|
||||
}
|
||||
|
||||
private MsgTickerLobbyStatus _getStatusMsg(IPlayerSession session)
|
||||
{
|
||||
_playersInLobby.TryGetValue(session, out var ready);
|
||||
|
||||
Reference in New Issue
Block a user