Fix not being able to sort by playtime in the F7 players tab (#21004)

This commit is contained in:
DrSmugleaf
2023-10-14 14:56:06 -07:00
committed by GitHub
parent 873e287f26
commit 8801885b35
5 changed files with 27 additions and 11 deletions

View File

@@ -22,7 +22,7 @@ namespace Content.Client.Administration.UI.Bwoink
if (sel.OverallPlaytime != null) if (sel.OverallPlaytime != null)
{ {
Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}"; Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString}";
} }
} }
}; };

View File

@@ -121,7 +121,7 @@ namespace Content.Client.Administration.UI.Tabs.PlayerTab
player.Antag ? "YES" : "NO", player.Antag ? "YES" : "NO",
new StyleBoxFlat(useAltColor ? _altColor : _defaultColor), new StyleBoxFlat(useAltColor ? _altColor : _defaultColor),
player.Connected, player.Connected,
player.PlaytimeString()); 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"); 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.Character => Compare(x.CharacterName, y.CharacterName),
Header.Job => Compare(x.StartingJob, y.StartingJob), Header.Job => Compare(x.StartingJob, y.StartingJob),
Header.Antagonist => x.Antag.CompareTo(y.Antag), Header.Antagonist => x.Antag.CompareTo(y.Antag),
Header.Playtime => Compare(x.PlaytimeString, y.PlaytimeString),
_ => 1 _ => 1
}; };
} }

View File

@@ -19,6 +19,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
CharacterLabel.OnKeyBindDown += CharacterClicked; CharacterLabel.OnKeyBindDown += CharacterClicked;
JobLabel.OnKeyBindDown += JobClicked; JobLabel.OnKeyBindDown += JobClicked;
AntagonistLabel.OnKeyBindDown += AntagonistClicked; AntagonistLabel.OnKeyBindDown += AntagonistClicked;
PlaytimeLabel.OnKeyBindDown += PlaytimeClicked;
} }
public Label GetHeader(Header header) public Label GetHeader(Header header)
@@ -29,6 +30,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
Header.Character => CharacterLabel, Header.Character => CharacterLabel,
Header.Job => JobLabel, Header.Job => JobLabel,
Header.Antagonist => AntagonistLabel, Header.Antagonist => AntagonistLabel,
Header.Playtime => PlaytimeLabel,
_ => throw new ArgumentOutOfRangeException(nameof(header), header, null) _ => throw new ArgumentOutOfRangeException(nameof(header), header, null)
}; };
} }
@@ -39,6 +41,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
CharacterLabel.Text = Loc.GetString("player-tab-character"); CharacterLabel.Text = Loc.GetString("player-tab-character");
JobLabel.Text = Loc.GetString("player-tab-job"); JobLabel.Text = Loc.GetString("player-tab-job");
AntagonistLabel.Text = Loc.GetString("player-tab-antagonist"); AntagonistLabel.Text = Loc.GetString("player-tab-antagonist");
PlaytimeLabel.Text = Loc.GetString("player-tab-playtime");
} }
private void HeaderClicked(GUIBoundKeyEventArgs args, Header header) private void HeaderClicked(GUIBoundKeyEventArgs args, Header header)
@@ -72,16 +75,22 @@ public sealed partial class PlayerTabHeader : ContainerButton
HeaderClicked(args, Header.Antagonist); HeaderClicked(args, Header.Antagonist);
} }
private void PlaytimeClicked(GUIBoundKeyEventArgs args)
{
HeaderClicked(args, Header.Playtime);
}
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if (disposing) if (disposing)
{ {
UsernameLabel.OnKeyBindDown += UsernameClicked; UsernameLabel.OnKeyBindDown -= UsernameClicked;
CharacterLabel.OnKeyBindDown += CharacterClicked; CharacterLabel.OnKeyBindDown -= CharacterClicked;
JobLabel.OnKeyBindDown += JobClicked; JobLabel.OnKeyBindDown -= JobClicked;
AntagonistLabel.OnKeyBindDown += AntagonistClicked; AntagonistLabel.OnKeyBindDown -= AntagonistClicked;
PlaytimeLabel.OnKeyBindDown -= PlaytimeClicked;
} }
} }
@@ -90,6 +99,7 @@ public sealed partial class PlayerTabHeader : ContainerButton
Username, Username,
Character, Character,
Job, Job,
Antagonist Antagonist,
Playtime
} }
} }

View File

@@ -16,9 +16,9 @@ namespace Content.Shared.Administration
bool ActiveThisRound, bool ActiveThisRound,
TimeSpan? OverallPlaytime) TimeSpan? OverallPlaytime)
{ {
public string PlaytimeString() private string? _playtimeString;
{
return OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title"); public string PlaytimeString => _playtimeString ??=
} OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title");
} }
} }

View File

@@ -36,3 +36,8 @@ Entries:
- {message: 'Add pop sound effect when using the erase admin verb.', type: Tweak} - {message: 'Add pop sound effect when using the erase admin verb.', type: Tweak}
id: 5 id: 5
time: '2023-10-14T09:47:00.0000000+00:00' 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'