Merge branch 'master' into 2020-08-19-firelocks

# Conflicts:
#	Content.Server/GameObjects/Components/Atmos/AirtightComponent.cs
This commit is contained in:
Víctor Aguilera Puerto
2020-09-06 16:56:43 +02:00
197 changed files with 846 additions and 670 deletions

View File

@@ -47,33 +47,36 @@ namespace Content.Shared.Maps
/// <summary>
/// Attempts to get the turf at a certain coordinates or null if no such turf is found.
/// </summary>
public static TileRef? GetTileRef(this GridCoordinates coordinates)
public static TileRef? GetTileRef(this EntityCoordinates coordinates, IEntityManager? entityManager = null, IMapManager? mapManager = null)
{
if (!coordinates.GridID.IsValid())
entityManager ??= IoCManager.Resolve<IEntityManager>();
if (!coordinates.IsValid(entityManager))
return null;
var mapManager = IoCManager.Resolve<IMapManager>();
mapManager ??= IoCManager.Resolve<IMapManager>();
if (!mapManager.TryGetGrid(coordinates.GridID, out var grid))
if (!mapManager.TryGetGrid(coordinates.GetGridId(entityManager), out var grid))
return null;
if (!grid.TryGetTileRef(coordinates.ToMapIndices(mapManager), out var tile))
if (!grid.TryGetTileRef(coordinates.ToMapIndices(entityManager, mapManager), out var tile))
return null;
return tile;
}
public static bool TryGetTileRef(this GridCoordinates coordinates, [NotNullWhen(true)] out TileRef? turf)
public static bool TryGetTileRef(this EntityCoordinates coordinates, [NotNullWhen(true)] out TileRef? turf)
{
return (turf = coordinates.GetTileRef()) != null;
}
public static bool PryTile(this GridCoordinates coordinates,
IMapManager? mapManager = null, ITileDefinitionManager? tileDefinitionManager = null, IEntityManager? entityManager = null)
public static bool PryTile(this EntityCoordinates coordinates, IEntityManager? entityManager = null,
IMapManager? mapManager = null)
{
entityManager ??= IoCManager.Resolve<IEntityManager>();
mapManager ??= IoCManager.Resolve<IMapManager>();
return coordinates.ToMapIndices(mapManager).PryTile(coordinates.GridID);
return coordinates.ToMapIndices(entityManager, mapManager).PryTile(coordinates.GetGridId(entityManager));
}
public static bool PryTile(this MapIndices indices, GridId gridId,
@@ -111,7 +114,7 @@ namespace Content.Shared.Maps
var half = mapGrid.TileSize / 2f;
//Actually spawn the relevant tile item at the right position and give it some random offset.
var tileItem = entityManager.SpawnEntity(tileDef.ItemDropPrototypeName, indices.ToGridCoordinates(mapManager, tileRef.GridIndex).Offset(new Vector2(half, half)));
var tileItem = entityManager.SpawnEntity(tileDef.ItemDropPrototypeName, indices.ToEntityCoordinates(mapManager, tileRef.GridIndex).Offset(new Vector2(half, half)));
tileItem.RandomOffset(0.25f);
return true;
}
@@ -176,9 +179,11 @@ namespace Content.Shared.Maps
return false;
}
public static GridCoordinates GridPosition(this TileRef turf)
public static EntityCoordinates GridPosition(this TileRef turf, IMapManager? mapManager = null)
{
return new GridCoordinates(turf.X, turf.Y, turf.GridIndex);
mapManager ??= IoCManager.Resolve<IMapManager>();
return turf.GridIndices.ToEntityCoordinates(mapManager, turf.GridIndex);
}
/// <summary>