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

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

        /// <param name="seed">long unsigned int</param>
        /// <returns>BattleRandom *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_ConstructWithSeed")]
        internal static extern IntPtr ConstructWithSeed(ulong seed);

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

        /// <param name="out">bool &</param>
        /// <param name="p">BattleRandom *</param>
        /// <param name="chance">float</param>
        /// <param name="attack">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_EffectChance")]
        internal static extern byte EffectChance(ref byte @out, IntPtr p, float chance, IntPtr attack, IntPtr target);

        /// <param name="p">BattleRandom *</param>
        /// <returns>int</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_Get")]
        internal static extern int Get(IntPtr p);

        /// <param name="p">BattleRandom *</param>
        /// <param name="max">int</param>
        /// <returns>int</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_GetMax")]
        internal static extern int GetMax(IntPtr p, int max);

        /// <param name="p">BattleRandom *</param>
        /// <param name="min">int</param>
        /// <param name="max">int</param>
        /// <returns>int</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_GetMinMax")]
        internal static extern int GetMinMax(IntPtr p, int min, int max);

        /// <param name="p">BattleRandom *</param>
        /// <returns>long unsigned int</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleRandom_GetSeed")]
        internal static extern ulong GetSeed(IntPtr p);

    }
}
