From 8f4ee7ac9612ce550f12b4f0857e0088602b6174 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sat, 24 Aug 2024 03:31:02 +0200 Subject: [PATCH] Make storage implant closable using the action again (#31381) --- .../EntitySystems/SharedStorageSystem.cs | 32 +++++++++++-------- Resources/Prototypes/Actions/types.yml | 5 +-- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 2689d7750d..def9d797c4 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -41,23 +41,23 @@ namespace Content.Shared.Storage.EntitySystems; public abstract class SharedStorageSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] protected readonly IRobustRandom Random = default!; [Dependency] protected readonly ActionBlockerSystem ActionBlocker = default!; - [Dependency] private readonly EntityLookupSystem _entityLookupSystem = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly EntityLookupSystem _entityLookupSystem = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] protected readonly SharedAudioSystem Audio = default!; - [Dependency] private readonly SharedContainerSystem _containerSystem = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] protected readonly SharedEntityStorageSystem EntityStorage = default!; - [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] protected readonly SharedItemSystem ItemSystem = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!; - [Dependency] private readonly SharedStackSystem _stack = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!; + [Dependency] private readonly SharedStackSystem _stack = default!; [Dependency] protected readonly SharedTransformSystem TransformSystem = default!; - [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; + [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; [Dependency] protected readonly UseDelaySystem UseDelay = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; [Dependency] private readonly ISharedAdminLogManager _adminLog = default!; @@ -403,7 +403,13 @@ public abstract class SharedStorageSystem : EntitySystem if (args.Handled) return; - OpenStorageUI(uid, args.Performer, storageComp, false); + var uiOpen = _ui.IsUiOpen(uid, StorageComponent.StorageUiKey.Key, args.Performer); + + if (uiOpen) + _ui.CloseUi(uid, StorageComponent.StorageUiKey.Key, args.Performer); + else + OpenStorageUI(uid, args.Performer, storageComp, false); + args.Handled = true; } @@ -1395,7 +1401,7 @@ public abstract class SharedStorageSystem : EntitySystem if (session is not { } playerSession) return; - if (playerSession.AttachedEntity is not {Valid: true} playerEnt || !Exists(playerEnt)) + if (playerSession.AttachedEntity is not { Valid: true } playerEnt || !Exists(playerEnt)) return; if (!_inventory.TryGetSlotEntity(playerEnt, slot, out var storageEnt)) diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index 4fa9ed3135..5430a3f005 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -44,8 +44,8 @@ - type: entity id: ActionOpenStorageImplant - name: Open Storage Implant - description: Opens the storage implant embedded under your skin + name: Toggle Storage Implant + description: Opens or closes the storage implant embedded under your skin components: - type: InstantAction itemIconStyle: BigAction @@ -54,6 +54,7 @@ sprite: Clothing/Back/Backpacks/backpack.rsi state: icon event: !type:OpenStorageImplantEvent + useDelay: 1 - type: entity parent: BaseSuicideAction -- 2.51.2