// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
using Content.Shared.Storage;
using Content.Shared.Storage.EntitySystems;
namespace Content.Shared._Goobstation.Factory.Slots;
///
/// Abstraction over a grid inventory.
///
public sealed partial class AutomatedStorage : AutomationSlot
{
private SharedStorageSystem _storage;
private StorageComponent _comp;
public override void Initialize()
{
base.Initialize();
_storage = EntMan.System();
_comp = EntMan.GetComponent(Owner);
}
public override bool Insert(EntityUid item)
{
return base.Insert(item) &&
_storage.Insert(Owner, item, out _, storageComp: _comp);
}
public override bool CanInsert(EntityUid item)
{
return base.CanInsert(item) &&
_storage.CanInsert(Owner, item, out _, storageComp: _comp);
}
public override EntityUid? GetItem(EntityUid? filter)
{
foreach (var item in _comp.Container.ContainedEntities)
{
if (_filter.IsAllowed(filter, item))
return item;
}
return null;
}
}