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 { public class GetDamageBehavior : EntityBehavior { private readonly Queue DamageMessages = new(); [SerializeField] private UnityEvent onGetDamage; [SerializeField, SerializeReference, SubclassSelector] private IDamageCallback[] callbacks; public override void OnAwake() { UnityEntity.AddListener(OnGetDamage); } private void OnGetDamage(DamageMessage obj) { if (obj.Target != UnityEntity) return; DamageMessages.Enqueue(obj); onGetDamage?.Invoke(obj); foreach (var x in callbacks) { x.OnGetDamage(obj); } } } }