public void UIInventoryStorageActivate(string slot)
{
- EntityManager.EntityNetManager?.SendSystemNetworkMessage(new OpenSlotStorageNetworkMessage(slot));
+ EntityManager.RaisePredictiveEvent(new OpenSlotStorageNetworkMessage(slot));
}
public void UIInventoryExamine(string slot, EntityUid uid)
-using Content.Server.Storage.EntitySystems;
using Content.Shared.Explosion;
using Content.Shared.Inventory;
-using Content.Shared.Inventory.Events;
-using Content.Shared.Storage;
namespace Content.Server.Inventory
{
public sealed class ServerInventorySystem : InventorySystem
{
- [Dependency] private readonly StorageSystem _storageSystem = default!;
-
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<InventoryComponent, BeforeExplodeEvent>(OnExploded);
- SubscribeNetworkEvent<OpenSlotStorageNetworkMessage>(OnOpenSlotStorage);
}
private void OnExploded(Entity<InventoryComponent> ent, ref BeforeExplodeEvent args)
}
}
- private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args)
- {
- if (args.SenderSession.AttachedEntity is not { Valid: true } uid)
- return;
-
- if (TryGetSlotEntity(uid, ev.Slot, out var entityUid) && TryComp<StorageComponent>(entityUid, out var storageComponent))
- {
- _storageSystem.OpenStorageUI(entityUid.Value, uid, storageComponent);
- }
- }
-
public void TransferEntityInventories(Entity<InventoryComponent?> source, Entity<InventoryComponent?> target)
{
if (!Resolve(source.Owner, ref source.Comp) || !Resolve(target.Owner, ref target.Comp))
using Content.Shared.Explosion;
using Content.Shared.Ghost;
using Content.Shared.Hands;
-using Content.Shared.Input;
-using Content.Shared.Inventory;
using Content.Shared.Lock;
using Content.Shared.Storage;
using Content.Shared.Storage.Components;
using Content.Shared.Verbs;
using Robust.Server.GameObjects;
using Robust.Shared.Audio.Systems;
-using Robust.Shared.Input.Binding;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
{
[Dependency] private readonly IAdminManager _admin = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
- [Dependency] private readonly InventorySystem _inventory = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly UseDelaySystem _useDelay = default!;
SubscribeLocalEvent<StorageComponent, BeforeExplodeEvent>(OnExploded);
SubscribeLocalEvent<StorageFillComponent, MapInitEvent>(OnStorageFillMapInit);
-
- CommandBinds.Builder
- .Bind(ContentKeyFunctions.OpenBackpack, InputCmdHandler.FromDelegate(HandleOpenBackpack))
- .Bind(ContentKeyFunctions.OpenBelt, InputCmdHandler.FromDelegate(HandleOpenBelt))
- .Register<StorageSystem>();
}
private void AddUiVerb(EntityUid uid, StorageComponent component, GetVerbsEvent<ActivationVerb> args)
}
}
}
-
- private void HandleOpenBackpack(ICommonSession? session)
- {
- HandleOpenSlotUI(session, "back");
- }
-
- private void HandleOpenBelt(ICommonSession? session)
- {
- HandleOpenSlotUI(session, "belt");
- }
-
- private void HandleOpenSlotUI(ICommonSession? session, string slot)
- {
- if (session is not { } playerSession)
- return;
-
- if (playerSession.AttachedEntity is not {Valid: true} playerEnt || !Exists(playerEnt))
- return;
-
- if (!_inventory.TryGetSlotEntity(playerEnt, slot, out var storageEnt))
- return;
-
- if (!ActionBlocker.CanInteract(playerEnt, storageEnt))
- return;
-
- OpenStorageUI(storageEnt.Value, playerEnt);
- }
}
using System.Diagnostics.CodeAnalysis;
+using Content.Shared.Inventory.Events;
+using Content.Shared.Storage;
using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
private void InitializeSlots()
{
SubscribeLocalEvent<InventoryComponent, ComponentInit>(OnInit);
+ SubscribeNetworkEvent<OpenSlotStorageNetworkMessage>(OnOpenSlotStorage);
_vvm.GetTypeHandler<InventoryComponent>()
.AddHandler(HandleViewVariablesSlots, ListViewVariablesSlots);
}
}
+ private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args)
+ {
+ if (args.SenderSession.AttachedEntity is not { Valid: true } uid)
+ return;
+
+ if (TryGetSlotEntity(uid, ev.Slot, out var entityUid) && TryComp<StorageComponent>(entityUid, out var storageComponent))
+ {
+ _storageSystem.OpenStorageUI(entityUid.Value, uid, storageComponent);
+ }
+ }
+
public bool TryGetSlotContainer(EntityUid uid, string slot, [NotNullWhen(true)] out ContainerSlot? containerSlot, [NotNullWhen(true)] out SlotDefinition? slotDefinition,
InventoryComponent? inventory = null, ContainerManagerComponent? containerComp = null)
{
using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Implants.Components;
+using Content.Shared.Input;
using Content.Shared.Interaction;
+using Content.Shared.Inventory;
using Content.Shared.Item;
using Content.Shared.Lock;
using Content.Shared.Materials;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
using Robust.Shared.GameStates;
+using Robust.Shared.Input.Binding;
using Robust.Shared.Map;
+using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Serialization;
[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] protected readonly SharedItemSystem ItemSystem = default!;
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
[Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!;
SubscribeLocalEvent<StorageComponent, GotReclaimedEvent>(OnReclaimed);
+ CommandBinds.Builder
+ .Bind(ContentKeyFunctions.OpenBackpack, InputCmdHandler.FromDelegate(HandleOpenBackpack))
+ .Bind(ContentKeyFunctions.OpenBelt, InputCmdHandler.FromDelegate(HandleOpenBelt))
+ .Register<SharedStorageSystem>();
+
UpdatePrototypeCache();
}
}
}
+ private void HandleOpenBackpack(ICommonSession? session)
+ {
+ HandleOpenSlotUI(session, "back");
+ }
+
+ private void HandleOpenBelt(ICommonSession? session)
+ {
+ HandleOpenSlotUI(session, "belt");
+ }
+
+ private void HandleOpenSlotUI(ICommonSession? session, string slot)
+ {
+ if (session is not { } playerSession)
+ return;
+
+ if (playerSession.AttachedEntity is not {Valid: true} playerEnt || !Exists(playerEnt))
+ return;
+
+ if (!_inventory.TryGetSlotEntity(playerEnt, slot, out var storageEnt))
+ return;
+
+ if (!ActionBlocker.CanInteract(playerEnt, storageEnt))
+ return;
+
+ OpenStorageUI(storageEnt.Value, playerEnt);
+ }
+
protected void ClearCantFillReasons()
{
#if DEBUG