using System;
using System.Collections.Generic;
using Content.Server.GameTicking;
using Content.Server.Mind.Components;
using Content.Shared.GameTicking;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.ViewVariables;
using Robust.Shared.Player;
namespace Content.Server.Mind
{
///
/// 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.
///
public sealed class MindTrackerSystem : EntitySystem
{
[ViewVariables]
public readonly HashSet AllMinds = new();
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(Reset);
SubscribeLocalEvent(OnMindAdded);
}
void Reset(RoundRestartCleanupEvent ev)
{
AllMinds.Clear();
}
void OnMindAdded(EntityUid uid, MindComponent mc, MindAddedMessage args)
{
var mind = mc.Mind;
if (mind != null)
AllMinds.Add(mind);
}
}
}