Make DoAfters use DamageChangedMessage instead of an event (#3115)

This commit is contained in:
DrSmugleaf
2021-02-10 02:36:05 +01:00
committed by GitHub
parent 9a7e2ec5ff
commit 96e5e34084
6 changed files with 52 additions and 35 deletions

View File

@@ -31,5 +31,21 @@ namespace Content.Shared.GameObjects.Components.Damage
/// List containing data on each <see cref="DamageType"/> that was changed.
/// </summary>
public IReadOnlyList<DamageChangeData> Data { get; }
public bool TookDamage
{
get
{
foreach (var datum in Data)
{
if (datum.Delta > 0)
{
return true;
}
}
return false;
}
}
}
}

View File

@@ -39,8 +39,6 @@ namespace Content.Shared.GameObjects.Components.Damage
private readonly HashSet<DamageClass> _supportedClasses = new();
private DamageFlag _flags;
public event Action<DamageChangedEventArgs>? HealthChangedEvent;
// TODO DAMAGE Use as default values, specify overrides in a separate property through yaml for better (de)serialization
[ViewVariables] public string DamageContainerId { get; set; } = default!;
@@ -460,7 +458,6 @@ namespace Content.Shared.GameObjects.Components.Damage
protected virtual void OnHealthChanged(DamageChangedEventArgs e)
{
Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, e);
HealthChangedEvent?.Invoke(e);
var message = new DamageChangedMessage(this, e.Data);
SendMessage(message);

View File

@@ -9,14 +9,6 @@ namespace Content.Shared.GameObjects.Components.Damage
{
public interface IDamageableComponent : IComponent, IExAct
{
/// <summary>
/// Called when the entity's <see cref="IDamageableComponent"/> values change.
/// Of note is that a "deal 0 damage" call will still trigger this event
/// (including both damage negated by resistance or simply inputting 0 as
/// the amount of damage to deal).
/// </summary>
event Action<DamageChangedEventArgs> HealthChangedEvent;
/// <summary>
/// Sum of all damages taken.
/// </summary>