using System.Runtime.InteropServices; namespace SepCore.Definition { [StructLayout(LayoutKind.Auto)] public struct ImpactData { public CampType Camp { get; } public int AttackBase { get; } public DamageType DamageType { get; } public float ScalingRatio { get; } public float BaseCritChance { get; } public float CritMultiplier { get; } public IAttributeProvider AttributeProvider { get; } public ImpactData( CampType camp, int attackBase, IAttributeProvider attributeProvider = null, DamageType damageType = DamageType.None, float scalingRatio = 1.0f, float baseCritChance = 0f, float critMultiplier = 0f) { Camp = camp; AttackBase = attackBase; AttributeProvider = attributeProvider; DamageType = damageType; ScalingRatio = scalingRatio; BaseCritChance = baseCritChance; CritMultiplier = critMultiplier; } public ImpactData(CampType camp, int attackBase) : this(camp, attackBase, null, DamageType.None, 1.0f, 0f, 0f) { } } }