Removes obsolete uses of IMapManager events. (#7036)

This commit is contained in:
ScalyChimp
2022-03-09 07:39:03 +01:00
committed by GitHub
parent df858100af
commit d691161542
7 changed files with 45 additions and 68 deletions

View File

@@ -20,6 +20,7 @@ namespace Content.Server.Atmos.EntitySystems
[Dependency] private readonly SharedContainerSystem _containers = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
private const float ExposedUpdateDelay = 1f;
private float _exposedTimer = 0f;
@@ -34,35 +35,30 @@ namespace Content.Server.Atmos.EntitySystems
InitializeCVars();
InitializeGrid();
#region Events
// Map events.
_mapManager.TileChanged += OnTileChanged;
SubscribeLocalEvent<TileChangedEvent>(OnTileChanged);
#endregion
}
public override void Shutdown()
{
base.Shutdown();
_mapManager.TileChanged -= OnTileChanged;
ShutdownCommands();
}
private void OnTileChanged(object? sender, TileChangedEventArgs eventArgs)
private void OnTileChanged(TileChangedEvent ev)
{
// When a tile changes, we want to update it only if it's gone from
// space -> not space or vice versa. So if the old tile is the
// same as the new tile in terms of space-ness, ignore the change
if (eventArgs.NewTile.IsSpace() == eventArgs.OldTile.IsSpace())
if (ev.NewTile.IsSpace(_tileDefinitionManager) == ev.OldTile.IsSpace(_tileDefinitionManager))
{
return;
}
InvalidateTile(eventArgs.NewTile.GridIndex, eventArgs.NewTile.GridIndices);
InvalidateTile(ev.NewTile.GridIndex, ev.NewTile.GridIndices);
}
public override void Update(float frameTime)

View File

@@ -1,4 +1,4 @@
using Content.Server.Atmos.Components;
using Content.Server.Atmos.Components;
using Content.Server.Shuttles.EntitySystems;
using Content.Shared.Maps;
using Robust.Shared.Map;
@@ -17,26 +17,21 @@ public sealed class AutomaticAtmosSystem : EntitySystem
public override void Initialize()
{
base.Initialize();
_mapManager.TileChanged += MapManagerOnTileChanged;
SubscribeLocalEvent<TileChangedEvent>(OnTileChanged);
}
public override void Shutdown()
{
base.Shutdown();
_mapManager.TileChanged -= MapManagerOnTileChanged;
}
private void MapManagerOnTileChanged(object? sender, TileChangedEventArgs e)
private void OnTileChanged(TileChangedEvent ev)
{
// Only if a atmos-holding tile has been added or removed.
// Also, these calls are surprisingly slow.
// TODO: Make tiledefmanager cache the IsSpace property, and turn this lookup-through-two-interfaces into
// TODO: a simple array lookup, as tile IDs are likely contiguous, and there's at most 2^16 possibilities anyway.
if (!((e.OldTile.IsSpace(_tileDefinitionManager) && !e.NewTile.IsSpace(_tileDefinitionManager)) ||
(!e.OldTile.IsSpace(_tileDefinitionManager) && e.NewTile.IsSpace(_tileDefinitionManager))))
if (!((ev.OldTile.IsSpace(_tileDefinitionManager) && !ev.NewTile.IsSpace(_tileDefinitionManager)) ||
(!ev.OldTile.IsSpace(_tileDefinitionManager) && ev.NewTile.IsSpace(_tileDefinitionManager))))
return;
var uid = _mapManager.GetGridEuid(e.NewTile.GridIndex);
var uid = _mapManager.GetGridEuid(ev.NewTile.GridIndex);
if (!TryComp<PhysicsComponent>(uid, out var physics))
return;

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
@@ -65,9 +65,9 @@ namespace Content.Server.Atmos.EntitySystems
base.Initialize();
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
SubscribeLocalEvent<GridRemovalEvent>(OnGridRemoved);
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
_mapManager.OnGridRemoved += OnGridRemoved;
var configManager = IoCManager.Resolve<IConfigurationManager>();
configManager.OnValueChanged(CCVars.NetGasOverlayTickRate, value => _updateCooldown = value > 0.0f ? 1 / value : float.MaxValue, true);
configManager.OnValueChanged(CVars.NetMaxUpdateRange, value => _updateRange = value + RangeOffset, true);
@@ -78,7 +78,6 @@ namespace Content.Server.Atmos.EntitySystems
{
base.Shutdown();
_playerManager.PlayerStatusChanged -= OnPlayerStatusChanged;
_mapManager.OnGridRemoved -= OnGridRemoved;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -112,11 +111,11 @@ namespace Content.Server.Atmos.EntitySystems
return chunk;
}
private void OnGridRemoved(MapId mapId, GridId gridId)
private void OnGridRemoved(GridRemovalEvent ev)
{
if (_overlay.ContainsKey(gridId))
if (_overlay.ContainsKey(ev.GridId))
{
_overlay.Remove(gridId);
_overlay.Remove(ev.GridId);
}
}