reman3/Rayman_X/cpa/public/AI/AIBase/AI_Struc.h

187 lines
8.4 KiB
C

/*---------------------------------------------------------------------------*/
/* AIStruc.h : */
/* author : 24/01/97 (Olivier Didelot) . */
/* modify : 05/03/97 (Olivier Couvreur) Model can be gathered between several persos.*/
/* modify : 11/03/97 (Olivier Couvreur) .dec can be gathered between several persos.*/
/* modify : 15/05/97 (Olivier Couvreur) Safe second pass for DsgVar + ReinitAI*/
/*---------------------------------------------------------------------------*/
#if !defined(__AISTRUCT_H__)
#define __AISTRUCT_H__
#include "specif/AIOption.h"
/*****************************************************************************
* AI_tstAIModel Structure
*****************************************************************************/
typedef struct AI_tdstAIModel_
{
struct tdstScriptAI_ *p_stScriptAIIntell;
struct tdstScriptAI_ *p_stScriptAIReflex;
struct tdstDsgVar_ *p_stDsgVar;
#ifndef U64
struct tdstListOfMacro_ *p_stListOfMacro;
#endif /* U64 */
unsigned char ucSecondPassDone;
//XB 05/08/99
#ifndef D_THROW_CFAST_AI
//End XB
/* AI Convert To C*/
struct tdstNodeInterpret_ *CFast_dst_RefTreeArray; /* Array of all references */
unsigned short uwNbNode; /* Number of nodes in that array */
struct tdstNodeInterpret_ *CFast_dst_ParamArray; /* Array of AI functions params */
unsigned short uwNbParamNode ; /* Number of nodes in the param array */
int CFast_lFunction; /* Index of function when C run is true */
ACP_tdxBool CFast_bIsC; /* C run instead of IA interpret */
//XB 05/08/99
#endif /* D_THROW_CFAST_AI */
//End XB
} AI_tdstAIModel;
/* p_stScriptAIIntell field.*/
#define AI_M_p_stGetIntelligenceScriptAIModel(p_stModel) ((p_stModel)->p_stScriptAIIntell)
#define AI_M_SetIntelligenceScriptAIModel(p_stModel, p_stScriptAI) (AI_M_p_stGetIntelligenceScriptAIModel(p_stModel) = p_stScriptAI)
/* p_stScriptAIReflex field.*/
#define AI_M_p_stGetReflexScriptAIModel(p_stModel) ((p_stModel)->p_stScriptAIReflex)
#define AI_M_SetReflexScriptAIModel(p_stModel, p_stScriptAI) (AI_M_p_stGetReflexScriptAIModel(p_stModel) = p_stScriptAI)
/* p_stDsgVar Done field. */
#define AI_M_p_stGetDsgVarAIModel(p_stModel) ((p_stModel)->p_stDsgVar)
#define AI_M_SetDsgVarAIModel(p_stModel,p_stDsgVar) (AI_M_p_stGetDsgVarAIModel(p_stModel) = p_stDsgVar)
#ifndef U64
/* p_stListOfMacro field. */
#define AI_M_p_stGetListOfMacroAIModel(p_stModel) ((p_stModel)->p_stListOfMacro)
#define AI_M_SetListOfMacroAIModel(p_stModel, p_ListOfMacro) (AI_M_p_stGetListOfMacroAIModel(p_stModel) = p_ListOfMacro)
#endif /* U64 */
/* ucSecondPass Done field.*/
#define AI_M_ucGetSecondPassDone(p_stModel) ((p_stModel)->ucSecondPassDone)
#define AI_M_SetSecondPassDone(p_stModel, ucDone) (AI_M_ucGetSecondPassDone(p_stModel) = ucDone)
/*jawaka*/
#define M_CFast_GetReferenceNodeN(hSuperObjectPerso, indice) ((AI_M_p_stGetAIModel(AI_M_stGetMindOfSuperObj(hSuperObjectPerso)))->CFast_dst_RefTreeArray[indice])
/*****************************************************************************
* AI_tdstMind Structure
*****************************************************************************/
typedef struct AI_tdstMind_
{
struct AI_tdstAIModel_ *p_stAIModel;
struct tdstIntelligence_ *p_stIntelligence;
#if !defined(PRESS_DEMO) /* swap members to make the engine unusable with the binarized data of another engine */
struct tdstIntelligence_ *p_stReflex;
struct tdstDsgMem_ *p_stDsgMem;
#else
struct tdstDsgMem_ *p_stDsgMem;
struct tdstIntelligence_ *p_stReflex;
#endif /* PRESS_DEMO */
#if defined(__DEBUG_AI__)
char *szPersoName;
#endif
ACP_tdxBool bDoingIntel; /* 1 intelligence 0 reflex*/
#if defined(ACTIVE_AIDEBUG) /* ai debuger*/
struct AIDebug_tdstTrace_ *p_stTrace;
unsigned char ucErrorFlag;
#endif
//XB 05/08/99
#ifndef D_THROW_CFAST_AI
//End XB
/* AI Convert To C*/
long CFast_lCmpMetaAction ;
long CFast_lRfxMetaAction ;
long CFast_lCmpMetaActionForMacro ;
long CFast_lRfxMetaActionForMacro ;
//XB 05/08/99
#endif /* D_THROW_CFAST_AI */
//End XB
} AI_tdstMind;
#if defined(ACTIVE_EDITOR)
#define AI_M_ucErrorFlag(p_stMind) ((p_stMind)->ucErrorFlag)
#endif
/* szModelName field.*/
#if defined(__DEBUG_AI__)
#define AI_M_szGetPersoName(p_stMind) ((p_stMind)->szPersoName)
#define AI_M_SetPersoName(p_stMind, szName) ( AI_M_szGetPersoName(p_stMind) =(szName))
#else
#define AI_M_szGetPersoName(p_stMind) ""
#define AI_M_SetPersoName(p_stMind, szName)
#endif
#define AI_M_szGetSuperObjectName(p_stSupObj) (fn_szFindPersonalTypeNameOfPersonalType(M_ObjectGetPersonalType(M_GetEngineObject(p_stSupObj))))
/* bDoingIntel field.*/
#define AI_M_bGetDoingIntel(p_stMind) ((p_stMind)->bDoingIntel)
#define AI_M_SetDoingIntel(p_stMind, DoingIntel) ((p_stMind)->bDoingIntel = (DoingIntel))
/* p_stAIModel field.*/
#define AI_M_p_stGetAIModel(p_stMind) ((p_stMind)->p_stAIModel)
#define AI_M_SetAIModel(p_stMind, p_stModel) ((p_stMind)->p_stAIModel = (p_stModel))
/* p_stIntelligence.*/
#define AI_M_p_stGetIntelligence(p_stMind) ((p_stMind)->p_stIntelligence)
#define AI_M_SetIntelligence(p_stMind, p_stInt) (AI_M_p_stGetIntelligence(p_stMind) = (p_stInt))
/* p_stReflex.*/
#define AI_M_p_stGetReflex(p_stMind) ((p_stMind)->p_stReflex)
#define AI_M_SetReflex(p_stMind, p_stRefl) (AI_M_p_stGetReflex(p_stMind) = (p_stRefl))
/* p_stDsgMem field.*/
#define AI_M_p_stGetDsgMem(p_stMind) ((p_stMind)->p_stDsgMem)
#define AI_M_SetDsgMem(p_stMind, p_cDsgMem) (AI_M_p_stGetDsgMem(p_stMind) = (p_cDsgMem))
/* d_stTabDsgVar field.*/
#define AI_M_p_stGetDsgVar(p_stMind) (AI_M_p_stGetAIModel(p_stMind)->p_stDsgVar)
#define AI_M_SetDsgVar(p_stMind, p_stDsgVar) (AI_M_p_stGetDsgVar(p_stMind) = (p_stDsgVar))
/* p_stTrace.*/
#ifdef ACTIVE_AIDEBUG /* For AI debugger*/
#define AI_M_p_stGetTrace(p_stMind) ((p_stMind)->p_stTrace)
#define AI_M_SetTrace(p_stMind, p_stTr) (AI_M_p_stGetTrace(p_stMind) = p_stTr)
#endif /* ACTIVE_AIDEBUG For AI debugger*/
#define M_GetIntellOrReflex(p_stMind) (AI_M_bGetDoingIntel(p_stMind) ? AI_M_p_stGetIntelligence(p_stMind) : AI_M_p_stGetReflex(p_stMind))
#define M_GetOnlyIntelligencePointer(hSuperObjPerso) \
(AI_M_p_stGetIntelligence(AI_M_stGetMindOfSuperObj(hSuperObjPerso)))
/* ANNECY OA - 30/07/99 { */
#ifndef U64
/* Handler pour les fonctions incluses dans les donnes */
/* Pour les protections */
typedef struct
{
UINT (WINAPI *SetErrorMode)(UINT uFlags);
HANDLE (WINAPI *CreateFile)(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
BOOL (WINAPI *GetFileInformationByHandle)(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation);
BOOL (WINAPI *CloseHandle)(HANDLE hObject);
UINT (WINAPI *GetDriveType)(LPCTSTR lpRootPathName);
BOOL (WINAPI *GetVolumeInformation)(LPCTSTR lpRootPathName, LPTSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPTSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
BOOL (WINAPI *GetDiskFreeSpace)(LPCTSTR lpszFileName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpFreeClusters, LPDWORD lpClusters);
BOOL (WINAPI *SetFileAttributes)(LPCTSTR lpszFileName, DWORD dwFileAttributes);
DWORD (WINAPI *GetFileAttributes)(LPCTSTR lpszFileName);
BOOL (WINAPI *SetFileTime)(HANDLE hFile, CONST FILETIME* lpftCreation, CONST FILETIME* lpftLastAccess, CONST FILETIME* lpftLastWrite);
BOOL (WINAPI *GetFileTime)(HANDLE hFile, LPFILETIME lpftCreation, LPFILETIME lpftLastAccess, LPFILETIME lpftLastWrite);
DWORD (WINAPI *GetFileSize)(HANDLE hFile, LPDWORD lpFileSizeHigh);
DWORD (*SearchExportedFunctionInEveryDLL)(char *_szCryptedName);
DWORD (*SearchFunctionInImportedTableOfExe)(char *_szCryptedName);
} tdstLoaderHandler;
#endif /* U64 */
/* END ANNECY OA } */
#endif /* __AISTRUCT_H__*/