using Robust.Shared.Player; using Robust.Shared.Serialization.TypeSerializers.Implementations; namespace Content.Server.UserInterface { [RegisterComponent] public sealed partial class ActivatableUIComponent : Component { [DataField(required: true, customTypeSerializer:typeof(EnumSerializer))] public Enum? Key { get; set; } [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool InHandsOnly { get; set; } = false; [DataField] public bool SingleUser { get; set; } = false; [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool AdminOnly { get; set; } = false; [DataField] public LocId VerbText = "ui-verb-toggle-open"; /// /// Whether you need a hand to operate this UI. The hand does not need to be free, you just need to have one. /// /// /// This should probably be true for most machines & computers, but there will still be UIs that represent a /// more generic interaction / configuration that might not require hands. /// [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool RequireHands = true; /// /// Whether you can activate this ui with activateinhand or not /// [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool rightClickOnly = false; /// /// Whether spectators (non-admin ghosts) should be allowed to view this UI. /// [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool AllowSpectator = true; /// /// Whether the UI should close when the item is deselected due to a hand swap or drop /// [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool CloseOnHandDeselect = true; /// /// The client channel currently using the object, or null if there's none/not single user. /// NOTE: DO NOT DIRECTLY SET, USE ActivatableUISystem.SetCurrentSingleUser /// [ViewVariables] public ICommonSession? CurrentSingleUser; } }