public void CloseStorage(EntityUid uid, EntityStorageComponent?component = null) { if (!Resolve(uid, ref component)) { return; } component.Open = false; var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset); var entities = _lookup.GetEntitiesInRange(targetCoordinates, component.EnteringRange, LookupFlags.Approximate); var ev = new StorageBeforeCloseEvent(uid, entities); RaiseLocalEvent(uid, ev, true); var count = 0; foreach (var entity in ev.Contents) { if (!ev.BypassChecks.Contains(entity)) { if (!CanFit(entity, uid, component.Whitelist)) { continue; } } if (!AddToContents(entity, uid, component)) { continue; } count++; if (count >= component.Capacity) { break; } } ModifyComponents(uid, component); SoundSystem.Play(component.CloseSound.GetSound(), Filter.Pvs(uid), uid); component.LastInternalOpenAttempt = default; RaiseLocalEvent(uid, new StorageAfterCloseEvent()); }
private void OnBeforeClose(EntityUid uid, EntityStorageLayingDownOverrideComponent component, StorageBeforeCloseEvent args) { foreach (var ent in args.Contents) { if (HasComp <SharedBodyComponent>(ent) && !_standing.IsDown(ent)) { args.Contents.Remove(ent); } } }