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

namespace Pkmnlib.Generated
{
    internal static class Battle
    {
        /// <param name="out">Battle * &</param>
        /// <param name="library">const BattleLibrary *</param>
        /// <param name="parties">const BattleParty * *</param>
        /// <param name="partiesCount">long unsigned int</param>
        /// <param name="canFlee">bool</param>
        /// <param name="numberOfSides">unsigned char</param>
        /// <param name="creaturesPerSide">unsigned char</param>
        /// <param name="randomSeed">long unsigned int</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Battle_Construct")]
        internal static extern byte Construct(ref IntPtr @out, IntPtr library, IntPtr parties, ulong partiesCount, byte canFlee, byte numberOfSides, byte creaturesPerSide, ulong randomSeed);

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

        /// <param name="p">Battle *</param>
        /// <param name="name">const char *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Battle_SetWeather")]
        internal static extern byte SetWeather(IntPtr p, IntPtr name);

        /// <param name="p">Battle *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Battle_ClearWeather")]
        internal static extern byte ClearWeather(IntPtr p);

        /// <param name="p">Battle *</param>
        /// <returns>const char *</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Battle_GetWeatherName")]
        internal static extern IntPtr GetWeatherName(IntPtr p);

    }
}
