using Content.Shared.DeltaV.Salvage.Components; using Content.Shared.Storage; using Content.Shared.Interaction; using Content.Shared.Materials; using Robust.Shared.Timing; namespace Content.Shared._Lavaland.OreBag; public sealed class OreBagSystem : EntitySystem { [Dependency] private readonly SharedMaterialStorageSystem _materialStorage = default!; [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { SubscribeLocalEvent(OnAfterInteract); } private void OnAfterInteract(EntityUid uid, OreBagComponent component, AfterInteractEvent args) { if (!args.CanReach || args.Target == null || !HasComp(args.Target) || !_timing.IsFirstTimePredicted) return; if (!TryComp(uid, out var storage)) return; var validEntities = new List(); foreach (var entity in storage.Container.ContainedEntities) if (HasComp(entity)) validEntities.Add(entity); foreach (var entity in validEntities) _materialStorage.TryInsertMaterialEntity(args.User, entity, args.Target.Value); } }