// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;

namespace Creaturelib.Generated
{
    internal static class DamageLibrary
    {
        /// <returns>const DamageLibrary *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_Construct")]
        internal static extern IntPtr Construct();

        /// <param name="p">const DamageLibrary *</param>
        /// <returns>void</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_Destruct")]
        internal static extern void Destruct(IntPtr p);

        /// <param name="out">unsigned int &</param>
        /// <param name="p">const DamageLibrary *</param>
        /// <param name="attack">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <param name="hitIndex">unsigned char</param>
        /// <param name="hitData">HitData *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_GetDamage")]
        internal static extern byte GetDamage(ref uint @out, IntPtr p, IntPtr attack, IntPtr target, byte hitIndex, IntPtr hitData);

        /// <param name="out">unsigned char &</param>
        /// <param name="p">const DamageLibrary *</param>
        /// <param name="attack">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <param name="hitIndex">unsigned char</param>
        /// <param name="hitData">HitData *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_GetBasePower")]
        internal static extern byte GetBasePower(ref byte @out, IntPtr p, IntPtr attack, IntPtr target, byte hitIndex, IntPtr hitData);

        /// <param name="out">float &</param>
        /// <param name="p">const DamageLibrary *</param>
        /// <param name="attack">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <param name="hitIndex">unsigned char</param>
        /// <param name="hitData">HitData *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_GetStatModifier")]
        internal static extern byte GetStatModifier(ref float @out, IntPtr p, IntPtr attack, IntPtr target, byte hitIndex, IntPtr hitData);

        /// <param name="out">float &</param>
        /// <param name="p">const DamageLibrary *</param>
        /// <param name="attack">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <param name="hitIndex">unsigned char</param>
        /// <param name="hitData">HitData *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DamageLibrary_GetDamageModifier")]
        internal static extern byte GetDamageModifier(ref float @out, IntPtr p, IntPtr attack, IntPtr target, byte hitIndex, IntPtr hitData);

    }
}
