From d69116154226ad033ecc7fd0cb76be383ac4caa4 Mon Sep 17 00:00:00 2001 From: ScalyChimp <72841710+scaly-chimp@users.noreply.github.com> Date: Wed, 9 Mar 2022 07:39:03 +0100 Subject: [PATCH] Removes obsolete uses of IMapManager events. (#7036) --- .../EntitySystems/AtmosDebugOverlaySystem.cs | 22 ++++++------- .../EntitySystems/GasTileOverlaySystem.cs | 10 +++--- .../Accessible/AiReachableSystem.cs | 7 ++-- .../AI/Pathfinding/PathfindingSystem.cs | 32 +++++++------------ .../Atmos/EntitySystems/AtmosphereSystem.cs | 14 +++----- .../EntitySystems/AutomaticAtmosSystem.cs | 17 ++++------ .../EntitySystems/GasTileOverlaySystem.cs | 11 +++---- 7 files changed, 45 insertions(+), 68 deletions(-) diff --git a/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 301e59502a..85f2c5fe24 100644 --- a/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -14,7 +14,6 @@ namespace Content.Client.Atmos.EntitySystems [UsedImplicitly] internal sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem { - [Dependency] private readonly IMapManager _mapManager = default!; private readonly Dictionary _tileData = new(); @@ -40,13 +39,21 @@ namespace Content.Client.Atmos.EntitySystems SubscribeNetworkEvent(HandleAtmosDebugOverlayMessage); SubscribeNetworkEvent(HandleAtmosDebugOverlayDisableMessage); - _mapManager.OnGridRemoved += OnGridRemoved; + SubscribeLocalEvent(OnGridRemoved); var overlayManager = IoCManager.Resolve(); if(!overlayManager.HasOverlay()) overlayManager.AddOverlay(new AtmosDebugOverlay()); } + private void OnGridRemoved(GridRemovalEvent ev) + { + if (_tileData.ContainsKey(ev.GridId)) + { + _tileData.Remove(ev.GridId); + } + } + private void HandleAtmosDebugOverlayMessage(AtmosDebugOverlayMessage message) { _tileData[message.GridId] = message; @@ -60,7 +67,6 @@ namespace Content.Client.Atmos.EntitySystems public override void Shutdown() { base.Shutdown(); - _mapManager.OnGridRemoved -= OnGridRemoved; var overlayManager = IoCManager.Resolve(); if (overlayManager.HasOverlay()) overlayManager.RemoveOverlay(); @@ -71,14 +77,6 @@ namespace Content.Client.Atmos.EntitySystems _tileData.Clear(); } - private void OnGridRemoved(MapId mapId, GridId gridId) - { - if (_tileData.ContainsKey(gridId)) - { - _tileData.Remove(gridId); - } - } - public bool HasData(GridId 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) return null; - return srcMsg.OverlayData[relative.X + (relative.Y * LocalViewRange)]; + return srcMsg.OverlayData[relative.X + relative.Y * LocalViewRange]; } } diff --git a/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs index 4f3e2b2cb5..e9b31b37ee 100644 --- a/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -13,7 +13,6 @@ namespace Content.Client.Atmos.EntitySystems [UsedImplicitly] internal sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem { - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; @@ -41,7 +40,7 @@ namespace Content.Client.Atmos.EntitySystems { base.Initialize(); SubscribeNetworkEvent(HandleGasOverlayMessage); - _mapManager.OnGridRemoved += OnGridRemoved; + SubscribeLocalEvent(OnGridRemoved); for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++) { @@ -118,17 +117,16 @@ namespace Content.Client.Atmos.EntitySystems public override void Shutdown() { base.Shutdown(); - _mapManager.OnGridRemoved -= OnGridRemoved; var overlayManager = IoCManager.Resolve(); overlayManager.RemoveOverlay(); overlayManager.RemoveOverlay(); } - 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); } } diff --git a/Content.Server/AI/Pathfinding/Accessible/AiReachableSystem.cs b/Content.Server/AI/Pathfinding/Accessible/AiReachableSystem.cs index cabcd3896b..a3eff7de57 100644 --- a/Content.Server/AI/Pathfinding/Accessible/AiReachableSystem.cs +++ b/Content.Server/AI/Pathfinding/Accessible/AiReachableSystem.cs @@ -83,11 +83,11 @@ namespace Content.Server.AI.Pathfinding.Accessible { SubscribeLocalEvent(Reset); SubscribeLocalEvent(RecalculateNodeRegions); + SubscribeLocalEvent(GridRemoved); #if DEBUG SubscribeNetworkEvent(HandleSubscription); SubscribeNetworkEvent(HandleUnsubscription); #endif - _mapManager.OnGridRemoved += GridRemoved; } public override void Shutdown() @@ -99,12 +99,11 @@ namespace Content.Server.AI.Pathfinding.Accessible _cachedAccessible.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) diff --git a/Content.Server/AI/Pathfinding/PathfindingSystem.cs b/Content.Server/AI/Pathfinding/PathfindingSystem.cs index a2863c2d3c..bc8490228a 100644 --- a/Content.Server/AI/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/AI/Pathfinding/PathfindingSystem.cs @@ -206,21 +206,13 @@ namespace Content.Server.AI.Pathfinding SubscribeLocalEvent(QueueCollisionChangeMessage); SubscribeLocalEvent(QueueMoveEvent); SubscribeLocalEvent(QueueAccessChangeMessage); + SubscribeLocalEvent(HandleGridRemoval); + SubscribeLocalEvent(QueueGridChange); + SubscribeLocalEvent(QueueTileChange); // Handle all the base grid changes // 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) @@ -231,25 +223,25 @@ namespace Content.Server.AI.Pathfinding 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) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs index d8c34f1ce6..db35873d64 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs @@ -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(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) diff --git a/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs b/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs index b8836da618..17a84a0f2a 100644 --- a/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs @@ -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(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(uid, out var physics)) return; diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index ac44b578f3..ce652a75e4 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -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(Reset); + SubscribeLocalEvent(OnGridRemoved); _playerManager.PlayerStatusChanged += OnPlayerStatusChanged; - _mapManager.OnGridRemoved += OnGridRemoved; var configManager = IoCManager.Resolve(); 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); } }