using Robust.Shared.Prototypes; using Robust.Shared.GameStates; using Content.Shared.Access.Components; using Content.Shared.Containers.ItemSlots; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.PDA { [RegisterComponent, NetworkedComponent] public sealed partial class PdaComponent : Component { public const string PdaIdSlotId = "PDA-id"; public const string PdaPenSlotId = "PDA-pen"; public const string PdaPaiSlotId = "PDA-pai"; /// /// The base PDA sprite state, eg. "pda", "pda-clown" /// [DataField("state")] public string? State; [DataField("idSlot")] public ItemSlot IdSlot = new(); [DataField("penSlot")] public ItemSlot PenSlot = new(); [DataField("paiSlot")] public ItemSlot PaiSlot = new(); // Really this should just be using ItemSlot.StartingItem. However, seeing as we have so many different starting // PDA's and no nice way to inherit the other fields from the ItemSlot data definition, this makes the yaml much // nicer to read. [DataField("id", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? IdCard; [ViewVariables] public EntityUid? ContainedId; [ViewVariables] public bool FlashlightOn; [ViewVariables(VVAccess.ReadWrite)] public string? OwnerName; // The Entity that "owns" the PDA, usually a player's character. // This is useful when we are doing stuff like renaming a player and want to find their PDA to change the name // as well. [ViewVariables(VVAccess.ReadWrite)] public EntityUid? PdaOwner; [ViewVariables] public string? StationName; [ViewVariables] public string? StationAlertLevel; [ViewVariables] public Color StationAlertColor = Color.White; } }