Track Admin Game Time (#24945)
* AdminTime tracked * Attempts to fix PR issues. * Admin afk logic update
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user