using Content.Shared.GameTicking; using Content.Shared.Mind; using Robust.Shared.Network; using Robust.Shared.Player; namespace Content.Shared.Players; /// /// Content side for all data that tracks a player session. /// Use to retrieve this from an . /// Not currently used on the client. /// public sealed class PlayerData { /// /// The session ID of the player owning this data. /// [ViewVariables] public NetUserId UserId { get; } /// /// This is a backup copy of the player name stored on connection. /// This is useful in the event the player disconnects. /// [ViewVariables] public string Name { get; } /// /// The currently occupied mind of the player owning this data. /// DO NOT DIRECTLY SET THIS UNLESS YOU KNOW WHAT YOU'RE DOING. /// [ViewVariables, Access(typeof(SharedMindSystem), typeof(SharedGameTicker))] public EntityUid? Mind { get; set; } /// /// If true, the player is an admin and they explicitly de-adminned mid-game, /// so they should not regain admin if they reconnect. /// public bool ExplicitlyDeadminned { get; set; } public PlayerData(NetUserId userId, string name) { UserId = userId; Name = name; } } public static class PlayerDataExt { /// /// Gets the correctly cast instance of content player data from an engine player data storage. /// public static PlayerData? ContentData(this IPlayerData data) { return (PlayerData?) data.ContentDataUncast; } }