Makes a lot of entity systems unsubscribe from events on shutdown.

This commit is contained in:
Vera Aguilera Puerto
2021-04-09 16:08:12 +02:00
parent c28f22ebff
commit 03cd390478
15 changed files with 119 additions and 28 deletions

View File

@@ -45,6 +45,13 @@ namespace Content.Server.GameObjects.EntitySystems.AI
SubscribeLocalEvent<MobStateChangedMessage>(MobStateChanged);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<SleepAiMessage>();
UnsubscribeLocalEvent<MobStateChangedMessage>();
}
/// <inheritdoc />
public override void Update(float frameTime)
{

View File

@@ -90,6 +90,22 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
_mapManager.OnGridRemoved += GridRemoved;
}
public override void Shutdown()
{
base.Shutdown();
_queuedUpdates.Clear();
_regions.Clear();
_cachedAccessible.Clear();
_queuedCacheDeletions.Clear();
_mapManager.OnGridRemoved -= GridRemoved;
UnsubscribeLocalEvent<PathfindingChunkUpdateMessage>();
UnsubscribeNetworkEvent<SharedAiDebug.SubscribeReachableMessage>();
UnsubscribeNetworkEvent<SharedAiDebug.UnsubscribeReachableMessage>();
}
private void GridRemoved(MapId mapId, GridId gridId)
{
_regions.Remove(gridId);
@@ -126,20 +142,6 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
_queuedCacheDeletions.Clear();
}
public override void Shutdown()
{
base.Shutdown();
_queuedUpdates.Clear();
_regions.Clear();
_cachedAccessible.Clear();
_queuedCacheDeletions.Clear();
_mapManager.OnGridRemoved -= GridRemoved;
UnsubscribeLocalEvent<PathfindingChunkUpdateMessage>();
UnsubscribeLocalEvent<PlayerAttachSystemMessage>();
UnsubscribeNetworkEvent<SharedAiDebug.SubscribeReachableMessage>();
UnsubscribeNetworkEvent<SharedAiDebug.UnsubscribeReachableMessage>();
}
#if DEBUG
private void HandleSubscription(SharedAiDebug.SubscribeReachableMessage message, EntitySessionEventArgs eventArgs)
{

View File

@@ -22,6 +22,14 @@ namespace Content.Server.GameObjects.EntitySystems.Body.Surgery
SubscribeLocalEvent<SurgeryWindowCloseMessage>(OnSurgeryWindowClose);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<SurgeryWindowOpenMessage>();
UnsubscribeLocalEvent<SurgeryWindowCloseMessage>();
}
public void Reset()
{
_openSurgeryUIs.Clear();

View File

@@ -27,6 +27,17 @@ namespace Content.Server.GameObjects.EntitySystems
SubscribeLocalEvent<BuckleComponent, AttackHandMessage>(HandleAttackHand);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<MoveEvent>();
UnsubscribeLocalEvent<EntInsertedIntoContainerMessage>();
UnsubscribeLocalEvent<EntRemovedFromContainerMessage>();
UnsubscribeLocalEvent<BuckleComponent, AttackHandMessage>(HandleAttackHand);
}
private void HandleAttackHand(EntityUid uid, BuckleComponent component, AttackHandMessage args)
{
args.Handled = component.TryUnbuckle(args.User);
@@ -40,14 +51,6 @@ namespace Content.Server.GameObjects.EntitySystems
}
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<MoveEvent>();
UnsubscribeLocalEvent<BuckleComponent, AttackHandMessage>(HandleAttackHand);
}
private void MoveEvent(MoveEvent ev)
{
if (!ev.Sender.TryGetComponent(out BuckleComponent? buckle))

View File

@@ -30,9 +30,18 @@ namespace Content.Server.GameObjects.EntitySystems
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<PlayerAttachSystemMessage>(OnPlayerAttached);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<PlayerAttachSystemMessage>();
}
private uint GetNextRoleIdentifier()
{
return unchecked(_nextRoleIdentifier++);

View File

@@ -51,8 +51,12 @@ namespace Content.Server.GameObjects.EntitySystems
/// <inheritdoc />
public override void Shutdown()
{
CommandBinds.Unregister<HandsSystem>();
base.Shutdown();
UnsubscribeLocalEvent<EntRemovedFromContainerMessage>();
UnsubscribeLocalEvent<EntInsertedIntoContainerMessage>();
CommandBinds.Unregister<HandsSystem>();
}
private static void HandleContainerModified(ContainerModifiedMessage args)

View File

@@ -16,10 +16,20 @@ namespace Content.Server.GameObjects.EntitySystems
/// <inheritdoc />
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<EntRemovedFromContainerMessage>(HandleEntityRemovedFromContainer);
SubscribeLocalEvent<EntInsertedIntoContainerMessage>(HandleEntityInsertedIntoContainer);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<EntRemovedFromContainerMessage>();
UnsubscribeLocalEvent<EntInsertedIntoContainerMessage>();
}
/// <inheritdoc />
public override void Update(float frameTime)
{

View File

@@ -26,6 +26,14 @@ namespace Content.Server.GameObjects.EntitySystems
SubscribeLocalEvent<EntParentChangedMessage>(EntParentChanged);
}
public override void Shutdown()
{
base.Shutdown();
UnsubscribeLocalEvent<GravityChangedMessage>();
UnsubscribeLocalEvent<EntParentChangedMessage>();
}
public void Reset()
{
_alerts.Clear();