Remove default grids (content) (#2241)
* Default grids go poof * Address review * Update submodule * Fix DoAfterSystem for entities without grid. * Fix SubFloorHideSystem for entities without grid. * Fix ExplosionHelper for coordinates that aren't in a grid * Fix TurfHelpers' GetWorldTileBox crash in the case of invalid grid * Fix tile prying component crash when trying to pry space. * Spill fixes when passing coordinates without grids. * Are you static'in, son? * Change SaveLoadSaveTest grid Id hardcoded value It's still hardcoded, but at least now it's correct! * Only send debug AI thing if grid is not invalid * Update submodule. Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
This commit is contained in:
committed by
GitHub
parent
78507ac9a2
commit
48841a274d
@@ -8,6 +8,7 @@ using Content.Server.Atmos;
|
||||
using Content.Server.GameObjects.Components.Atmos.Piping;
|
||||
using Content.Server.GameObjects.Components.NodeContainer.NodeGroups;
|
||||
using Content.Server.GameObjects.EntitySystems;
|
||||
using Content.Server.GameObjects.EntitySystems.Atmos;
|
||||
using Content.Shared.Atmos;
|
||||
using Content.Shared.Maps;
|
||||
using Robust.Server.GameObjects.EntitySystems.TileLookup;
|
||||
@@ -39,6 +40,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
[Robust.Shared.IoC.Dependency] private IServerEntityManager _serverEntityManager = default!;
|
||||
|
||||
public GridTileLookupSystem GridTileLookupSystem { get; private set; } = default!;
|
||||
internal GasTileOverlaySystem GasTileOverlaySystem { get; private set; } = default!;
|
||||
public AtmosphereSystem AtmosphereSystem { get; private set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
@@ -173,10 +175,11 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
RepopulateTiles();
|
||||
|
||||
GridTileLookupSystem = EntitySystem.Get<GridTileLookupSystem>();
|
||||
GasTileOverlaySystem = EntitySystem.Get<GasTileOverlaySystem>();
|
||||
AtmosphereSystem = EntitySystem.Get<AtmosphereSystem>();
|
||||
|
||||
RepopulateTiles();
|
||||
}
|
||||
|
||||
public override void OnAdd()
|
||||
|
||||
@@ -66,8 +66,8 @@ namespace Content.Server.GameObjects.Components.Fluids
|
||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||
var serverEntityManager = IoCManager.Resolve<IServerEntityManager>();
|
||||
|
||||
var gridId = coordinates.GetGridId(entityManager);
|
||||
var mapGrid = mapManager.GetGrid(gridId);
|
||||
if (!mapManager.TryGetGrid(coordinates.GetGridId(entityManager), out var mapGrid))
|
||||
return null; // Let's not spill to space.
|
||||
|
||||
// If space return early, let that spill go out into the void
|
||||
var tileRef = mapGrid.GetTileRef(coordinates);
|
||||
@@ -78,13 +78,11 @@ namespace Content.Server.GameObjects.Components.Fluids
|
||||
|
||||
// Get normalized co-ordinate for spill location and spill it in the centre
|
||||
// TODO: Does SnapGrid or something else already do this?
|
||||
var spillTileMapGrid = mapManager.GetGrid(gridId);
|
||||
var spillTileRef = spillTileMapGrid.GetTileRef(coordinates).GridIndices;
|
||||
var spillGridCoords = spillTileMapGrid.GridTileToLocal(spillTileRef);
|
||||
var spillGridCoords = mapGrid.GridTileToLocal(tileRef.GridIndices);
|
||||
|
||||
var spilt = false;
|
||||
|
||||
foreach (var spillEntity in entityManager.GetEntitiesAt(spillTileMapGrid.ParentMapId, spillGridCoords.Position))
|
||||
foreach (var spillEntity in entityManager.GetEntitiesAt(mapGrid.ParentMapId, spillGridCoords.Position))
|
||||
{
|
||||
if (!spillEntity.TryGetComponent(out PuddleComponent? puddleComponent))
|
||||
{
|
||||
@@ -167,7 +165,9 @@ namespace Content.Server.GameObjects.Components.Fluids
|
||||
|
||||
// Get normalized co-ordinate for spill location and spill it in the centre
|
||||
// TODO: Does SnapGrid or something else already do this?
|
||||
var spillTileMapGrid = mapManager.GetGrid(gridId);
|
||||
if (!mapManager.TryGetGrid(gridId, out var spillTileMapGrid))
|
||||
return null; // Let's not spill to invalid grids.
|
||||
|
||||
var spillGridCoords = spillTileMapGrid.GridTileToLocal(tileRef.GridIndices);
|
||||
|
||||
var spilt = false;
|
||||
|
||||
@@ -36,7 +36,9 @@ namespace Content.Server.GameObjects.Components.Interactable
|
||||
if (!Owner.TryGetComponent<ToolComponent>(out var tool) && _toolComponentNeeded)
|
||||
return;
|
||||
|
||||
var mapGrid = _mapManager.GetGrid(clickLocation.GetGridId(Owner.EntityManager));
|
||||
if (!_mapManager.TryGetGrid(clickLocation.GetGridId(Owner.EntityManager), out var mapGrid))
|
||||
return;
|
||||
|
||||
var tile = mapGrid.GetTileRef(clickLocation);
|
||||
|
||||
var coordinates = mapGrid.GridTileToLocal(tile.GridIndices);
|
||||
|
||||
@@ -113,7 +113,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents
|
||||
|
||||
private void SetPowerTransferRange(int newPowerTransferRange)
|
||||
{
|
||||
foreach (var receiver in _linkedReceivers)
|
||||
foreach (var receiver in _linkedReceivers.ToArray())
|
||||
{
|
||||
receiver.ClearProvider();
|
||||
}
|
||||
|
||||
@@ -621,7 +621,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
|
||||
/// <param name="chunk"></param>
|
||||
private void GenerateRegions(PathfindingChunk chunk)
|
||||
{
|
||||
// Grid deleted while update queued.
|
||||
// Grid deleted while update queued, or invalid grid.
|
||||
if (!_mapManager.TryGetGrid(chunk.GridId, out _))
|
||||
{
|
||||
return;
|
||||
@@ -688,7 +688,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
|
||||
private void SendDebugMessage(PlayerAttachSystemMessage message)
|
||||
{
|
||||
var playerGrid = message.Entity.Transform.GridID;
|
||||
SendRegionsDebugMessage(playerGrid);
|
||||
if(playerGrid.IsValid())
|
||||
SendRegionsDebugMessage(playerGrid);
|
||||
}
|
||||
|
||||
private void SendRegionsDebugMessage(GridId gridId)
|
||||
|
||||
@@ -6,24 +6,20 @@ using System.Threading.Tasks;
|
||||
using Content.Server.GameObjects.Components;
|
||||
using Content.Shared.GameObjects.Components.Damage;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Server.Interfaces.Timing;
|
||||
using Robust.Shared.GameObjects.Systems;
|
||||
using Robust.Shared.IoC;
|
||||
|
||||
namespace Content.Server.GameObjects.EntitySystems.DoAfter
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public sealed class DoAfterSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPauseManager _pauseManager = default!;
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
foreach (var comp in ComponentManager.EntityQuery<DoAfterComponent>())
|
||||
{
|
||||
if (_pauseManager.IsGridPaused(comp.Owner.Transform.GridID)) continue;
|
||||
if (comp.Owner.Paused) continue;
|
||||
|
||||
var cancelled = new List<DoAfter>(0);
|
||||
var finished = new List<DoAfter>(0);
|
||||
|
||||
Reference in New Issue
Block a user