]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Show total playtime in player list and AHelp window (#20980)
authorDrSmugleaf <DrSmugleaf@users.noreply.github.com>
Sat, 14 Oct 2023 08:55:40 +0000 (01:55 -0700)
committerGitHub <noreply@github.com>
Sat, 14 Oct 2023 08:55:40 +0000 (01:55 -0700)
Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml
Content.Server/Administration/Systems/AdminSystem.cs
Content.Shared/Administration/PlayerInfo.cs
Resources/Changelog/Admin.yml
Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl
Resources/Locale/en-US/generic.ftl

index 984d8c5b1a8d1106db656ddbb7f6ad0ce3fe949b..2562da3fa77573adb648a345c1ef3f793ac7ba4a 100644 (file)
@@ -19,6 +19,11 @@ namespace Content.Client.Administration.UI.Bwoink
                 if (sel is not null)
                 {
                     Title = $"{sel.CharacterName} / {sel.Username}";
+
+                    if (sel.OverallPlaytime != null)
+                    {
+                        Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}";
+                    }
                 }
             };
 
index 29f70057544c0330d3b5c5c55d806eb42fa566e5..ad8e4392c2ab863d944ad03f9ee9114edb6877b0 100644 (file)
@@ -120,9 +120,11 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
                     player.StartingJob,
                     player.Antag ? "YES" : "NO",
                     new StyleBoxFlat(useAltColor ? _altColor : _defaultColor),
-                    player.Connected);
+                    player.Connected,
+                    player.PlaytimeString());
                 entry.PlayerEntity = player.NetEntity;
                 entry.OnPressed += args => OnEntryPressed?.Invoke(args);
+                entry.ToolTip = Loc.GetString("player-tab-entry-tooltip");
                 PlayerList.AddChild(entry);
 
                 useAltColor ^= true;
index 93482c294c4625bfe00648a2603118245a96bdf8..883681a28a954d67b627c6fa57eebe7b72cd13b4 100644 (file)
@@ -24,5 +24,9 @@
                SizeFlagsStretchRatio="2"
                HorizontalExpand="True"
                ClipText="True"/>
+        <Label Name="OverallPlaytimeLabel"
+               SizeFlagsStretchRatio="2"
+               HorizontalExpand="True"
+               ClipText="True"/>
     </BoxContainer>
 </ContainerButton>
index 91d04d67548a3e5216a9ba6838591217dbc931a3..80a68f4cd2d5ce332d45d409810142341f42b4f8 100644 (file)
@@ -10,7 +10,7 @@ public sealed partial class PlayerTabEntry : ContainerButton
 {
     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);
 
@@ -23,5 +23,6 @@ public sealed partial class PlayerTabEntry : ContainerButton
             CharacterLabel.Text += $" [{identity}]";
         AntagonistLabel.Text = antagonist;
         BackgroundColorPanel.PanelOverride = styleBox;
+        OverallPlaytimeLabel.Text = overallPlaytime;
     }
 }
index 022aeffba76a77f937ffdb7c28a6a8ba0dfc07a7..001d56efcb28f65c992d5f02d736965c2dab00be 100644 (file)
                ClipText="True"
                Text="{Loc player-tab-antagonist}"
                MouseFilter="Pass"/>
+        <Label Name="PlaytimeLabel"
+               SizeFlagsStretchRatio="2"
+               HorizontalExpand="True"
+               ClipText="True"
+               Text="{Loc player-tab-playtime}"
+               MouseFilter="Pass"/>
     </BoxContainer>
 </ContainerButton>
index 8851680aea6336252d312f0a15d8b8aae5f48e7b..e1d769b1b2471c3d21cdfb6d317911efc94af761 100644 (file)
@@ -3,11 +3,13 @@ using Content.Server.Administration.Managers;
 using Content.Server.Chat.Managers;
 using Content.Server.IdentityManagement;
 using Content.Server.Mind;
+using Content.Server.Players.PlayTimeTracking;
 using Content.Shared.Administration;
 using Content.Shared.Administration.Events;
 using Content.Shared.CCVar;
 using Content.Shared.GameTicking;
 using Content.Shared.IdentityManagement;
+using Content.Shared.Players.PlayTimeTracking;
 using Content.Shared.Roles;
 using Content.Shared.Roles.Jobs;
 using Robust.Server.GameObjects;
@@ -25,6 +27,7 @@ namespace Content.Server.Administration.Systems
         [Dependency] private readonly IChatManager _chat = default!;
         [Dependency] private readonly IConfigurationManager _config = default!;
         [Dependency] private readonly IPlayerManager _playerManager = default!;
+        [Dependency] private readonly PlayTimeTrackingManager _playTime = default!;
         [Dependency] private readonly SharedJobSystem _jobs = default!;
         [Dependency] private readonly MindSystem _minds = 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;
+            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,
-                connected, _roundActivePlayers.Contains(data.UserId));
+                connected, _roundActivePlayers.Contains(data.UserId), overallPlaytime);
         }
 
         private void OnPanicBunkerChanged(bool enabled)
index bc1195dc47d6e136ace0e96ae1a1eeff0ec3df13..c72329aedc915702741cdc978dd3942e174fbaf2 100644 (file)
@@ -13,5 +13,12 @@ namespace Content.Shared.Administration
         NetEntity? NetEntity,
         NetUserId SessionId,
         bool Connected,
-        bool ActiveThisRound);
+        bool ActiveThisRound,
+        TimeSpan? OverallPlaytime)
+    {
+        public string PlaytimeString()
+        {
+            return OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title");
+        }
+    }
 }
index aafb784ddc1ca9ee0b45723d9fb21d6ca8387b3c..4a1905d110bfc1653682cd355841138aa4b81c66 100644 (file)
@@ -14,3 +14,8 @@ Entries:
       if admins are online or not.', type: Add}
   id: 2
   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'
index b9c8f4e5abe20106feeb538c411e6787d2eaa183..e0dd7a03b15821264a902d4dbc4fe49021a062a5 100644 (file)
@@ -2,5 +2,7 @@
 player-tab-character = Character
 player-tab-job = Job
 player-tab-antagonist = Antagonist
+player-tab-playtime = Playtime
 player-tab-show-disconnected = Show Disconnected
 player-tab-overlay = Overlay
+player-tab-entry-tooltip = Playtime is displayed in days:hours:minutes.
index 7b3e0d3684ef8eaf388f6bc58a056039cd774f3e..73d15024c9566dfa3ff753e894ca3671781c6d72 100644 (file)
@@ -10,3 +10,5 @@ generic-error = error
 generic-invalid = invalid
 
 generic-hours = hours
+
+generic-playtime-title = Playtime