diff --git a/Content.Client/_White/Administration/HoursPanel/HoursPanel.xaml.cs b/Content.Client/_White/Administration/HoursPanel/HoursPanel.xaml.cs index c00cb8acbd..be42347c92 100644 --- a/Content.Client/_White/Administration/HoursPanel/HoursPanel.xaml.cs +++ b/Content.Client/_White/Administration/HoursPanel/HoursPanel.xaml.cs @@ -52,7 +52,7 @@ public sealed partial class HoursPanel : DefaultWindow if (string.IsNullOrWhiteSpace(PlayerNameLine.Text)) return; - owner.SendPlayerTimeRequest(new HoursPanelMessage(PlayerNameLine.Text, roles[RoleOption.SelectedId])); + owner.SendPlayerTimeRequest(new HoursPanelMessageToServer(PlayerNameLine.Text, roles[RoleOption.SelectedId])); } private void InitRoleList(Dictionary roles) diff --git a/Content.Client/_White/Administration/HoursPanel/HoursPanelSystem.cs b/Content.Client/_White/Administration/HoursPanel/HoursPanelSystem.cs index f58f182490..6b7e66cc22 100644 --- a/Content.Client/_White/Administration/HoursPanel/HoursPanelSystem.cs +++ b/Content.Client/_White/Administration/HoursPanel/HoursPanelSystem.cs @@ -2,21 +2,27 @@ using Content.Shared._White.Administration; namespace Content.Client._White.Administration; -public sealed class HoursPanelSystem : SharedHoursPanelSystem +public sealed class HoursPanelSystem : EntitySystem { - public HoursPanel Panel { get; } + private HoursPanel _panel; public HoursPanelSystem(HoursPanel panel) { - Panel = panel; + _panel = panel; } - protected override void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs) + public override void Initialize() { - if (message.Time != null) - Panel.UpdateTime(message.Time); + base.Initialize(); + + SubscribeNetworkEvent(OnHoursPanelMessage); } - public void SendPlayerTimeRequest(HoursPanelMessage message) + private void OnHoursPanelMessage(HoursPanelMessageToClient message, EntitySessionEventArgs eventArgs) + { + _panel.UpdateTime(message.Time); + } + + public void SendPlayerTimeRequest(HoursPanelMessageToServer message) { RaiseNetworkEvent(message); } diff --git a/Content.Server/_White/Administration/HoursPanel/HoursPanelSystem.cs b/Content.Server/_White/Administration/HoursPanel/HoursPanelSystem.cs index 0c9d20122c..697e952a59 100644 --- a/Content.Server/_White/Administration/HoursPanel/HoursPanelSystem.cs +++ b/Content.Server/_White/Administration/HoursPanel/HoursPanelSystem.cs @@ -2,25 +2,38 @@ using Content.Shared._White.Administration; using Robust.Server.Player; using Content.Server.Players.PlayTimeTracking; + namespace Content.Server._White.Administration; -public sealed class HoursPanelSystem : SharedHoursPanelSystem +public sealed class HoursPanelSystem : EntitySystem { [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayTimeTrackingManager _playTimeTracking = default!; - protected override void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs) + public override void Initialize() { - if (message.Time != null) - return; + base.Initialize(); + SubscribeNetworkEvent(OnHoursPanelMessage); + } + private void OnHoursPanelMessage(HoursPanelMessageToServer message, EntitySessionEventArgs eventArgs) + { if (_playerManager.TryGetSessionByUsername(message.PlayerCKey, out var player)) return; + if (player == null) + return; + + TimeSpan timer; + if (message.Job == "Overall") { - var timer = _playTimeTracking.GetOverallPlaytime(player!); - RaiseNetworkEvent(new HoursPanelMessage(message.PlayerCKey, message.Job, timer)); - return; + timer = _playTimeTracking.GetOverallPlaytime(player!); } + else + { + timer = _playTimeTracking.GetPlayTimeForTracker(player!, message.Job); + } + + RaiseNetworkEvent(new HoursPanelMessageToClient(timer)); } } diff --git a/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessage.cs b/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessage.cs deleted file mode 100644 index b173469a4d..0000000000 --- a/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessage.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared._White.Administration; - -[Serializable, NetSerializable] -public sealed class HoursPanelMessage : EntityEventArgs -{ - public string PlayerCKey { get; } - public string Job { get; } - public TimeSpan? Time { get; } - public HoursPanelMessage(string playerCKey, string job, TimeSpan? time = null) - { - PlayerCKey = playerCKey; - Job = job; - Time = time; - } -} diff --git a/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessages.cs b/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessages.cs new file mode 100644 index 0000000000..c1d6db0f6e --- /dev/null +++ b/Content.Shared/_White/Administration/HoursPanelSystem/HoursPanelMessages.cs @@ -0,0 +1,24 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared._White.Administration; + +[Serializable, NetSerializable] +public sealed class HoursPanelMessageToServer : EntityEventArgs +{ + public string PlayerCKey { get; } + public string Job { get; } + public HoursPanelMessageToServer(string playerCKey, string job) + { + PlayerCKey = playerCKey; + Job = job; + } +} + +public sealed class HoursPanelMessageToClient : EntityEventArgs +{ + public TimeSpan Time { get; } + public HoursPanelMessageToClient(TimeSpan time) + { + Time = time; + } +} diff --git a/Content.Shared/_White/Administration/HoursPanelSystem/SharedHoursPanelSystem.cs b/Content.Shared/_White/Administration/HoursPanelSystem/SharedHoursPanelSystem.cs deleted file mode 100644 index 95f70a71e9..0000000000 --- a/Content.Shared/_White/Administration/HoursPanelSystem/SharedHoursPanelSystem.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Robust.Shared.Network; -using Robust.Shared.Serialization; - -namespace Content.Shared._White.Administration; - -public abstract class SharedHoursPanelSystem : EntitySystem -{ - public override void Initialize() - { - base.Initialize(); - - SubscribeNetworkEvent(OnHoursPanelMessage); - } - - protected virtual void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs) - { - } -}