using Content.Shared.ActionBlocker; using Content.Shared.DragDrop; using Content.Shared.Hands.Components; using Robust.Shared.Serialization; namespace Content.Shared.Strip.Components { public abstract class SharedStrippableComponent : Component, IDraggable { public bool CanBeStripped(EntityUid by) { return by != Owner && IoCManager.Resolve().HasComponent(@by) && EntitySystem.Get().CanInteract(@by, Owner); } 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 : byte { Key, } [NetSerializable, Serializable] public sealed class StrippingInventoryButtonPressed : BoundUserInterfaceMessage { public string Slot { get; } public StrippingInventoryButtonPressed(string slot) { Slot = slot; } } [NetSerializable, Serializable] public sealed class StrippingHandButtonPressed : BoundUserInterfaceMessage { public string Hand { get; } public StrippingHandButtonPressed(string hand) { Hand = hand; } } [NetSerializable, Serializable] public sealed class StrippingHandcuffButtonPressed : BoundUserInterfaceMessage { public EntityUid Handcuff { get; } public StrippingHandcuffButtonPressed(EntityUid handcuff) { Handcuff = handcuff; } } [NetSerializable, Serializable] public sealed class StrippingBoundUserInterfaceState : BoundUserInterfaceState { public Dictionary<(string ID, string Name), string> Inventory { get; } public Dictionary Hands { get; } public Dictionary Handcuffs { get; } public StrippingBoundUserInterfaceState(Dictionary<(string ID, string Name), string> inventory, Dictionary hands, Dictionary handcuffs) { Inventory = inventory; Hands = hands; Handcuffs = handcuffs; } } }