Files
tbd-station-14/Content.Shared/Administration/PlayerPanelEuiState.cs
nikthechampiongr d1a60fafe7 Implement a playerpanel (#30238)
* Basic structure for the player panel ui

* Ensure basic functionality

Player panel now receives and displays basic info

* Make whitelistcommands accept user ids

* Make PlayerPanel use GUIDs where possible

* Add functionality to most playerpanel buttons

* Implement remaining playerpanel features

* Localize everything

* Finish up

* Put command arguments in quotes

I am not sure if it's even possible to have something like a space in
them considering they are guids and usernames but sure why not

* Make playerpanel a verb

* Add Logs button to player panel

* Change Notesbutton text and make whitelistbutton a confirmtion button

* Add freeze button that does not mute the player

* Add sharedconnections counter to playerpanel

* Make the playetime format clearer

* Allow for copying of the a player's username

* Do minor cleanup

* Rearrange buttons

* Fix unfreeze button not updating

* Fix wrong localisation text

* "Fix" the same role ban counting multiple times

The way rolebans are stored is horrible.
As such if you ban someone from a departmenrt or something
role bans are individually placed for every role.
The only way I found to distinguish them is the bantime.
This is horrible but I do not want to rewrite how all the bans are
stored right now.

* Add Delete and Rejuvenate buttons to player panel

By popular demand

* Marginally improve ui

* Add logs

* review update

* Fix verb

* Fix double notes

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-08-09 15:33:25 +10:00

55 lines
1.5 KiB
C#

using Content.Shared.Eui;
using Robust.Shared.Network;
using Robust.Shared.Serialization;
using YamlDotNet.Serialization.Callbacks;
namespace Content.Shared.Administration;
[Serializable, NetSerializable]
public sealed class PlayerPanelEuiState(NetUserId guid,
string username,
TimeSpan playtime,
int? totalNotes,
int? totalBans,
int? totalRoleBans,
int sharedConnections,
bool? whitelisted,
bool canFreeze,
bool frozen,
bool canAhelp)
: EuiStateBase
{
public readonly NetUserId Guid = guid;
public readonly string Username = username;
public readonly TimeSpan Playtime = playtime;
public readonly int? TotalNotes = totalNotes;
public readonly int? TotalBans = totalBans;
public readonly int? TotalRoleBans = totalRoleBans;
public readonly int SharedConnections = sharedConnections;
public readonly bool? Whitelisted = whitelisted;
public readonly bool CanFreeze = canFreeze;
public readonly bool Frozen = frozen;
public readonly bool CanAhelp = canAhelp;
}
[Serializable, NetSerializable]
public sealed class PlayerPanelFreezeMessage : EuiMessageBase
{
public readonly bool Mute;
public PlayerPanelFreezeMessage(bool mute = false)
{
Mute = mute;
}
}
[Serializable, NetSerializable]
public sealed class PlayerPanelLogsMessage : EuiMessageBase;
[Serializable, NetSerializable]
public sealed class PlayerPanelDeleteMessage : EuiMessageBase;
[Serializable, NetSerializable]
public sealed class PlayerPanelRejuvenationMessage: EuiMessageBase;