namespace Content.Shared.Destructible;
public abstract class SharedDestructibleSystem : EntitySystem
{
///
/// Force entity to be destroyed and deleted.
///
public bool DestroyEntity(Entity owner)
{
var ev = new DestructionAttemptEvent();
RaiseLocalEvent(owner, ev);
if (ev.Cancelled)
return false;
var eventArgs = new DestructionEventArgs();
RaiseLocalEvent(owner, eventArgs);
PredictedQueueDel(owner);
return true;
}
///
/// Force entity to break.
///
public void BreakEntity(EntityUid owner)
{
var eventArgs = new BreakageEventArgs();
RaiseLocalEvent(owner, eventArgs);
}
}
///
/// Raised before an entity is about to be destroyed and deleted
///
public sealed class DestructionAttemptEvent : CancellableEntityEventArgs
{
}
///
/// Raised when entity is destroyed and about to be deleted.
///
public sealed class DestructionEventArgs : EntityEventArgs
{
}
///
/// Raised when entity was heavy damage and about to break.
///
public sealed class BreakageEventArgs : EntityEventArgs
{
}