using System; using System.Collections.Generic; using Content.Shared.ActionBlocker; using Content.Shared.DragDrop; using Content.Shared.Hands.Components; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Serialization; using static Content.Shared.Inventory.EquipmentSlotDefines; namespace Content.Shared.Strip.Components { public abstract class SharedStrippableComponent : Component, IDraggable { public override string Name => "Strippable"; public bool CanBeStripped(EntityUid by) { return by != Owner && IoCManager.Resolve().HasComponent(@by) && EntitySystem.Get().CanInteract(@by); } bool IDraggable.CanDrop(CanDropEvent args) { return args.Target != args.Dragged && args.Target == args.User && CanBeStripped(args.User); } public abstract bool Drop(DragDropEvent args); [NetSerializable, Serializable] public enum StrippingUiKey { Key, } } [NetSerializable, Serializable] public class StrippingInventoryButtonPressed : BoundUserInterfaceMessage { public Slots Slot { get; } public StrippingInventoryButtonPressed(Slots slot) { Slot = slot; } } [NetSerializable, Serializable] public class StrippingHandButtonPressed : BoundUserInterfaceMessage { public string Hand { get; } public StrippingHandButtonPressed(string hand) { Hand = hand; } } [NetSerializable, Serializable] public class StrippingHandcuffButtonPressed : BoundUserInterfaceMessage { public EntityUid Handcuff { get; } public StrippingHandcuffButtonPressed(EntityUid handcuff) { Handcuff = handcuff; } } [NetSerializable, Serializable] public class StrippingBoundUserInterfaceState : BoundUserInterfaceState { public Dictionary Inventory { get; } public Dictionary Hands { get; } public Dictionary Handcuffs { get; } public StrippingBoundUserInterfaceState(Dictionary inventory, Dictionary hands, Dictionary handcuffs) { Inventory = inventory; Hands = hands; Handcuffs = handcuffs; } } }