From d04ad6ec85ad924e07204d2e87f53d8f5b2ee2a1 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 16 Aug 2020 23:36:50 +0200 Subject: [PATCH] Request window attention when round starts/restarts. --- .../GameTicking/ClientGameTicker.cs | 6 +++++ Content.Server/GameTicking/GameTicker.cs | 14 ++++++++++ Content.Server/Players/PlayerSessionExt.cs | 14 ++++++++++ .../NetMessages/MsgRequestWindowAttention.cs | 27 +++++++++++++++++++ Content.Shared/SharedGameTicker.cs | 1 + 5 files changed, 62 insertions(+) create mode 100644 Content.Server/Players/PlayerSessionExt.cs create mode 100644 Content.Shared/Network/NetMessages/MsgRequestWindowAttention.cs diff --git a/Content.Client/GameTicking/ClientGameTicker.cs b/Content.Client/GameTicking/ClientGameTicker.cs index a80f606215..cab0608a93 100644 --- a/Content.Client/GameTicking/ClientGameTicker.cs +++ b/Content.Client/GameTicking/ClientGameTicker.cs @@ -3,6 +3,8 @@ using Content.Client.Interfaces; using Content.Client.State; using Content.Client.UserInterface; using Content.Shared; +using Content.Shared.Network.NetMessages; +using Robust.Client.Interfaces.Graphics; using Robust.Client.Interfaces.State; using Robust.Shared.Interfaces.Network; using Robust.Shared.IoC; @@ -39,6 +41,10 @@ namespace Content.Client.GameTicking _netManager.RegisterNetMessage(nameof(MsgTickerLobbyInfo), LobbyInfo); _netManager.RegisterNetMessage(nameof(MsgTickerLobbyCountdown), LobbyCountdown); _netManager.RegisterNetMessage(nameof(MsgRoundEndMessage), RoundEnd); + _netManager.RegisterNetMessage(nameof(MsgRequestWindowAttention), msg => + { + IoCManager.Resolve().RequestWindowAttention(); + }); _initialized = true; } diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index bef68e027d..006740fc38 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -24,6 +24,7 @@ using Content.Server.Players; using Content.Shared; using Content.Shared.Chat; using Content.Shared.GameObjects.Components.PDA; +using Content.Shared.Network.NetMessages; using Content.Shared.Preferences; using Content.Shared.Roles; using Prometheus; @@ -137,6 +138,7 @@ namespace Content.Server.GameTicking _netManager.RegisterNetMessage(nameof(MsgTickerLobbyInfo)); _netManager.RegisterNetMessage(nameof(MsgTickerLobbyCountdown)); _netManager.RegisterNetMessage(nameof(MsgRoundEndMessage)); + _netManager.RegisterNetMessage(nameof(MsgRequestWindowAttention)); SetStartPreset(_configurationManager.GetCVar("game.defaultpreset")); @@ -206,6 +208,16 @@ namespace Content.Server.GameTicking _roundStartTimeUtc = DateTime.UtcNow + LobbyDuration; _sendStatusToAll(); + + ReqWindowAttentionAll(); + } + } + + private void ReqWindowAttentionAll() + { + foreach (var player in _playerManager.GetAllPlayers()) + { + player.RequestWindowAttention(); } } @@ -284,6 +296,7 @@ namespace Content.Server.GameTicking _roundStartTimeSpan = IoCManager.Resolve().RealTime; _sendStatusToAll(); + ReqWindowAttentionAll(); } private void SendServerMessage(string message) @@ -621,6 +634,7 @@ namespace Content.Server.GameTicking _playerJoinLobby(player); } + EntitySystem.Get().ResettingCleanup(); EntitySystem.Get().ResettingCleanup(); EntitySystem.Get().ResettingCleanup(); EntitySystem.Get().ResetLayouts(); diff --git a/Content.Server/Players/PlayerSessionExt.cs b/Content.Server/Players/PlayerSessionExt.cs new file mode 100644 index 0000000000..3b06788869 --- /dev/null +++ b/Content.Server/Players/PlayerSessionExt.cs @@ -0,0 +1,14 @@ +using Content.Shared.Network.NetMessages; +using Robust.Server.Interfaces.Player; + +namespace Content.Server.Players +{ + public static class PlayerSessionExt + { + public static void RequestWindowAttention(this IPlayerSession session) + { + var msg = session.ConnectedClient.CreateNetMessage(); + session.ConnectedClient.SendMessage(msg); + } + } +} diff --git a/Content.Shared/Network/NetMessages/MsgRequestWindowAttention.cs b/Content.Shared/Network/NetMessages/MsgRequestWindowAttention.cs new file mode 100644 index 0000000000..e14ca862e5 --- /dev/null +++ b/Content.Shared/Network/NetMessages/MsgRequestWindowAttention.cs @@ -0,0 +1,27 @@ +using Lidgren.Network; +using Robust.Shared.Interfaces.Network; +using Robust.Shared.Network; + +namespace Content.Shared.Network.NetMessages +{ + public sealed class MsgRequestWindowAttention : NetMessage + { + #region REQUIRED + + public const MsgGroups GROUP = MsgGroups.Command; + public const string NAME = nameof(MsgRequestWindowAttention); + public MsgRequestWindowAttention(INetChannel channel) : base(NAME, GROUP) { } + + #endregion + + public override void ReadFromBuffer(NetIncomingMessage buffer) + { + // Nothing + } + + public override void WriteToBuffer(NetOutgoingMessage buffer) + { + // Nothing + } + } +} diff --git a/Content.Shared/SharedGameTicker.cs b/Content.Shared/SharedGameTicker.cs index 846598dfbf..669a6acb93 100644 --- a/Content.Shared/SharedGameTicker.cs +++ b/Content.Shared/SharedGameTicker.cs @@ -152,6 +152,7 @@ namespace Content.Shared } } + public struct RoundEndPlayerInfo { public string PlayerOOCName;