From 8e67bfe9907ac2fb3e0145b8f972c35e9f983175 Mon Sep 17 00:00:00 2001 From: Acruid Date: Thu, 26 May 2022 17:17:05 -0700 Subject: [PATCH] Backwards compatible API additions to support removing GridId from content. (#2855) --- .../Components/Transform/TransformComponent.cs | 1 + Robust.Shared/Map/EntityCoordinates.cs | 11 +++++++++++ Robust.Shared/Map/IMapManager.cs | 1 + Robust.Shared/Map/MapManager.GridCollection.cs | 7 +++++++ Robust.Shared/Map/MapManager.Pause.cs | 11 +++++++++++ Robust.Shared/Timing/IPauseManager.cs | 4 ++++ 6 files changed, 35 insertions(+) diff --git a/Robust.Shared/GameObjects/Components/Transform/TransformComponent.cs b/Robust.Shared/GameObjects/Components/Transform/TransformComponent.cs index 5e14e8653..dc70fad14 100644 --- a/Robust.Shared/GameObjects/Components/Transform/TransformComponent.cs +++ b/Robust.Shared/GameObjects/Components/Transform/TransformComponent.cs @@ -95,6 +95,7 @@ namespace Robust.Shared.GameObjects // TODO: Cache this. public EntityUid? GridUid => _mapManager.TryGetGrid(_gridId, out var mapGrid) ? mapGrid.GridEntityId : null; + public EntityUid GridEntityId => _mapManager.TryGetGrid(_gridId, out var mapGrid) ? mapGrid.GridEntityId : EntityUid.Invalid; /// /// Disables or enables to ability to locally rotate the entity. When set it removes any local rotation. diff --git a/Robust.Shared/Map/EntityCoordinates.cs b/Robust.Shared/Map/EntityCoordinates.cs index b8deafd76..504f28d5a 100644 --- a/Robust.Shared/Map/EntityCoordinates.cs +++ b/Robust.Shared/Map/EntityCoordinates.cs @@ -225,6 +225,17 @@ namespace Robust.Shared.Map return !IsValid(entityManager) ? null : entityManager.GetComponent(EntityId).GridUid; } + /// + /// Returns the Grid EntityUid these coordinates are on. + /// If none of the ancestors are a grid, returns null instead. + /// + /// + /// Grid EntityUid this entity is on or null + public EntityUid GetGridEntityId(IEntityManager entityManager) + { + return !IsValid(entityManager) ? EntityUid.Invalid : entityManager.GetComponent(EntityId).GridEntityId; + } + /// /// Returns the Map Id these coordinates are on. /// If the relative entity is not valid, returns instead. diff --git a/Robust.Shared/Map/IMapManager.cs b/Robust.Shared/Map/IMapManager.cs index 89a6f0f19..cdb79e5e3 100644 --- a/Robust.Shared/Map/IMapManager.cs +++ b/Robust.Shared/Map/IMapManager.cs @@ -92,6 +92,7 @@ namespace Robust.Shared.Map IMapGrid CreateGrid(MapId currentMapId, GridId? gridId = null, ushort chunkSize = 16); IMapGrid GetGrid(GridId gridId); + IMapGrid GetGrid(EntityUid gridId); bool TryGetGrid(GridId gridId, [NotNullWhen(true)] out IMapGrid? grid); bool GridExists(GridId gridId); IEnumerable GetAllMapGrids(MapId mapId); diff --git a/Robust.Shared/Map/MapManager.GridCollection.cs b/Robust.Shared/Map/MapManager.GridCollection.cs index 9a0dce6a6..92b347d27 100644 --- a/Robust.Shared/Map/MapManager.GridCollection.cs +++ b/Robust.Shared/Map/MapManager.GridCollection.cs @@ -145,6 +145,13 @@ internal partial class MapManager return GetGridComp(euid).Grid; } + public IMapGrid GetGrid(EntityUid gridId) + { + DebugTools.Assert(gridId.IsValid()); + + return GetGridComp(gridId).Grid; + } + public bool IsGrid(EntityUid uid) { return EntityManager.HasComponent(uid); diff --git a/Robust.Shared/Map/MapManager.Pause.cs b/Robust.Shared/Map/MapManager.Pause.cs index adb691023..a4214cc24 100644 --- a/Robust.Shared/Map/MapManager.Pause.cs +++ b/Robust.Shared/Map/MapManager.Pause.cs @@ -188,6 +188,17 @@ namespace Robust.Shared.Map return true; } + public bool IsGridPaused(EntityUid gridId) + { + if (TryGetGrid(gridId, out var grid)) + { + return IsGridPaused(grid); + } + + Logger.ErrorS("map", $"Tried to check if unknown grid {gridId} was paused."); + return true; + } + /// public bool IsMapInitialized(MapId mapId) { diff --git a/Robust.Shared/Timing/IPauseManager.cs b/Robust.Shared/Timing/IPauseManager.cs index b8a13491b..d4de1d949 100644 --- a/Robust.Shared/Timing/IPauseManager.cs +++ b/Robust.Shared/Timing/IPauseManager.cs @@ -1,5 +1,6 @@ using System; using JetBrains.Annotations; +using Robust.Shared.GameObjects; using Robust.Shared.Map; namespace Robust.Shared.Timing @@ -27,6 +28,9 @@ namespace Robust.Shared.Timing [Pure] bool IsGridPaused(GridId gridId); + + [Pure] + bool IsGridPaused(EntityUid gridId); [Pure] bool IsMapInitialized(MapId mapId);