fish-station/Content.Server/_Sunrise/Misc/TimedRemoveComponents/TimedRemoveComponentsSystem.cs
ThereDrD f23628a833
Новые смешные эффекты для артефактов с Fire Station (#2135)
Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com>
2025-05-27 01:10:10 +03:00

41 lines
1.1 KiB
C#

using System.Threading;
using Content.Shared.GameTicking;
using Timer = Robust.Shared.Timing.Timer;
namespace Content.Server._Sunrise.Misc.TimedRemoveComponents;
public sealed class TimedRemoveComponentsSystem : EntitySystem
{
private static CancellationTokenSource _timerDespawnToken = new ();
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<TimedRemoveComponentsComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<RoundRestartCleanupEvent>(_ => Clear());
}
private void OnInit(Entity<TimedRemoveComponentsComponent> ent, ref ComponentInit args)
{
Timer.Spawn(ent.Comp.RemoveAfter, () => RemoveComponents(ent), _timerDespawnToken.Token);
}
private void RemoveComponents(Entity<TimedRemoveComponentsComponent> ent)
{
if (!Exists(ent))
return;
EntityManager.RemoveComponents(ent, ent.Comp.Components);
// блять, я себя захуярил
RemComp<TimedRemoveComponentsComponent>(ent);
}
private static void Clear()
{
_timerDespawnToken.Cancel();
_timerDespawnToken = new();
}
}