if (sel is not null)
{
Title = $"{sel.CharacterName} / {sel.Username}";
+
+ if (sel.OverallPlaytime != null)
+ {
+ Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}";
+ }
}
};
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;
SizeFlagsStretchRatio="2"
HorizontalExpand="True"
ClipText="True"/>
+ <Label Name="OverallPlaytimeLabel"
+ SizeFlagsStretchRatio="2"
+ HorizontalExpand="True"
+ ClipText="True"/>
</BoxContainer>
</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);
CharacterLabel.Text += $" [{identity}]";
AntagonistLabel.Text = antagonist;
BackgroundColorPanel.PanelOverride = styleBox;
+ OverallPlaytimeLabel.Text = overallPlaytime;
}
}
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>
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;
[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!;
}
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)
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");
+ }
+ }
}
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'
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.
generic-invalid = invalid
generic-hours = hours
+
+generic-playtime-title = Playtime