From 8150c1c82a030beac2337404a1a0cca264cc6a6f Mon Sep 17 00:00:00 2001 From: RedFoxIV <38788538+RedFoxIV@users.noreply.github.com> Date: Sun, 16 Feb 2025 02:25:07 +0300 Subject: [PATCH 1/2] initial sidestream port --- .../ItemSlotPicker/ItemSlotPickerSystem.cs | 51 +++++++ .../UI/ItemSlotPickerBoundUserInterface.cs | 141 ++++++++++++++++++ .../ItemSlotPicker/ItemSlotPickerSystem.cs | 10 ++ .../Interaction/SharedInteractionSystem.cs | 21 +++ .../ItemSlotPicker/ItemSlotPickerComponent.cs | 17 +++ .../SharedItemSlotPickerSystem.cs | 66 ++++++++ .../UI/ItemSlotPickerSlotPickedMessage.cs | 20 +++ .../Storage/Components/SharedMapLayerData.cs | 4 +- .../EntitySystems/SharedItemMapperSystem.cs | 2 +- .../Structures/Specific/Janitor/janicart.yml | 7 + 10 files changed, 336 insertions(+), 3 deletions(-) create mode 100644 Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs create mode 100644 Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs create mode 100644 Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs create mode 100644 Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs create mode 100644 Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs create mode 100644 Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs diff --git a/Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs b/Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs new file mode 100644 index 0000000000..b943cb4200 --- /dev/null +++ b/Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs @@ -0,0 +1,51 @@ +using Content.Shared.Interaction; +using Content.Shared.ItemSlotPicker; +using Content.Shared.ItemSlotPicker.UI; +using Robust.Client.GameObjects; +using Robust.Client.Player; +using Robust.Client.UserInterface; +using Robust.Shared.Containers; +using Robust.Shared.Timing; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Content.Client.ItemSlotPicker; + +public sealed class ItemSlotPickerSystem : SharedItemSlotPickerSystem +{ + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(EntInserted); + SubscribeLocalEvent(EntRemoved); + } + + private void EntInserted(EntityUid uid, ItemSlotPickerComponent comp, EntInsertedIntoContainerMessage args) + { + if (!_timing.IsFirstTimePredicted || + _player.LocalEntity is not EntityUid player || + !_ui.IsUiOpen(uid, ItemSlotPickerKey.Key, player)) + return; + var msg = new ItemSlotPickerContentsChangedMessage(); + msg.Actor = player; + _ui.RaiseUiMessage(uid, ItemSlotPickerKey.Key, msg); + } + + private void EntRemoved(EntityUid uid, ItemSlotPickerComponent comp, EntRemovedFromContainerMessage args) + { + if (!_timing.IsFirstTimePredicted || + _player.LocalEntity is not EntityUid player || + !_ui.IsUiOpen(uid, ItemSlotPickerKey.Key, player)) + return; + var msg = new ItemSlotPickerContentsChangedMessage(); + msg.Actor = player; + _ui.RaiseUiMessage(uid, ItemSlotPickerKey.Key, msg); + } + +} diff --git a/Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs b/Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs new file mode 100644 index 0000000000..bffbf1ec71 --- /dev/null +++ b/Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs @@ -0,0 +1,141 @@ +using Content.Client.Chat.UI; +using Content.Client.UserInterface.Controls; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.ItemSlotPicker; +using Content.Shared.ItemSlotPicker.UI; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Input; +using Robust.Client.UserInterface.Controls; +using Robust.Shared.Timing; +using static Robust.Client.UserInterface.Control; +using System.Numerics; + +namespace Content.Client.ItemSlotPicker.UI; + +// a UFO came by and left this message here +[UsedImplicitly] +public sealed class ItemSlotPickerBoundUserInterface : BoundUserInterface +{ + [Dependency] private readonly IClyde _clyde = default!; + [Dependency] private readonly IEyeManager _eye = default!; + + private readonly ItemSlotsSystem _itemSlots; + private readonly SharedTransformSystem _transform; + + private RadialMenu? _menu; + private RadialContainer? _layer; + + public ItemSlotPickerBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + IoCManager.InjectDependencies(this); + _itemSlots = EntMan.System(); + _transform = EntMan.System(); + } + + protected override void Open() + { + _menu = new EntityCenteredRadialMenu(Owner); + _menu.OnClose += Close; + _menu.CloseButtonStyleClass = "RadialMenuCloseButton"; + _menu.BackButtonStyleClass = "RadialMenuBackButton"; + + UpdateLayer(); + _menu.OpenCenteredAt(_eye.WorldToScreen(_transform.GetWorldPosition(Owner)) / _clyde.ScreenSize); + } + + private void UpdateLayer() + { + var picker = EntMan.GetComponent(Owner); + if (_layer is not null) + _menu!.RemoveChild(_layer); + + _layer = new RadialContainer(); + foreach (string slotID in picker.ItemSlots) + { + if (!_itemSlots.TryGetSlot(Owner, slotID, out var slot) || + !slot.HasItem) + continue; + + // i see no value in having 99 different radial button types with the only difference being what data they hold + // hence i'm just setting all relevant parameters after constructing the button. + var button = new RadialMenuTextureButton + { + StyleClasses = { "RadialMenuButton" }, + SetSize = new Vector2(64f, 64f), + ToolTip = Loc.GetString(slot.Name), + }; + + var tex = new TextureRect + { + VerticalAlignment = VAlignment.Center, + HorizontalAlignment = HAlignment.Center, + Texture = EntMan.GetComponent(slot.Item!.Value).Icon?.Default, + TextureScale = new Vector2(2f, 2f), + }; + + button.AddChild(tex); + button.OnButtonUp += _ => { SendPredictedMessage(new ItemSlotPickerSlotPickedMessage(slotID)); }; + _layer.AddChild(button); + } + _menu!.AddChild(_layer); + } + + protected override void ReceiveMessage(BoundUserInterfaceMessage message) + { + if (message is not ItemSlotPickerContentsChangedMessage) + return; + UpdateLayer(); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) return; + + _menu?.Dispose(); + } +} + +[Virtual] +public class EntityCenteredRadialMenu : RadialMenu +{ + public EntityUid Entity; + [Dependency] private readonly IClyde _clyde = default!; + [Dependency] private readonly IEyeManager _eye = default!; + [Dependency] private readonly IEntityManager _entMan = default!; + private readonly SharedTransformSystem _transform; + + private System.Numerics.Vector2 _cachedPos; + + public EntityCenteredRadialMenu(EntityUid entity) : base() + { + Entity = entity; + IoCManager.InjectDependencies(this); + _transform = _entMan.System(); + } + + public EntityCenteredRadialMenu(EntityUid entity, IEntityManager man, IEyeManager eye, IClyde clyde) : base() + { + Entity = entity; + _clyde = clyde; + _entMan = man; + _eye = eye; + _transform = _entMan.System(); + } + + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + if (_entMan.Deleted(Entity) || + !_entMan.TryGetComponent(Entity, out var transform)) + return; + var pos = _eye.WorldToScreen(_transform.GetWorldPosition(Entity)) / _clyde.ScreenSize; + if (pos == _cachedPos) + return; + _cachedPos = pos; + RecenterWindow(pos); + } +} diff --git a/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs b/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs new file mode 100644 index 0000000000..f2a2ec8f45 --- /dev/null +++ b/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs @@ -0,0 +1,10 @@ +using Content.Shared.ItemSlotPicker; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Content.Server.ItemSlotPicker; + +public sealed class ItemSlotPickerSystem : SharedItemSlotPickerSystem; diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 271ee5b04a..be2fbaf84d 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -1189,6 +1189,8 @@ public bool UseInHandInteraction( return InteractionActivate(user, used, false, false, false); } + + /// /// Alternative interactions on an entity. /// @@ -1198,6 +1200,19 @@ public bool UseInHandInteraction( /// True if the interaction was handled, false otherwise. public bool AltInteract(EntityUid user, EntityUid target) { + // WD EDIT START + // yeah, this is a crutch for stuff that should only be "alt-interacted" + // on a click, instead of showing it in the menu. + // Because of that, such interaction should not be obscured by a "higher priority" altverb, + // lest it becomes completely unavailable. Thus, it is relegated to a separate event, + // fired before looking for altverbs. + // Look upon my shit, and despair. + var ev = new AlternativeInteractionEvent(user); + RaiseLocalEvent(target, ev); + if (ev.Handled) + return true; + // WD EDIT END + // Get list of alt-interact verbs var verbs = _verbSystem.GetLocalVerbs(target, user, typeof(AlternativeVerb)).Where(verb => ((AlternativeVerb) verb).InActiveHandOnly == false); // WD EDIT @@ -1440,6 +1455,12 @@ public bool SupportsComplexInteractions(EntityUid user) return _actionBlockerSystem.CanComplexInteract(user); } } + // WWDP EDIT START + public sealed class AlternativeInteractionEvent(EntityUid user) : HandledEntityEventArgs + { + public EntityUid User = user; + } + // WWDP EDIT END /// /// Raised when a player attempts to activate an item in an inventory slot or hand slot diff --git a/Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs b/Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs new file mode 100644 index 0000000000..118f5b5884 --- /dev/null +++ b/Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Content.Shared.ItemSlotPicker; + +[RegisterComponent] +[NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ItemSlotPickerComponent : Component +{ + [DataField] + [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public List ItemSlots = new(); +} diff --git a/Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs b/Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs new file mode 100644 index 0000000000..38ce64de6e --- /dev/null +++ b/Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs @@ -0,0 +1,66 @@ +using Content.Shared.ActionBlocker; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Hands.Components; +using Content.Shared.Interaction; +using Content.Shared.ItemSlotPicker.UI; +using Robust.Shared.Containers; +using Robust.Shared.Serialization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Content.Shared.ItemSlotPicker; + +public abstract class SharedItemSlotPickerSystem : EntitySystem +{ + [Dependency] protected readonly SharedUserInterfaceSystem _ui = default!; + [Dependency] protected readonly ItemSlotsSystem _itemSlots = default!; + [Dependency] protected readonly ActionBlockerSystem _blocker = default!; + [Dependency] protected readonly SharedInteractionSystem _interact = default!; + + public override void Initialize() + { + SubscribeLocalEvent(CompInit); + SubscribeLocalEvent(AltInteract); + SubscribeLocalEvent(OnMessage); + } + + protected virtual void CompInit(EntityUid uid, ItemSlotPickerComponent comp, ComponentInit args) + { + _ui.SetUi(uid, ItemSlotPickerKey.Key, new InterfaceData("ItemSlotPickerBoundUserInterface", 1.5f)); + } + + protected virtual void AltInteract(EntityUid uid, ItemSlotPickerComponent comp, AlternativeInteractionEvent args) + { + var user = args.User; + if (!TryComp(uid, out var slots) || + !TryComp(user, out var hands) || + !_blocker.CanComplexInteract(user) || + !_blocker.CanInteract(user, uid) || + !_interact.InRangeAndAccessible(user, uid, 1.5f)) + return; + + args.Handled = true; + + if (hands.ActiveHandEntity is EntityUid item) + foreach (var slot in comp.ItemSlots) + if (_itemSlots.TryInsert(uid, slot, item, user, slots, true)) + return; // I wish this altverb bullshit wasn't a thing. + + _ui.TryToggleUi(uid, ItemSlotPickerKey.Key, user); + } + + protected virtual void OnMessage(EntityUid uid, ItemSlotPickerComponent comp, ItemSlotPickerSlotPickedMessage args) + { + if (!comp.ItemSlots.Contains(args.SlotId) || + !_itemSlots.TryGetSlot(uid, args.SlotId, out var slot)) + return; + + _itemSlots.TryEjectToHands(uid, slot, args.Actor, true); + _ui.CloseUi(uid, ItemSlotPickerKey.Key, args.Actor); + } +} +[Serializable, NetSerializable] +public enum ItemSlotPickerKey { Key }; diff --git a/Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs b/Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs new file mode 100644 index 0000000000..20ac82f479 --- /dev/null +++ b/Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Serialization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Content.Shared.ItemSlotPicker.UI; + +[Serializable, NetSerializable] +public sealed class ItemSlotPickerSlotPickedMessage(string id) : BoundUserInterfaceMessage +{ + public string SlotId = id; +} + + +//[Serializable, NetSerializable] +public sealed class ItemSlotPickerContentsChangedMessage() : BoundUserInterfaceMessage +{ +} diff --git a/Content.Shared/Storage/Components/SharedMapLayerData.cs b/Content.Shared/Storage/Components/SharedMapLayerData.cs index 6d2f4a7eaf..28e241e1ac 100644 --- a/Content.Shared/Storage/Components/SharedMapLayerData.cs +++ b/Content.Shared/Storage/Components/SharedMapLayerData.cs @@ -17,8 +17,8 @@ public sealed partial class SharedMapLayerData { public string Layer = string.Empty; - [DataField("whitelist", required: true, serverOnly: true)] - public EntityWhitelist ServerWhitelist { get; set; } = new(); + [DataField("whitelist", required: true)] // WWDP EDIT FORMELY ServerWhiteList + public EntityWhitelist Whitelist { get; set; } = new(); // WHO THE FUCK MADE IT SERVERONLY AND WHY /// /// Minimal amount of entities that are valid for whitelist. diff --git a/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs b/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs index 2557f8100c..519c82b000 100644 --- a/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs @@ -95,7 +95,7 @@ private bool TryGetLayers(EntityUid uid, var list = new List(); foreach (var mapLayerData in itemMapper.MapLayers.Values) { - var count = containedLayers.Count(ent => _whitelistSystem.IsWhitelistPass(mapLayerData.ServerWhitelist, ent)); + var count = containedLayers.Count(ent => _whitelistSystem.IsWhitelistPass(mapLayerData.Whitelist, ent)); // WWDP EDIT ServerWhiteList -> Whitelist if (count >= mapLayerData.MinCount && count <= mapLayerData.MaxCount) { list.Add(mapLayerData.Layer); diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml index 9fd05beaee..c6b93fd0c1 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml @@ -204,6 +204,13 @@ tags: - TrashBag priority: 3 # Higher than drinking priority + - type: ItemSlotPicker + itemSlots: + - mop_slot + - plunger_slot + - trashbag_slot + - lightreplacer_slot + - spraybottle_slot - type: Fixtures fixtures: fix1: From 27e35fd0ed05db14701133dbc1e32635db65e922 Mon Sep 17 00:00:00 2001 From: RedFoxIV <38788538+RedFoxIV@users.noreply.github.com> Date: Sun, 16 Feb 2025 18:13:43 +0300 Subject: [PATCH 2/2] blyadison --- .../ItemSlotPicker/ItemSlotPickerSystem.cs | 6 +++--- .../UI/ItemSlotPickerBoundUserInterface.cs | 10 +++++----- Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs | 10 ---------- .../_White/ItemSlotPicker/ItemSlotPickerSystem.cs | 5 +++++ .../ItemSlotPicker/ItemSlotPickerComponent.cs | 2 +- .../ItemSlotPicker/SharedItemSlotPickerSystem.cs | 4 ++-- .../UI/ItemSlotPickerSlotPickedMessage.cs | 2 +- .../Entities/Structures/Specific/Janitor/janicart.yml | 2 +- 8 files changed, 18 insertions(+), 23 deletions(-) rename Content.Client/{ => _White}/ItemSlotPicker/ItemSlotPickerSystem.cs (92%) rename Content.Client/{ => _White}/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs (95%) delete mode 100644 Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs create mode 100644 Content.Server/_White/ItemSlotPicker/ItemSlotPickerSystem.cs rename Content.Shared/{ => _White}/ItemSlotPicker/ItemSlotPickerComponent.cs (89%) rename Content.Shared/{ => _White}/ItemSlotPicker/SharedItemSlotPickerSystem.cs (96%) rename Content.Shared/{ => _White}/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs (89%) diff --git a/Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs b/Content.Client/_White/ItemSlotPicker/ItemSlotPickerSystem.cs similarity index 92% rename from Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs rename to Content.Client/_White/ItemSlotPicker/ItemSlotPickerSystem.cs index b943cb4200..91ac929796 100644 --- a/Content.Client/ItemSlotPicker/ItemSlotPickerSystem.cs +++ b/Content.Client/_White/ItemSlotPicker/ItemSlotPickerSystem.cs @@ -1,6 +1,6 @@ +using Content.Shared._White.ItemSlotPicker; using Content.Shared.Interaction; -using Content.Shared.ItemSlotPicker; -using Content.Shared.ItemSlotPicker.UI; +using Content.Shared._White.ItemSlotPicker.UI; using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Client.UserInterface; @@ -12,7 +12,7 @@ using System.Text; using System.Threading.Tasks; -namespace Content.Client.ItemSlotPicker; +namespace Content.Client._White.ItemSlotPicker; public sealed class ItemSlotPickerSystem : SharedItemSlotPickerSystem { diff --git a/Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs b/Content.Client/_White/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs similarity index 95% rename from Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs rename to Content.Client/_White/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs index bffbf1ec71..b65016db8e 100644 --- a/Content.Client/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs +++ b/Content.Client/_White/ItemSlotPicker/UI/ItemSlotPickerBoundUserInterface.cs @@ -1,8 +1,6 @@ using Content.Client.Chat.UI; using Content.Client.UserInterface.Controls; using Content.Shared.Containers.ItemSlots; -using Content.Shared.ItemSlotPicker; -using Content.Shared.ItemSlotPicker.UI; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -11,8 +9,10 @@ using Robust.Shared.Timing; using static Robust.Client.UserInterface.Control; using System.Numerics; +using Content.Shared._White.ItemSlotPicker; +using Content.Shared._White.ItemSlotPicker.UI; -namespace Content.Client.ItemSlotPicker.UI; +namespace Content.Client._White.ItemSlotPicker.UI; // a UFO came by and left this message here [UsedImplicitly] @@ -52,7 +52,7 @@ private void UpdateLayer() _menu!.RemoveChild(_layer); _layer = new RadialContainer(); - foreach (string slotID in picker.ItemSlots) + foreach (var slotID in picker.ItemSlots) { if (!_itemSlots.TryGetSlot(Owner, slotID, out var slot) || !slot.HasItem) @@ -107,7 +107,7 @@ public class EntityCenteredRadialMenu : RadialMenu [Dependency] private readonly IEntityManager _entMan = default!; private readonly SharedTransformSystem _transform; - private System.Numerics.Vector2 _cachedPos; + private Vector2 _cachedPos; public EntityCenteredRadialMenu(EntityUid entity) : base() { diff --git a/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs b/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs deleted file mode 100644 index f2a2ec8f45..0000000000 --- a/Content.Server/ItemSlotPicker/ItemSlotPickerSystem.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Content.Shared.ItemSlotPicker; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Content.Server.ItemSlotPicker; - -public sealed class ItemSlotPickerSystem : SharedItemSlotPickerSystem; diff --git a/Content.Server/_White/ItemSlotPicker/ItemSlotPickerSystem.cs b/Content.Server/_White/ItemSlotPicker/ItemSlotPickerSystem.cs new file mode 100644 index 0000000000..6c2c7d4d9d --- /dev/null +++ b/Content.Server/_White/ItemSlotPicker/ItemSlotPickerSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared._White.ItemSlotPicker; + +namespace Content.Server._White.ItemSlotPicker; + +public sealed class ItemSlotPickerSystem : SharedItemSlotPickerSystem; diff --git a/Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs b/Content.Shared/_White/ItemSlotPicker/ItemSlotPickerComponent.cs similarity index 89% rename from Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs rename to Content.Shared/_White/ItemSlotPicker/ItemSlotPickerComponent.cs index 118f5b5884..784b10198c 100644 --- a/Content.Shared/ItemSlotPicker/ItemSlotPickerComponent.cs +++ b/Content.Shared/_White/ItemSlotPicker/ItemSlotPickerComponent.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace Content.Shared.ItemSlotPicker; +namespace Content.Shared._White.ItemSlotPicker; [RegisterComponent] [NetworkedComponent, AutoGenerateComponentState] diff --git a/Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs b/Content.Shared/_White/ItemSlotPicker/SharedItemSlotPickerSystem.cs similarity index 96% rename from Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs rename to Content.Shared/_White/ItemSlotPicker/SharedItemSlotPickerSystem.cs index 38ce64de6e..68aa38d2d8 100644 --- a/Content.Shared/ItemSlotPicker/SharedItemSlotPickerSystem.cs +++ b/Content.Shared/_White/ItemSlotPicker/SharedItemSlotPickerSystem.cs @@ -1,8 +1,8 @@ +using Content.Shared._White.ItemSlotPicker.UI; using Content.Shared.ActionBlocker; using Content.Shared.Containers.ItemSlots; using Content.Shared.Hands.Components; using Content.Shared.Interaction; -using Content.Shared.ItemSlotPicker.UI; using Robust.Shared.Containers; using Robust.Shared.Serialization; using System; @@ -11,7 +11,7 @@ using System.Text; using System.Threading.Tasks; -namespace Content.Shared.ItemSlotPicker; +namespace Content.Shared._White.ItemSlotPicker; public abstract class SharedItemSlotPickerSystem : EntitySystem { diff --git a/Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs b/Content.Shared/_White/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs similarity index 89% rename from Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs rename to Content.Shared/_White/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs index 20ac82f479..4061ad91ca 100644 --- a/Content.Shared/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs +++ b/Content.Shared/_White/ItemSlotPicker/UI/ItemSlotPickerSlotPickedMessage.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace Content.Shared.ItemSlotPicker.UI; +namespace Content.Shared._White.ItemSlotPicker.UI; [Serializable, NetSerializable] public sealed class ItemSlotPickerSlotPickedMessage(string id) : BoundUserInterfaceMessage diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml index c6b93fd0c1..4c03b93659 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml @@ -204,7 +204,7 @@ tags: - TrashBag priority: 3 # Higher than drinking priority - - type: ItemSlotPicker + - type: ItemSlotPicker # wwdp itemSlots: - mop_slot - plunger_slot