Files
crystall-punk-14/Content.Server/Tiles/RequiresTileSystem.cs

43 lines
1.1 KiB
C#
Raw Normal View History

using Content.Shared.Tiles;
2023-01-18 05:28:37 +11:00
using Robust.Shared.Map.Components;
using Robust.Shared.Map.Enumerators;
namespace Content.Server.Tiles;
2023-01-18 05:28:37 +11:00
public sealed class RequiresTileSystem : EntitySystem
{
/*
* Needs to be on server as client can't predict QueueDel.
*/
[Dependency] private readonly SharedMapSystem _maps = default!;
private EntityQuery<RequiresTileComponent> _tilesQuery;
2023-01-18 05:28:37 +11:00
public override void Initialize()
{
base.Initialize();
_tilesQuery = GetEntityQuery<RequiresTileComponent>();
2023-01-18 05:28:37 +11:00
SubscribeLocalEvent<TileChangedEvent>(OnTileChange);
}
private void OnTileChange(ref TileChangedEvent ev)
{
if (!TryComp<MapGridComponent>(ev.Entity, out var grid))
return;
foreach (var change in ev.Changes)
2023-01-18 05:28:37 +11:00
{
var anchored = _maps.GetAnchoredEntitiesEnumerator(ev.Entity, grid, change.GridIndices);
while (anchored.MoveNext(out var ent))
{
if (!_tilesQuery.HasComponent(ent.Value))
continue;
2023-01-18 05:28:37 +11:00
QueueDel(ent.Value);
}
2023-01-18 05:28:37 +11:00
}
}
}