Remove IDestroyAct, IBreakAct (#7876)

This commit is contained in:
Alex Evgrashin
2022-05-03 01:43:25 +03:00
committed by GitHub
parent 5d23100af3
commit 50ae467c76
21 changed files with 135 additions and 151 deletions

View File

@@ -1,61 +0,0 @@
using System;
using System.Linq;
using JetBrains.Annotations;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.Shared.Acts
{
/// <summary>
/// This interface gives components behavior on getting destroyed.
/// </summary>
public interface IDestroyAct
{
/// <summary>
/// Called when object is destroyed
/// </summary>
void OnDestroy(DestructionEventArgs eventArgs);
}
public sealed class DestructionEventArgs : EntityEventArgs { }
public sealed class BreakageEventArgs : EntityEventArgs { }
public interface IBreakAct
{
/// <summary>
/// Called when object is broken
/// </summary>
void OnBreak(BreakageEventArgs eventArgs);
}
[UsedImplicitly]
public sealed class ActSystem : EntitySystem
{
public void HandleDestruction(EntityUid owner)
{
var eventArgs = new DestructionEventArgs();
RaiseLocalEvent(owner, eventArgs, false);
var destroyActs = EntityManager.GetComponents<IDestroyAct>(owner).ToList();
foreach (var destroyAct in destroyActs)
{
destroyAct.OnDestroy(eventArgs);
}
QueueDel(owner);
}
public void HandleBreakage(EntityUid owner)
{
var eventArgs = new BreakageEventArgs();
RaiseLocalEvent(owner, eventArgs, false);
var breakActs = EntityManager.GetComponents<IBreakAct>(owner).ToList();
foreach (var breakAct in breakActs)
{
breakAct.OnBreak(eventArgs);
}
}
}
}

View File

@@ -1,5 +1,4 @@
using Content.Shared.ActionBlocker;
using Content.Shared.Acts;
using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Interaction;
@@ -13,6 +12,7 @@ using Robust.Shared.GameStates;
using Robust.Shared.Player;
using Robust.Shared.Timing;
using System.Diagnostics.CodeAnalysis;
using Content.Shared.Destructible;
namespace Content.Shared.Containers.ItemSlots
{

View File

@@ -0,0 +1,40 @@
namespace Content.Shared.Destructible;
public abstract class SharedDestructibleSystem : EntitySystem
{
/// <summary>
/// Force entity to be destroyed and deleted.
/// </summary>
public void DestroyEntity(EntityUid owner)
{
var eventArgs = new DestructionEventArgs();
RaiseLocalEvent(owner, eventArgs, false);
QueueDel(owner);
}
/// <summary>
/// Force entity to broke.
/// </summary>
public void BreakEntity(EntityUid owner)
{
var eventArgs = new BreakageEventArgs();
RaiseLocalEvent(owner, eventArgs, false);
}
}
/// <summary>
/// Raised when entity is destroyed and about to be deleted.
/// </summary>
public sealed class DestructionEventArgs : EntityEventArgs
{
}
/// <summary>
/// Raised when entity was heavy damage and about to break.
/// </summary>
public sealed class BreakageEventArgs : EntityEventArgs
{
}