BITFALL/Assets/BITKit/Unity/Scripts/Entity/Components/Health/GetDamageComponent.cs

35 lines
833 B
C#
Raw Normal View History

2023-08-12 01:43:24 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using BITKit.Entities;
using UnityEngine;
using UnityEngine.Events;
namespace BITKit.Entities
{
2023-10-30 01:25:53 +08:00
public class GetDamageBehavior : EntityBehavior
2023-08-12 01:43:24 +08:00
{
private readonly Queue<DamageMessage> DamageMessages = new();
[SerializeField] private UnityEvent<DamageMessage> onGetDamage;
[SerializeField, SerializeReference, SubclassSelector]
private IDamageCallback[] callbacks;
public override void OnAwake()
{
2023-10-30 01:25:53 +08:00
UnityEntity.AddListener<DamageMessage>(OnGetDamage);
2023-08-12 01:43:24 +08:00
}
private void OnGetDamage(DamageMessage obj)
{
2023-10-30 01:25:53 +08:00
if (obj.Target != UnityEntity) return;
2023-08-12 01:43:24 +08:00
DamageMessages.Enqueue(obj);
onGetDamage?.Invoke(obj);
foreach (var x in callbacks)
{
x.OnGetDamage(obj);
}
}
}
}