Entity<T> overloads for some MapSystem methods.

GetTileRef, TileIndicesFor, and GetAnchoredEntities
This commit is contained in:
Pieter-Jan Briers
2024-09-02 05:36:11 +02:00
parent 44f9262d1a
commit c740026014
2 changed files with 41 additions and 0 deletions

View File

@@ -40,6 +40,7 @@ END TEMPLATE-->
### New features
* `MarkupNode` is now `IEquatable<MarkupNode>`. It already supported equality checks, now it implements the interface.
* Added `Entity<T>` overloads to the following `SharedMapSystem` methods: `GetTileRef`, `GetAnchoredEntities`, `TileIndicesFor`.
### Bugfixes

View File

@@ -707,16 +707,31 @@ public abstract partial class SharedMapSystem
#region TileAccess
public TileRef GetTileRef(Entity<MapGridComponent> grid, MapCoordinates coords)
{
return GetTileRef(grid.Owner, grid.Comp, coords);
}
public TileRef GetTileRef(EntityUid uid, MapGridComponent grid, MapCoordinates coords)
{
return GetTileRef(uid, grid, CoordinatesToTile(uid, grid, coords));
}
public TileRef GetTileRef(Entity<MapGridComponent> grid, EntityCoordinates coords)
{
return GetTileRef(grid.Owner, grid.Comp, coords);
}
public TileRef GetTileRef(EntityUid uid, MapGridComponent grid, EntityCoordinates coords)
{
return GetTileRef(uid, grid, CoordinatesToTile(uid, grid, coords));
}
public TileRef GetTileRef(Entity<MapGridComponent> grid, Vector2i tileCoordinates)
{
return GetTileRef(grid.Owner, grid.Comp, tileCoordinates);
}
public TileRef GetTileRef(EntityUid uid, MapGridComponent grid, Vector2i tileCoordinates)
{
var chunkIndices = GridTileToChunkIndices(uid, grid, tileCoordinates);
@@ -1089,16 +1104,31 @@ public abstract partial class SharedMapSystem
return chunk.GetSnapGrid((ushort)x, (ushort)y)?.Count ?? 0; // ?
}
public IEnumerable<EntityUid> GetAnchoredEntities(Entity<MapGridComponent> grid, MapCoordinates coords)
{
return GetAnchoredEntities(grid.Owner, grid.Comp, coords);
}
public IEnumerable<EntityUid> GetAnchoredEntities(EntityUid uid, MapGridComponent grid, MapCoordinates coords)
{
return GetAnchoredEntities(uid, grid, TileIndicesFor(uid, grid, coords));
}
public IEnumerable<EntityUid> GetAnchoredEntities(Entity<MapGridComponent> grid, EntityCoordinates coords)
{
return GetAnchoredEntities(grid.Owner, grid.Comp, coords);
}
public IEnumerable<EntityUid> GetAnchoredEntities(EntityUid uid, MapGridComponent grid, EntityCoordinates coords)
{
return GetAnchoredEntities(uid, grid, TileIndicesFor(uid, grid, coords));
}
public IEnumerable<EntityUid> GetAnchoredEntities(Entity<MapGridComponent> grid, Vector2i pos)
{
return GetAnchoredEntities(grid.Owner, grid.Comp, pos);
}
public IEnumerable<EntityUid> GetAnchoredEntities(EntityUid uid, MapGridComponent grid, Vector2i pos)
{
// Because some content stuff checks neighboring tiles (which may not actually exist) we won't just
@@ -1191,6 +1221,11 @@ public abstract partial class SharedMapSystem
return SnapGridLocalCellFor(uid, grid, LocalToGrid(uid, grid, coords));
}
public Vector2i TileIndicesFor(Entity<MapGridComponent> grid, EntityCoordinates coords)
{
return TileIndicesFor(grid.Owner, grid.Comp, coords);
}
public Vector2i TileIndicesFor(EntityUid uid, MapGridComponent grid, MapCoordinates worldPos)
{
#if DEBUG
@@ -1202,6 +1237,11 @@ public abstract partial class SharedMapSystem
return SnapGridLocalCellFor(uid, grid, localPos);
}
public Vector2i TileIndicesFor(Entity<MapGridComponent> grid, MapCoordinates coords)
{
return TileIndicesFor(grid.Owner, grid.Comp, coords);
}
private Vector2i SnapGridLocalCellFor(EntityUid uid, MapGridComponent grid, Vector2 localPos)
{
var x = (int)Math.Floor(localPos.X / grid.TileSize);