From 17304068b48adc1338db399b15cc6b709d8ff944 Mon Sep 17 00:00:00 2001 From: Repo <47093363+Titian3@users.noreply.github.com> Date: Thu, 2 May 2024 18:23:22 +1200 Subject: [PATCH] Track Admin Game Time (#24945) * AdminTime tracked * Attempts to fix PR issues. * Admin afk logic update --- .../PlayTimeTracking/PlayTimeTrackingSystem.cs | 17 +++++++++++++++++ .../PlayTimeTracking/PlayTimeTrackingShared.cs | 11 ++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs index 035b60e4f3..e594e4de26 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs @@ -1,4 +1,6 @@ using System.Linq; +using Content.Server.Administration; +using Content.Server.Administration.Managers; using Content.Server.Afk; using Content.Server.Afk.Events; using Content.Server.GameTicking; @@ -31,6 +33,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly PlayTimeTrackingManager _tracking = default!; + [Dependency] private readonly IAdminManager _adminManager = default!; public override void Initialize() { @@ -47,6 +50,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem SubscribeLocalEvent(OnUnAFK); SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnPlayerJoinedLobby); + _adminManager.OnPermsChanged += AdminPermsChanged; } public override void Shutdown() @@ -54,6 +58,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem base.Shutdown(); _tracking.CalcTrackers -= CalcTrackers; + _adminManager.OnPermsChanged -= AdminPermsChanged; } private void CalcTrackers(ICommonSession player, HashSet trackers) @@ -61,6 +66,13 @@ public sealed class PlayTimeTrackingSystem : EntitySystem if (_afk.IsAfk(player)) return; + if (_adminManager.IsAdmin(player)) + { + trackers.Add(PlayTimeTrackingShared.TrackerAdmin); + trackers.Add(PlayTimeTrackingShared.TrackerOverall); + return; + } + if (!IsPlayerAlive(player)) return; @@ -131,6 +143,11 @@ public sealed class PlayTimeTrackingSystem : EntitySystem _tracking.QueueRefreshTrackers(ev.Session); } + private void AdminPermsChanged(AdminPermsChangedEventArgs admin) + { + _tracking.QueueRefreshTrackers(admin.Player); + } + private void OnPlayerAttached(PlayerAttachedEvent ev) { _tracking.QueueRefreshTrackers(ev.Player); diff --git a/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs b/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs index e300524d87..ccaf9c17dd 100644 --- a/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs +++ b/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs @@ -1,9 +1,18 @@ -namespace Content.Shared.Players.PlayTimeTracking; +using Content.Shared.Dataset; + +namespace Content.Shared.Players.PlayTimeTracking; public static class PlayTimeTrackingShared { /// /// The prototype ID of the play time tracker that represents overall playtime, i.e. not tied to any one role. /// + [ValidatePrototypeId] public const string TrackerOverall = "Overall"; + + /// + /// The prototype ID of the play time tracker that represents admin time, when a player is in game as admin. + /// + [ValidatePrototypeId] + public const string TrackerAdmin = "Admin"; } -- 2.52.0