47 lines
1.1 KiB
C
47 lines
1.1 KiB
C
#pragma once
|
|
#include "lua.h"
|
|
|
|
#define MIN_DIR_ERR 5.0*M_PI/180. /**< Minimum direction error. */
|
|
#define MAX_DIR_ERR 0.5*M_PI/180. /**< Maximum direction error. */
|
|
#define MIN_VEL_ERR 5.0 /**< Minimum velocity error. */
|
|
|
|
#define FACE_WVEL 0.1 /**< Weight of velocity compared to position to face. */
|
|
|
|
/* Max number of AI timers. */
|
|
#define MAX_AI_TIMERS 2 /**< Max amount of AI timers. */
|
|
|
|
typedef enum TaskData_ { TYPE_NULL, TYPE_INT, TYPE_PTR } TaskData;
|
|
|
|
/**
|
|
* @struct Task
|
|
*
|
|
* @brief Basic AI task.
|
|
*/
|
|
typedef struct Task_ {
|
|
struct Task_* next; /**< Next task. */
|
|
char* name; /**< Task name. */
|
|
|
|
TaskData dtype; /**< Data type. */
|
|
union {
|
|
void* target; /**< Vec2 etc. */
|
|
unsigned int ID; /**< Pilot ID etc. */
|
|
} dat; /**< Stores the data. */
|
|
} Task;
|
|
|
|
/**
|
|
* @stuct Ai_Profile
|
|
*
|
|
* @brief Basic AI profile.
|
|
*/
|
|
typedef struct AI_Profile_ {
|
|
char* name; /**< Name of the profile. */
|
|
lua_State* L; /**< Associated lua State. */
|
|
} AI_Profile;
|
|
|
|
/* Misc. */
|
|
AI_Profile* ai_getProfile(char* name);
|
|
|
|
int ai_init(void);
|
|
void ai_exit(void);
|
|
|