diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 57c2e0a4f..454c99511 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -40,6 +40,7 @@ END TEMPLATE--> ### New features * `MarkupNode` is now `IEquatable`. It already supported equality checks, now it implements the interface. +* Added `Entity` overloads to the following `SharedMapSystem` methods: `GetTileRef`, `GetAnchoredEntities`, `TileIndicesFor`. ### Bugfixes diff --git a/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs b/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs index 5b0294eff..47a750f05 100644 --- a/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs +++ b/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs @@ -707,16 +707,31 @@ public abstract partial class SharedMapSystem #region TileAccess + public TileRef GetTileRef(Entity 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 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 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 GetAnchoredEntities(Entity grid, MapCoordinates coords) + { + return GetAnchoredEntities(grid.Owner, grid.Comp, coords); + } + public IEnumerable GetAnchoredEntities(EntityUid uid, MapGridComponent grid, MapCoordinates coords) { return GetAnchoredEntities(uid, grid, TileIndicesFor(uid, grid, coords)); } + public IEnumerable GetAnchoredEntities(Entity grid, EntityCoordinates coords) + { + return GetAnchoredEntities(grid.Owner, grid.Comp, coords); + } + public IEnumerable GetAnchoredEntities(EntityUid uid, MapGridComponent grid, EntityCoordinates coords) { return GetAnchoredEntities(uid, grid, TileIndicesFor(uid, grid, coords)); } + public IEnumerable GetAnchoredEntities(Entity grid, Vector2i pos) + { + return GetAnchoredEntities(grid.Owner, grid.Comp, pos); + } + public IEnumerable 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 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 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);