]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix not being able to sort by playtime in the F7 players tab (#21004)
authorDrSmugleaf <DrSmugleaf@users.noreply.github.com>
Sat, 14 Oct 2023 21:56:06 +0000 (14:56 -0700)
committerGitHub <noreply@github.com>
Sat, 14 Oct 2023 21:56:06 +0000 (14:56 -0700)
Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs
Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs
Content.Shared/Administration/PlayerInfo.cs
Resources/Changelog/Admin.yml

index 2562da3fa77573adb648a345c1ef3f793ac7ba4a..f8d06f758f40dc227e277a7624cf50bbc95655af 100644 (file)
@@ -22,7 +22,7 @@ namespace Content.Client.Administration.UI.Bwoink
 
                     if (sel.OverallPlaytime != null)
                     {
-                        Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}";
+                        Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString}";
                     }
                 }
             };
index ad8e4392c2ab863d944ad03f9ee9114edb6877b0..e6a64fc48d4a0fbfb46cdbb3294e3df00dc4e55d 100644 (file)
@@ -121,7 +121,7 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
                     player.Antag ? "YES" : "NO",
                     new StyleBoxFlat(useAltColor ? _altColor : _defaultColor),
                     player.Connected,
-                    player.PlaytimeString());
+                    player.PlaytimeString);
                 entry.PlayerEntity = player.NetEntity;
                 entry.OnPressed += args => OnEntryPressed?.Invoke(args);
                 entry.ToolTip = Loc.GetString("player-tab-entry-tooltip");
@@ -150,6 +150,7 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
                 Header.Character => Compare(x.CharacterName, y.CharacterName),
                 Header.Job => Compare(x.StartingJob, y.StartingJob),
                 Header.Antagonist => x.Antag.CompareTo(y.Antag),
+                Header.Playtime => Compare(x.PlaytimeString, y.PlaytimeString),
                 _ => 1
             };
         }
index 08e414b655ecd15d938bf2585c8b4d6673312bdc..98de6dafa98dfa05e3e6ea9754a6d2dfa535bec1 100644 (file)
@@ -19,6 +19,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
         CharacterLabel.OnKeyBindDown += CharacterClicked;
         JobLabel.OnKeyBindDown += JobClicked;
         AntagonistLabel.OnKeyBindDown += AntagonistClicked;
+        PlaytimeLabel.OnKeyBindDown += PlaytimeClicked;
     }
 
     public Label GetHeader(Header header)
@@ -29,6 +30,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
             Header.Character => CharacterLabel,
             Header.Job => JobLabel,
             Header.Antagonist => AntagonistLabel,
+            Header.Playtime => PlaytimeLabel,
             _ => throw new ArgumentOutOfRangeException(nameof(header), header, null)
         };
     }
@@ -39,6 +41,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
         CharacterLabel.Text = Loc.GetString("player-tab-character");
         JobLabel.Text = Loc.GetString("player-tab-job");
         AntagonistLabel.Text = Loc.GetString("player-tab-antagonist");
+        PlaytimeLabel.Text = Loc.GetString("player-tab-playtime");
     }
 
     private void HeaderClicked(GUIBoundKeyEventArgs args, Header header)
@@ -72,16 +75,22 @@ public sealed partial class PlayerTabHeader : ContainerButton
         HeaderClicked(args, Header.Antagonist);
     }
 
+    private void PlaytimeClicked(GUIBoundKeyEventArgs args)
+    {
+        HeaderClicked(args, Header.Playtime);
+    }
+
     protected override void Dispose(bool disposing)
     {
         base.Dispose(disposing);
 
         if (disposing)
         {
-            UsernameLabel.OnKeyBindDown += UsernameClicked;
-            CharacterLabel.OnKeyBindDown += CharacterClicked;
-            JobLabel.OnKeyBindDown += JobClicked;
-            AntagonistLabel.OnKeyBindDown += AntagonistClicked;
+            UsernameLabel.OnKeyBindDown -= UsernameClicked;
+            CharacterLabel.OnKeyBindDown -= CharacterClicked;
+            JobLabel.OnKeyBindDown -= JobClicked;
+            AntagonistLabel.OnKeyBindDown -= AntagonistClicked;
+            PlaytimeLabel.OnKeyBindDown -= PlaytimeClicked;
         }
     }
 
@@ -90,6 +99,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
         Username,
         Character,
         Job,
-        Antagonist
+        Antagonist,
+        Playtime
     }
 }
index c72329aedc915702741cdc978dd3942e174fbaf2..74fd7e9dc06b3cfbe674c0699fb15741c53b0b3b 100644 (file)
@@ -16,9 +16,9 @@ namespace Content.Shared.Administration
         bool ActiveThisRound,
         TimeSpan? OverallPlaytime)
     {
-        public string PlaytimeString()
-        {
-            return OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title");
-        }
+        private string? _playtimeString;
+
+        public string PlaytimeString => _playtimeString ??=
+            OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title");
     }
 }
index 9aa77155cc50feedc6c1240f60ba69c81cbce0c5..5a24f0d9794cf2a162a5705aa862dcafa194e3de 100644 (file)
@@ -36,3 +36,8 @@ Entries:
   - {message: 'Add pop sound effect when using the erase admin verb.', type: Tweak}
   id: 5
   time: '2023-10-14T09:47:00.0000000+00:00'
+- author: DrSmugleaf
+  changes:
+  - {message: 'Fixed not being able to sort the F7 players tab by playtime.', type: Fix}
+  id: 6
+  time: '2023-10-14T23:52:00.0000000+00:00'