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