using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations; namespace Content.Shared.UserInterface { [RegisterComponent, NetworkedComponent] public sealed partial class ActivatableUIComponent : Component { [DataField(required: true, customTypeSerializer: typeof(EnumSerializer))] public Enum? Key { get; set; } = default!; [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; /// /// Entities that are required to open this UI. /// [DataField("allowedItems")] [ViewVariables(VVAccess.ReadWrite)] public EntityWhitelist? AllowedItems = null; /// /// Whether you can activate this ui with activateinhand or not /// [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool RightClickOnly; /// /// 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 EntityUid? CurrentSingleUser; } }