using System; using System.Collections; using System.Collections.Generic; using Cysharp.Threading.Tasks; namespace Net.Project.B.Damage { public interface IDamageData { public int Index { get; set; } public int InitialDamage { get; } public int FinalDamage { get; } } public struct DamageData:IDamageData { public int Index { get; set; } public int InitialDamage { get; set; } public int FinalDamage { get; set; } } public interface IDamageType { } public interface IDamageReport { public int Index { get; } public ulong InitialTick { get; } public ulong FinalTick { get; } public int Initiator { get; } public int Target { get; } public int InitialDamage { get; } public int FinalDamage { get; } public bool IsFatal { get; } public IDamageType DamageType { get; } IReadOnlyCollection Reports { get; } } public interface IDamageService { public event Func> DamageFactor; public event Action OnDamaged; public UniTask CreateDamageAsync(int initiator, int target, int initialDamage, IDamageType damageType); } }