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 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);
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user