Track Admin Game Time (#24945)

* AdminTime tracked

* Attempts to fix PR issues.

* Admin afk logic update
This commit is contained in:
Repo
2024-05-02 18:23:22 +12:00
committed by GitHub
parent 889b578e56
commit 17304068b4
2 changed files with 27 additions and 1 deletions

View File

@@ -1,4 +1,6 @@
using System.Linq; using System.Linq;
using Content.Server.Administration;
using Content.Server.Administration.Managers;
using Content.Server.Afk; using Content.Server.Afk;
using Content.Server.Afk.Events; using Content.Server.Afk.Events;
using Content.Server.GameTicking; using Content.Server.GameTicking;
@@ -31,6 +33,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
[Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly PlayTimeTrackingManager _tracking = default!; [Dependency] private readonly PlayTimeTrackingManager _tracking = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -47,6 +50,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
SubscribeLocalEvent<UnAFKEvent>(OnUnAFK); SubscribeLocalEvent<UnAFKEvent>(OnUnAFK);
SubscribeLocalEvent<MobStateChangedEvent>(OnMobStateChanged); SubscribeLocalEvent<MobStateChangedEvent>(OnMobStateChanged);
SubscribeLocalEvent<PlayerJoinedLobbyEvent>(OnPlayerJoinedLobby); SubscribeLocalEvent<PlayerJoinedLobbyEvent>(OnPlayerJoinedLobby);
_adminManager.OnPermsChanged += AdminPermsChanged;
} }
public override void Shutdown() public override void Shutdown()
@@ -54,6 +58,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
base.Shutdown(); base.Shutdown();
_tracking.CalcTrackers -= CalcTrackers; _tracking.CalcTrackers -= CalcTrackers;
_adminManager.OnPermsChanged -= AdminPermsChanged;
} }
private void CalcTrackers(ICommonSession player, HashSet<string> trackers) private void CalcTrackers(ICommonSession player, HashSet<string> trackers)
@@ -61,6 +66,13 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
if (_afk.IsAfk(player)) if (_afk.IsAfk(player))
return; return;
if (_adminManager.IsAdmin(player))
{
trackers.Add(PlayTimeTrackingShared.TrackerAdmin);
trackers.Add(PlayTimeTrackingShared.TrackerOverall);
return;
}
if (!IsPlayerAlive(player)) if (!IsPlayerAlive(player))
return; return;
@@ -131,6 +143,11 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
_tracking.QueueRefreshTrackers(ev.Session); _tracking.QueueRefreshTrackers(ev.Session);
} }
private void AdminPermsChanged(AdminPermsChangedEventArgs admin)
{
_tracking.QueueRefreshTrackers(admin.Player);
}
private void OnPlayerAttached(PlayerAttachedEvent ev) private void OnPlayerAttached(PlayerAttachedEvent ev)
{ {
_tracking.QueueRefreshTrackers(ev.Player); _tracking.QueueRefreshTrackers(ev.Player);

View File

@@ -1,9 +1,18 @@
namespace Content.Shared.Players.PlayTimeTracking; using Content.Shared.Dataset;
namespace Content.Shared.Players.PlayTimeTracking;
public static class PlayTimeTrackingShared public static class PlayTimeTrackingShared
{ {
/// <summary> /// <summary>
/// The prototype ID of the play time tracker that represents overall playtime, i.e. not tied to any one role. /// The prototype ID of the play time tracker that represents overall playtime, i.e. not tied to any one role.
/// </summary> /// </summary>
[ValidatePrototypeId<PlayTimeTrackerPrototype>]
public const string TrackerOverall = "Overall"; public const string TrackerOverall = "Overall";
/// <summary>
/// The prototype ID of the play time tracker that represents admin time, when a player is in game as admin.
/// </summary>
[ValidatePrototypeId<PlayTimeTrackerPrototype>]
public const string TrackerAdmin = "Admin";
} }