using Content.Shared.Actions;
namespace Content.Shared._Starlight.Actions.Stasis;
///
/// Allows mobs to enter nanite induced stasis .
///
public abstract class SharedStasisSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnMapInit);
SubscribeLocalEvent(OnCompRemove);
SubscribeLocalEvent(OnPrepareStasisStart);
SubscribeLocalEvent(OnEnterStasisStart);
SubscribeLocalEvent(OnExitStasisStart);
}
///
/// Giveths the action to preform stasis on the entity
///
protected virtual void OnMapInit(EntityUid uid, StasisComponent comp, MapInitEvent args)
{
}
///
/// Takeths away the action to preform stasis from the entity.
///
protected virtual void OnCompRemove(EntityUid uid, StasisComponent comp, ComponentShutdown args)
{
}
protected virtual void OnPrepareStasisStart(EntityUid uid, StasisComponent comp,
PrepareStasisActionEvent args)
{
}
protected virtual void OnEnterStasisStart(EntityUid uid, StasisComponent comp,
EnterStasisActionEvent args)
{
}
protected virtual void OnExitStasisStart(EntityUid uid, StasisComponent comp, ExitStasisActionEvent args)
{
}
}
///
/// Should be relayed upon using the action.
///
public sealed partial class PrepareStasisActionEvent : InstantActionEvent
{
}
///
/// Should be relayed preparation to stasis being complete.
///
public sealed partial class EnterStasisActionEvent : InstantActionEvent
{
}
///
/// Should be relayed upon using the action.
///
public sealed partial class ExitStasisActionEvent : InstantActionEvent
{
}