using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
using Robust.Shared.Timing;
namespace Robust.Shared.Map
{
///
internal interface IMapManagerInternal : IMapManager
{
IGameTiming GameTiming { get; }
IEntityManager EntityManager { get; }
void OnComponentRemoved(MapGridComponent comp);
void ChunkRemoved(GridId gridId, MapChunk chunk);
///
/// Specific version of TryFindGridAt that allows re-usable data structures to be passed in for optimisation reasons.
///
bool TryFindGridAt(
MapId mapId,
Vector2 worldPos,
List grids,
EntityQuery xformQuery,
EntityQuery bodyQuery,
[NotNullWhen(true)] out IMapGrid? grid);
///
/// Specific version of FindGridsIntersecting that allows re-usable data structures to be passed in for optimisation reasons.
///
IEnumerable FindGridsIntersecting(
MapId mapId,
Box2 worldAabb,
List grids,
EntityQuery xformQuery,
EntityQuery physicsQuery,
bool approx = false);
///
/// Raises the OnTileChanged event.
///
/// A reference to the new tile.
/// The old tile that got replaced.
void RaiseOnTileChanged(TileRef tileRef, Tile oldTile);
bool TryGetGridComp(GridId id, [MaybeNullWhen(false)]out IMapGridComponent comp);
bool TryGetGridEuid(GridId id, [MaybeNullWhen(false)]out EntityUid euid);
void TrueGridDelete(MapGrid grid);
void TrueDeleteMap(MapId mapId);
GridId GenerateGridId(GridId? forcedGridId);
void OnGridAllocated(MapGridComponent gridComponent, MapGrid mapGrid);
}
}