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

namespace Creaturelib.Generated
{
    internal static class AttackTurnChoice
    {
        /// <param name="user">Creature *</param>
        /// <param name="attack">LearnedAttack *</param>
        /// <param name="sideIndex">unsigned char</param>
        /// <param name="targetIndex">unsigned char</param>
        /// <returns>AttackTurnChoice *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_Construct")]
        internal static extern IntPtr Construct(IntPtr user, IntPtr attack, byte sideIndex, byte targetIndex);

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

        /// <param name="p">const AttackTurnChoice *</param>
        /// <returns>LearnedAttack *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetAttack")]
        internal static extern IntPtr GetAttack(IntPtr p);

        /// <param name="p">const AttackTurnChoice *</param>
        /// <returns>TurnChoiceKind</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetKind")]
        internal static extern TurnChoiceKind GetKind(IntPtr p);

        /// <param name="out">signed char &</param>
        /// <param name="p">AttackTurnChoice *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetPriority")]
        internal static extern byte GetPriority(ref sbyte @out, IntPtr p);

        /// <param name="p">const AttackTurnChoice *</param>
        /// <returns>Script *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetAttackScript")]
        internal static extern IntPtr GetAttackScript(IntPtr p);

        /// <param name="p">const AttackTurnChoice *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetTargetSideIndex")]
        internal static extern byte GetTargetSideIndex(IntPtr p);

        /// <param name="p">const AttackTurnChoice *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackTurnChoice_GetTargetCreatureIndex")]
        internal static extern byte GetTargetCreatureIndex(IntPtr p);

    }
}
