1
0

RequiresTileSystem.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Content.Shared.Tiles;
  2. using Robust.Shared.Map.Components;
  3. using Robust.Shared.Map.Enumerators;
  4. namespace Content.Server.Tiles;
  5. public sealed class RequiresTileSystem : EntitySystem
  6. {
  7. /*
  8. * Needs to be on server as client can't predict QueueDel.
  9. */
  10. [Dependency] private readonly SharedMapSystem _maps = default!;
  11. private EntityQuery<RequiresTileComponent> _tilesQuery;
  12. public override void Initialize()
  13. {
  14. base.Initialize();
  15. _tilesQuery = GetEntityQuery<RequiresTileComponent>();
  16. SubscribeLocalEvent<TileChangedEvent>(OnTileChange);
  17. }
  18. private void OnTileChange(ref TileChangedEvent ev)
  19. {
  20. if (!TryComp<MapGridComponent>(ev.Entity, out var grid))
  21. return;
  22. var anchored = _maps.GetAnchoredEntitiesEnumerator(ev.Entity, grid, ev.NewTile.GridIndices);
  23. if (anchored.Equals(AnchoredEntitiesEnumerator.Empty))
  24. return;
  25. while (anchored.MoveNext(out var ent))
  26. {
  27. if (!_tilesQuery.HasComponent(ent.Value))
  28. continue;
  29. QueueDel(ent.Value);
  30. }
  31. }
  32. }