Show total playtime in player list and AHelp window (#20980)

This commit is contained in:
DrSmugleaf
2023-10-14 01:55:40 -07:00
committed by GitHub
parent 5ecd5f7521
commit 3a2482420f
10 changed files with 48 additions and 4 deletions

View File

@@ -19,6 +19,11 @@ namespace Content.Client.Administration.UI.Bwoink
if (sel is not null) if (sel is not null)
{ {
Title = $"{sel.CharacterName} / {sel.Username}"; Title = $"{sel.CharacterName} / {sel.Username}";
if (sel.OverallPlaytime != null)
{
Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}";
}
} }
}; };

View File

@@ -120,9 +120,11 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
player.StartingJob, player.StartingJob,
player.Antag ? "YES" : "NO", player.Antag ? "YES" : "NO",
new StyleBoxFlat(useAltColor ? _altColor : _defaultColor), new StyleBoxFlat(useAltColor ? _altColor : _defaultColor),
player.Connected); player.Connected,
player.PlaytimeString());
entry.PlayerEntity = player.NetEntity; entry.PlayerEntity = player.NetEntity;
entry.OnPressed += args => OnEntryPressed?.Invoke(args); entry.OnPressed += args => OnEntryPressed?.Invoke(args);
entry.ToolTip = Loc.GetString("player-tab-entry-tooltip");
PlayerList.AddChild(entry); PlayerList.AddChild(entry);
useAltColor ^= true; useAltColor ^= true;

View File

@@ -24,5 +24,9 @@
SizeFlagsStretchRatio="2" SizeFlagsStretchRatio="2"
HorizontalExpand="True" HorizontalExpand="True"
ClipText="True"/> ClipText="True"/>
<Label Name="OverallPlaytimeLabel"
SizeFlagsStretchRatio="2"
HorizontalExpand="True"
ClipText="True"/>
</BoxContainer> </BoxContainer>
</ContainerButton> </ContainerButton>

View File

@@ -10,7 +10,7 @@ public sealed partial class PlayerTabEntry : ContainerButton
{ {
public NetEntity? PlayerEntity; public NetEntity? PlayerEntity;
public PlayerTabEntry(string username, string character, string identity, string job, string antagonist, StyleBox styleBox, bool connected) public PlayerTabEntry(string username, string character, string identity, string job, string antagonist, StyleBox styleBox, bool connected, string overallPlaytime)
{ {
RobustXamlLoader.Load(this); RobustXamlLoader.Load(this);
@@ -23,5 +23,6 @@ public sealed partial class PlayerTabEntry : ContainerButton
CharacterLabel.Text += $" [{identity}]"; CharacterLabel.Text += $" [{identity}]";
AntagonistLabel.Text = antagonist; AntagonistLabel.Text = antagonist;
BackgroundColorPanel.PanelOverride = styleBox; BackgroundColorPanel.PanelOverride = styleBox;
OverallPlaytimeLabel.Text = overallPlaytime;
} }
} }

View File

@@ -32,5 +32,11 @@
ClipText="True" ClipText="True"
Text="{Loc player-tab-antagonist}" Text="{Loc player-tab-antagonist}"
MouseFilter="Pass"/> MouseFilter="Pass"/>
<Label Name="PlaytimeLabel"
SizeFlagsStretchRatio="2"
HorizontalExpand="True"
ClipText="True"
Text="{Loc player-tab-playtime}"
MouseFilter="Pass"/>
</BoxContainer> </BoxContainer>
</ContainerButton> </ContainerButton>

View File

@@ -3,11 +3,13 @@ using Content.Server.Administration.Managers;
using Content.Server.Chat.Managers; using Content.Server.Chat.Managers;
using Content.Server.IdentityManagement; using Content.Server.IdentityManagement;
using Content.Server.Mind; using Content.Server.Mind;
using Content.Server.Players.PlayTimeTracking;
using Content.Shared.Administration; using Content.Shared.Administration;
using Content.Shared.Administration.Events; using Content.Shared.Administration.Events;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Content.Shared.GameTicking; using Content.Shared.GameTicking;
using Content.Shared.IdentityManagement; using Content.Shared.IdentityManagement;
using Content.Shared.Players.PlayTimeTracking;
using Content.Shared.Roles; using Content.Shared.Roles;
using Content.Shared.Roles.Jobs; using Content.Shared.Roles.Jobs;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
@@ -25,6 +27,7 @@ namespace Content.Server.Administration.Systems
[Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IChatManager _chat = default!;
[Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly IConfigurationManager _config = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly PlayTimeTrackingManager _playTime = default!;
[Dependency] private readonly SharedJobSystem _jobs = default!; [Dependency] private readonly SharedJobSystem _jobs = default!;
[Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly SharedRoleSystem _role = default!; [Dependency] private readonly SharedRoleSystem _role = default!;
@@ -210,9 +213,16 @@ namespace Content.Server.Administration.Systems
} }
var connected = session != null && session.Status is SessionStatus.Connected or SessionStatus.InGame; var connected = session != null && session.Status is SessionStatus.Connected or SessionStatus.InGame;
TimeSpan? overallPlaytime = null;
if (session != null &&
_playTime.TryGetTrackerTimes(session, out var playTimes) &&
playTimes.TryGetValue(PlayTimeTrackingShared.TrackerOverall, out var playTime))
{
overallPlaytime = playTime;
}
return new PlayerInfo(name, entityName, identityName, startingRole, antag, GetNetEntity(session?.AttachedEntity), data.UserId, return new PlayerInfo(name, entityName, identityName, startingRole, antag, GetNetEntity(session?.AttachedEntity), data.UserId,
connected, _roundActivePlayers.Contains(data.UserId)); connected, _roundActivePlayers.Contains(data.UserId), overallPlaytime);
} }
private void OnPanicBunkerChanged(bool enabled) private void OnPanicBunkerChanged(bool enabled)

View File

@@ -13,5 +13,12 @@ namespace Content.Shared.Administration
NetEntity? NetEntity, NetEntity? NetEntity,
NetUserId SessionId, NetUserId SessionId,
bool Connected, bool Connected,
bool ActiveThisRound); bool ActiveThisRound,
TimeSpan? OverallPlaytime)
{
public string PlaytimeString()
{
return OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title");
}
}
} }

View File

@@ -14,3 +14,8 @@ Entries:
if admins are online or not.', type: Add} if admins are online or not.', type: Add}
id: 2 id: 2
time: '2023-10-12T22:46:00.0000000+00:00' time: '2023-10-12T22:46:00.0000000+00:00'
- author: DrSmugleaf
changes:
- {message: 'Added total playtime to the F7 player list and the AHelp window title.', type: Add}
id: 3
time: '2023-10-14T08:55:00.0000000+00:00'

View File

@@ -2,5 +2,7 @@
player-tab-character = Character player-tab-character = Character
player-tab-job = Job player-tab-job = Job
player-tab-antagonist = Antagonist player-tab-antagonist = Antagonist
player-tab-playtime = Playtime
player-tab-show-disconnected = Show Disconnected player-tab-show-disconnected = Show Disconnected
player-tab-overlay = Overlay player-tab-overlay = Overlay
player-tab-entry-tooltip = Playtime is displayed in days:hours:minutes.

View File

@@ -10,3 +10,5 @@ generic-error = error
generic-invalid = invalid generic-invalid = invalid
generic-hours = hours generic-hours = hours
generic-playtime-title = Playtime