Files
OldThink/Content.Server/Mind/MindTrackerSystem.cs

40 lines
1.2 KiB
C#
Raw Normal View History

using Content.Server.Mind.Components;
using Content.Shared.GameTicking;
namespace Content.Server.Mind
{
/// <summary>
/// This is absolutely evil.
/// It tracks all mind changes and logs all the Mind objects.
/// This is so that when round end comes around, there's a coherent list of all Minds that were in play during the round.
/// The Minds themselves contain metadata about their owners.
/// Anyway, this is because disconnected people and ghost roles have been breaking round end statistics for way too long.
/// </summary>
public sealed class MindTrackerSystem : EntitySystem
{
[ViewVariables]
public readonly HashSet<Mind> AllMinds = new();
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
2023-06-18 11:33:19 -07:00
SubscribeLocalEvent<MindContainerComponent, MindAddedMessage>(OnMindAdded);
}
void Reset(RoundRestartCleanupEvent ev)
{
AllMinds.Clear();
}
2023-06-18 11:33:19 -07:00
void OnMindAdded(EntityUid uid, MindContainerComponent mc, MindAddedMessage args)
{
var mind = mc.Mind;
if (mind != null)
AllMinds.Add(mind);
}
}
}