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 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<UnAFKEvent>(OnUnAFK);
SubscribeLocalEvent<MobStateChangedEvent>(OnMobStateChanged);
SubscribeLocalEvent<PlayerJoinedLobbyEvent>(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<string> 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);

View File

@@ -1,9 +1,18 @@
namespace Content.Shared.Players.PlayTimeTracking;
using Content.Shared.Dataset;
namespace Content.Shared.Players.PlayTimeTracking;
public static class PlayTimeTrackingShared
{
/// <summary>
/// The prototype ID of the play time tracker that represents overall playtime, i.e. not tied to any one role.
/// </summary>
[ValidatePrototypeId<PlayTimeTrackerPrototype>]
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";
}