187 lines
8.4 KiB
C
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__*/
|
|
|