2021-12-30 22:56:10 +01:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using Content.Shared.Acts;
|
|
|
|
|
|
using Robust.Shared.GameObjects;
|
|
|
|
|
|
using Robust.Shared.IoC;
|
|
|
|
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
|
|
|
|
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Content.Shared.Inventory;
|
|
|
|
|
|
|
2022-02-16 00:23:23 -07:00
|
|
|
|
public abstract class InventoryComponent : Component, IExAct
|
2021-12-30 22:56:10 +01:00
|
|
|
|
{
|
|
|
|
|
|
[Dependency] private readonly IEntityManager _entityManager = default!;
|
|
|
|
|
|
|
|
|
|
|
|
[DataField("templateId", required: true,
|
|
|
|
|
|
customTypeSerializer: typeof(PrototypeIdSerializer<InventoryTemplatePrototype>))]
|
|
|
|
|
|
public string TemplateId { get; } = "human";
|
|
|
|
|
|
|
|
|
|
|
|
void IExAct.OnExplosion(ExplosionEventArgs eventArgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (eventArgs.Severity < ExplosionSeverity.Heavy)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (EntitySystem.Get<InventorySystem>()
|
|
|
|
|
|
.TryGetContainerSlotEnumerator(Owner, out var enumerator, this))
|
|
|
|
|
|
{
|
|
|
|
|
|
while (enumerator.MoveNext(out var container))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!container.ContainedEntity.HasValue) continue;
|
|
|
|
|
|
foreach (var exAct in _entityManager.GetComponents<IExAct>(container.ContainedEntity.Value).ToArray())
|
|
|
|
|
|
{
|
|
|
|
|
|
exAct.OnExplosion(eventArgs);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|