Nullable grid Uid (#8798)

This commit is contained in:
Leon Friedrich
2022-06-20 12:14:35 +12:00
committed by GitHub
parent ef41cd5aa8
commit fa4c6f63f8
82 changed files with 318 additions and 242 deletions

View File

@@ -69,7 +69,11 @@ namespace Content.Server.Chemistry.Components
var xform = _entities.GetComponent<TransformComponent>(Owner);
var solSys = _systems.GetEntitySystem<SolutionContainerSystem>();
var grid = MapManager.GetGrid(xform.GridEntityId);
if (!_entities.TryGetComponent(xform.GridUid, out IMapGridComponent? gridComp))
return;
var grid = gridComp.Grid;
var origin = grid.TileIndicesFor(xform.Coordinates);
DebugTools.Assert(xform.Anchored, "Area effect entity prototypes must be anchored.");
@@ -141,14 +145,17 @@ namespace Content.Server.Chemistry.Components
/// with the other area effects from the inception.</param>
public void React(float averageExposures)
{
if (!EntitySystem.Get<SolutionContainerSystem>().TryGetSolution(Owner, SolutionName, out var solution))
if (!_entities.EntitySysManager.GetEntitySystem<SolutionContainerSystem>().TryGetSolution(Owner, SolutionName, out var solution))
return;
var chemistry = EntitySystem.Get<ReactiveSystem>();
var xform = _entities.GetComponent<TransformComponent>(Owner);
var mapGrid = MapManager.GetGrid(xform.GridEntityId);
if (!MapManager.TryGetGrid(xform.GridUid, out var mapGrid))
return;
var tile = mapGrid.GetTileRef(xform.Coordinates.ToVector2i(_entities, MapManager));
var lookup = EntitySystem.Get<EntityLookupSystem>();
var chemistry = _entities.EntitySysManager.GetEntitySystem<ReactiveSystem>();
var lookup = _entities.EntitySysManager.GetEntitySystem<EntityLookupSystem>();
var solutionFraction = 1 / Math.Floor(averageExposures);

View File

@@ -90,16 +90,17 @@ namespace Content.Server.Chemistry.EntitySystems
return;
var entity = vapor.Owner;
var xform = Transform(entity);
vapor.Timer += frameTime;
vapor.ReactTimer += frameTime;
if (vapor.ReactTimer >= ReactTime && EntityManager.GetComponent<TransformComponent>(vapor.Owner).GridEntityId.IsValid())
if (vapor.ReactTimer >= ReactTime && TryComp(xform.GridUid, out IMapGridComponent? gridComp))
{
vapor.ReactTimer = 0;
var mapGrid = _mapManager.GetGrid(EntityManager.GetComponent<TransformComponent>(entity).GridEntityId);
var tile = mapGrid.GetTileRef(EntityManager.GetComponent<TransformComponent>(entity).Coordinates.ToVector2i(EntityManager, _mapManager));
var tile = gridComp.Grid.GetTileRef(xform.Coordinates.ToVector2i(EntityManager, _mapManager));
foreach (var reagentQuantity in contents.Contents.ToArray())
{
if (reagentQuantity.Quantity == FixedPoint2.Zero) continue;
@@ -111,7 +112,7 @@ namespace Content.Server.Chemistry.EntitySystems
// Check if we've reached our target.
if (!vapor.Reached &&
vapor.Target.TryDistance(EntityManager, EntityManager.GetComponent<TransformComponent>(entity).Coordinates, out var distance) &&
vapor.Target.TryDistance(EntityManager, xform.Coordinates, out var distance) &&
distance <= 0.5f)
{
vapor.Reached = true;