Removes obsolete uses of IMapManager events. (#7036)
This commit is contained in:
@@ -14,7 +14,6 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
internal sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem
|
internal sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
|
||||||
|
|
||||||
private readonly Dictionary<GridId, AtmosDebugOverlayMessage> _tileData =
|
private readonly Dictionary<GridId, AtmosDebugOverlayMessage> _tileData =
|
||||||
new();
|
new();
|
||||||
@@ -40,13 +39,21 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
SubscribeNetworkEvent<AtmosDebugOverlayMessage>(HandleAtmosDebugOverlayMessage);
|
SubscribeNetworkEvent<AtmosDebugOverlayMessage>(HandleAtmosDebugOverlayMessage);
|
||||||
SubscribeNetworkEvent<AtmosDebugOverlayDisableMessage>(HandleAtmosDebugOverlayDisableMessage);
|
SubscribeNetworkEvent<AtmosDebugOverlayDisableMessage>(HandleAtmosDebugOverlayDisableMessage);
|
||||||
|
|
||||||
_mapManager.OnGridRemoved += OnGridRemoved;
|
SubscribeLocalEvent<GridRemovalEvent>(OnGridRemoved);
|
||||||
|
|
||||||
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
||||||
if(!overlayManager.HasOverlay<AtmosDebugOverlay>())
|
if(!overlayManager.HasOverlay<AtmosDebugOverlay>())
|
||||||
overlayManager.AddOverlay(new AtmosDebugOverlay());
|
overlayManager.AddOverlay(new AtmosDebugOverlay());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnGridRemoved(GridRemovalEvent ev)
|
||||||
|
{
|
||||||
|
if (_tileData.ContainsKey(ev.GridId))
|
||||||
|
{
|
||||||
|
_tileData.Remove(ev.GridId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void HandleAtmosDebugOverlayMessage(AtmosDebugOverlayMessage message)
|
private void HandleAtmosDebugOverlayMessage(AtmosDebugOverlayMessage message)
|
||||||
{
|
{
|
||||||
_tileData[message.GridId] = message;
|
_tileData[message.GridId] = message;
|
||||||
@@ -60,7 +67,6 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
base.Shutdown();
|
base.Shutdown();
|
||||||
_mapManager.OnGridRemoved -= OnGridRemoved;
|
|
||||||
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
||||||
if (overlayManager.HasOverlay<AtmosDebugOverlay>())
|
if (overlayManager.HasOverlay<AtmosDebugOverlay>())
|
||||||
overlayManager.RemoveOverlay<AtmosDebugOverlay>();
|
overlayManager.RemoveOverlay<AtmosDebugOverlay>();
|
||||||
@@ -71,14 +77,6 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
_tileData.Clear();
|
_tileData.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGridRemoved(MapId mapId, GridId gridId)
|
|
||||||
{
|
|
||||||
if (_tileData.ContainsKey(gridId))
|
|
||||||
{
|
|
||||||
_tileData.Remove(gridId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HasData(GridId gridId)
|
public bool HasData(GridId gridId)
|
||||||
{
|
{
|
||||||
return _tileData.ContainsKey(gridId);
|
return _tileData.ContainsKey(gridId);
|
||||||
@@ -93,7 +91,7 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
if (relative.X < 0 || relative.Y < 0 || relative.X >= LocalViewRange || relative.Y >= LocalViewRange)
|
if (relative.X < 0 || relative.Y < 0 || relative.X >= LocalViewRange || relative.Y >= LocalViewRange)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return srcMsg.OverlayData[relative.X + (relative.Y * LocalViewRange)];
|
return srcMsg.OverlayData[relative.X + relative.Y * LocalViewRange];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
internal sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem
|
internal sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
|
||||||
[Dependency] private readonly IResourceCache _resourceCache = default!;
|
[Dependency] private readonly IResourceCache _resourceCache = default!;
|
||||||
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
|
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
SubscribeNetworkEvent<GasOverlayMessage>(HandleGasOverlayMessage);
|
SubscribeNetworkEvent<GasOverlayMessage>(HandleGasOverlayMessage);
|
||||||
_mapManager.OnGridRemoved += OnGridRemoved;
|
SubscribeLocalEvent<GridRemovalEvent>(OnGridRemoved);
|
||||||
|
|
||||||
for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++)
|
for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++)
|
||||||
{
|
{
|
||||||
@@ -118,17 +117,16 @@ namespace Content.Client.Atmos.EntitySystems
|
|||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
base.Shutdown();
|
base.Shutdown();
|
||||||
_mapManager.OnGridRemoved -= OnGridRemoved;
|
|
||||||
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
var overlayManager = IoCManager.Resolve<IOverlayManager>();
|
||||||
overlayManager.RemoveOverlay<GasTileOverlay>();
|
overlayManager.RemoveOverlay<GasTileOverlay>();
|
||||||
overlayManager.RemoveOverlay<FireTileOverlay>();
|
overlayManager.RemoveOverlay<FireTileOverlay>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGridRemoved(MapId mapId, GridId gridId)
|
private void OnGridRemoved(GridRemovalEvent ev)
|
||||||
{
|
{
|
||||||
if (_tileData.ContainsKey(gridId))
|
if (_tileData.ContainsKey(ev.GridId))
|
||||||
{
|
{
|
||||||
_tileData.Remove(gridId);
|
_tileData.Remove(ev.GridId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,11 +83,11 @@ namespace Content.Server.AI.Pathfinding.Accessible
|
|||||||
{
|
{
|
||||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
||||||
SubscribeLocalEvent<PathfindingChunkUpdateMessage>(RecalculateNodeRegions);
|
SubscribeLocalEvent<PathfindingChunkUpdateMessage>(RecalculateNodeRegions);
|
||||||
|
SubscribeLocalEvent<GridRemovalEvent>(GridRemoved);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
SubscribeNetworkEvent<SharedAiDebug.SubscribeReachableMessage>(HandleSubscription);
|
SubscribeNetworkEvent<SharedAiDebug.SubscribeReachableMessage>(HandleSubscription);
|
||||||
SubscribeNetworkEvent<SharedAiDebug.UnsubscribeReachableMessage>(HandleUnsubscription);
|
SubscribeNetworkEvent<SharedAiDebug.UnsubscribeReachableMessage>(HandleUnsubscription);
|
||||||
#endif
|
#endif
|
||||||
_mapManager.OnGridRemoved += GridRemoved;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
@@ -99,12 +99,11 @@ namespace Content.Server.AI.Pathfinding.Accessible
|
|||||||
_cachedAccessible.Clear();
|
_cachedAccessible.Clear();
|
||||||
_queuedCacheDeletions.Clear();
|
_queuedCacheDeletions.Clear();
|
||||||
|
|
||||||
_mapManager.OnGridRemoved -= GridRemoved;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GridRemoved(MapId mapId, GridId gridId)
|
private void GridRemoved(GridRemovalEvent ev)
|
||||||
{
|
{
|
||||||
_regions.Remove(gridId);
|
_regions.Remove(ev.GridId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
|
|||||||
@@ -206,21 +206,13 @@ namespace Content.Server.AI.Pathfinding
|
|||||||
SubscribeLocalEvent<CollisionChangeMessage>(QueueCollisionChangeMessage);
|
SubscribeLocalEvent<CollisionChangeMessage>(QueueCollisionChangeMessage);
|
||||||
SubscribeLocalEvent<MoveEvent>(QueueMoveEvent);
|
SubscribeLocalEvent<MoveEvent>(QueueMoveEvent);
|
||||||
SubscribeLocalEvent<AccessReaderChangeMessage>(QueueAccessChangeMessage);
|
SubscribeLocalEvent<AccessReaderChangeMessage>(QueueAccessChangeMessage);
|
||||||
|
SubscribeLocalEvent<GridRemovalEvent>(HandleGridRemoval);
|
||||||
|
SubscribeLocalEvent<GridModifiedEvent>(QueueGridChange);
|
||||||
|
SubscribeLocalEvent<TileChangedEvent>(QueueTileChange);
|
||||||
|
|
||||||
// Handle all the base grid changes
|
// Handle all the base grid changes
|
||||||
// Anything that affects traversal (i.e. collision layer) is handled separately.
|
// Anything that affects traversal (i.e. collision layer) is handled separately.
|
||||||
_mapManager.OnGridRemoved += HandleGridRemoval;
|
|
||||||
_mapManager.GridChanged += QueueGridChange;
|
|
||||||
_mapManager.TileChanged += QueueTileChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Shutdown()
|
|
||||||
{
|
|
||||||
base.Shutdown();
|
|
||||||
|
|
||||||
_mapManager.OnGridRemoved -= HandleGridRemoval;
|
|
||||||
_mapManager.GridChanged -= QueueGridChange;
|
|
||||||
_mapManager.TileChanged -= QueueTileChange;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleTileUpdate(TileRef tile)
|
private void HandleTileUpdate(TileRef tile)
|
||||||
@@ -231,25 +223,25 @@ namespace Content.Server.AI.Pathfinding
|
|||||||
node.UpdateTile(tile);
|
node.UpdateTile(tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleGridRemoval(MapId mapId, GridId gridId)
|
private void HandleGridRemoval(GridRemovalEvent ev)
|
||||||
{
|
{
|
||||||
if (_graph.ContainsKey(gridId))
|
if (_graph.ContainsKey(ev.GridId))
|
||||||
{
|
{
|
||||||
_graph.Remove(gridId);
|
_graph.Remove(ev.GridId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void QueueGridChange(object? sender, GridChangedEventArgs eventArgs)
|
private void QueueGridChange(GridModifiedEvent ev)
|
||||||
{
|
{
|
||||||
foreach (var (position, _) in eventArgs.Modified)
|
foreach (var (position, _) in ev.Modified)
|
||||||
{
|
{
|
||||||
_tileUpdateQueue.Enqueue(eventArgs.Grid.GetTileRef(position));
|
_tileUpdateQueue.Enqueue(ev.Grid.GetTileRef(position));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void QueueTileChange(object? sender, TileChangedEventArgs eventArgs)
|
private void QueueTileChange(TileChangedEvent ev)
|
||||||
{
|
{
|
||||||
_tileUpdateQueue.Enqueue(eventArgs.NewTile);
|
_tileUpdateQueue.Enqueue(ev.NewTile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void QueueAccessChangeMessage(AccessReaderChangeMessage message)
|
private void QueueAccessChangeMessage(AccessReaderChangeMessage message)
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
[Dependency] private readonly SharedContainerSystem _containers = default!;
|
[Dependency] private readonly SharedContainerSystem _containers = default!;
|
||||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||||
|
|
||||||
|
|
||||||
private const float ExposedUpdateDelay = 1f;
|
private const float ExposedUpdateDelay = 1f;
|
||||||
private float _exposedTimer = 0f;
|
private float _exposedTimer = 0f;
|
||||||
|
|
||||||
@@ -34,35 +35,30 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
InitializeCVars();
|
InitializeCVars();
|
||||||
InitializeGrid();
|
InitializeGrid();
|
||||||
|
|
||||||
#region Events
|
|
||||||
|
|
||||||
// Map events.
|
SubscribeLocalEvent<TileChangedEvent>(OnTileChanged);
|
||||||
_mapManager.TileChanged += OnTileChanged;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Shutdown()
|
public override void Shutdown()
|
||||||
{
|
{
|
||||||
base.Shutdown();
|
base.Shutdown();
|
||||||
|
|
||||||
_mapManager.TileChanged -= OnTileChanged;
|
|
||||||
|
|
||||||
ShutdownCommands();
|
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
|
// 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
|
// 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
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
InvalidateTile(eventArgs.NewTile.GridIndex, eventArgs.NewTile.GridIndices);
|
InvalidateTile(ev.NewTile.GridIndex, ev.NewTile.GridIndices);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Content.Server.Atmos.Components;
|
using Content.Server.Atmos.Components;
|
||||||
using Content.Server.Shuttles.EntitySystems;
|
using Content.Server.Shuttles.EntitySystems;
|
||||||
using Content.Shared.Maps;
|
using Content.Shared.Maps;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
@@ -17,26 +17,21 @@ public sealed class AutomaticAtmosSystem : EntitySystem
|
|||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.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.
|
// Only if a atmos-holding tile has been added or removed.
|
||||||
// Also, these calls are surprisingly slow.
|
// Also, these calls are surprisingly slow.
|
||||||
// TODO: Make tiledefmanager cache the IsSpace property, and turn this lookup-through-two-interfaces into
|
// 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.
|
// 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)) ||
|
if (!((ev.OldTile.IsSpace(_tileDefinitionManager) && !ev.NewTile.IsSpace(_tileDefinitionManager)) ||
|
||||||
(!e.OldTile.IsSpace(_tileDefinitionManager) && e.NewTile.IsSpace(_tileDefinitionManager))))
|
(!ev.OldTile.IsSpace(_tileDefinitionManager) && ev.NewTile.IsSpace(_tileDefinitionManager))))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var uid = _mapManager.GetGridEuid(e.NewTile.GridIndex);
|
var uid = _mapManager.GetGridEuid(ev.NewTile.GridIndex);
|
||||||
if (!TryComp<PhysicsComponent>(uid, out var physics))
|
if (!TryComp<PhysicsComponent>(uid, out var physics))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
@@ -65,9 +65,9 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
||||||
|
SubscribeLocalEvent<GridRemovalEvent>(OnGridRemoved);
|
||||||
|
|
||||||
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
||||||
_mapManager.OnGridRemoved += OnGridRemoved;
|
|
||||||
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
||||||
configManager.OnValueChanged(CCVars.NetGasOverlayTickRate, value => _updateCooldown = value > 0.0f ? 1 / value : float.MaxValue, true);
|
configManager.OnValueChanged(CCVars.NetGasOverlayTickRate, value => _updateCooldown = value > 0.0f ? 1 / value : float.MaxValue, true);
|
||||||
configManager.OnValueChanged(CVars.NetMaxUpdateRange, value => _updateRange = value + RangeOffset, true);
|
configManager.OnValueChanged(CVars.NetMaxUpdateRange, value => _updateRange = value + RangeOffset, true);
|
||||||
@@ -78,7 +78,6 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
{
|
{
|
||||||
base.Shutdown();
|
base.Shutdown();
|
||||||
_playerManager.PlayerStatusChanged -= OnPlayerStatusChanged;
|
_playerManager.PlayerStatusChanged -= OnPlayerStatusChanged;
|
||||||
_mapManager.OnGridRemoved -= OnGridRemoved;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
@@ -112,11 +111,11 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
return chunk;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user