#if !defined(_CFAST_H_) #define _CFAST_H_ #include "..\AiBase\Specif\AiOption.h" #include "GSParam.h" #include "StrIntel.h" #include "EnumType.h" #include "AI\AIGame\TypePtr.h" #include "AI\AIGame\ConvCst.h" #define CFast_lMaxTreeDepth 20 #ifdef __cplusplus /*extern "C" {*/ #endif /**************************************/ #if !defined(CPA_EXPORT) #if defined(CPA_WANTS_IMPORT) #define CPA_EXPORT __declspec(dllimport) #elif defined(CPA_WANTS_EXPORT) #define CPA_EXPORT __declspec(dllexport) #else #define CPA_EXPORT #endif /*CPA_WANTS_IMPORT || CPA_WANTS_EXPORT*/ #endif /*CPA_EXPORT*/ /**************************************/ #undef extern #define EXTERN_AI_DLL extern /* * Array for all C functions. */ typedef struct CFast_tdst_ArrayFunctions_ { /* char *mpsz_Name;*/ void (*mfnv_Function)(HIE_tdxHandleToSuperObject); #ifdef U64 //long ml_SizeOfCode; long ml_SizeOfTree; struct tdstNodeInterpret_ *mp_stPseudoTree; #endif } CFast_tdst_ArrayFunctions; typedef void (*CFast_EvalFunc)(void); /* * functions */ #define C_MAX_SIZE_FUNCTION_EDITOR_NAME 50 #define C_MAX_SIZE_FUNCTION_SCRIPT_NAME 41 #define C_MAX_FUNCTION_NB_IN_PARAM 6 #define C_MAX_FUNCTION_NB_OUT_PARAM 1 typedef struct tdstFunctionEntry_ { #if defined(ACTIVE_EDITOR) /* Function string used in editor*/ char szFunctionEditorName[C_MAX_SIZE_FUNCTION_EDITOR_NAME+1]; char szFunctionEditorName_En[C_MAX_SIZE_FUNCTION_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* Function string used in script*/ char szFunctionScriptName[C_MAX_SIZE_FUNCTION_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on Function function*/ tdp_fn_p_stFunctionFunctionPtr p_fn_p_stFunctionFunction; #endif /* _AI_LIB_*/ #if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG) /* list of Function parameters (taken from szAutorizedTypeParam) in parameter*/ char szFunctionTypeInParam[C_MAX_FUNCTION_NB_IN_PARAM+1]; /* out parameter*/ char szFunctionTypeOutParam[C_MAX_FUNCTION_NB_OUT_PARAM+1]; #endif /* AI_USE_SCRIPT */ unsigned char bUltraFunctionFlag; #ifdef PROFILE_IA unsigned long ulCallCtr; unsigned long ulTimeCtr; unsigned long ulOwnTimeCtr; #endif /* PROFILE_IA*/ } tdstFunctionEntry; extern tdstFunctionEntry a_stFunctionTable[] ; /* * Keyword */ #define C_MAX_SIZE_KEYWORD_EDITOR_NAME 17 #define C_MAX_SIZE_KEYWORD_SCRIPT_NAME 14 #define C_MAX_KEYWORD_NB_IN_PARAM 3 #define C_MAX_KEYWORD_NB_OUT_PARAM 1 #if defined(ACTIVE_EDITOR) || defined(AI_USE_SCRIPT) || defined(_AI_LIB_) typedef struct tdstKeyWordEntry_ { #if defined(ACTIVE_EDITOR) /* KeyWord string used in editor*/ char szKeyWordEditorName[C_MAX_SIZE_KEYWORD_EDITOR_NAME+1]; char szKeyWordEditorName_En[C_MAX_SIZE_KEYWORD_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* KeyWord string used in script*/ char szKeyWordScriptName[C_MAX_SIZE_KEYWORD_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on KeyWord function*/ tdp_fn_p_stKeyWordFunctionPtr p_fn_p_stKeyWordFunction; #endif /* _AI_LIB_*/ #if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG) /* list of KeyWord parameters (taken from szAutorizedTypeParam) in parameter*/ char szKeyWordTypeInParam[C_MAX_KEYWORD_NB_IN_PARAM+1]; /* list of KeyWord parameters (taken from szAutorizedTypeParam) out parameter*/ char szKeyWordTypeOutParam[C_MAX_KEYWORD_NB_OUT_PARAM+1]; #endif /* AI_USE_SCRIPT */ } tdstKeyWordEntry; extern tdstKeyWordEntry a_stKeyWordTable[] ; #endif /* * conditions */ #define C_MAX_SIZE_CONDITION_EDITOR_NAME 50 #define C_MAX_SIZE_CONDITION_SCRIPT_NAME 40 #define C_MAX_CONDITION_NB_PARAM 4 typedef struct tdstConditionEntry_ { #if defined(ACTIVE_EDITOR) /* Condition string used in editor*/ char szConditionEditorName[C_MAX_SIZE_CONDITION_EDITOR_NAME+1]; char szConditionEditorName_En[C_MAX_SIZE_CONDITION_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* Condition string used in script*/ char szConditionScriptName[C_MAX_SIZE_CONDITION_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on Condition function*/ tdp_fn_p_stConditionFunctionPtr p_fn_p_stConditionFunction; #endif /* _AI_LIB_*/ #if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG) /* list of Condition parameters (taken from szAutorizedTypeParam) in parameter*/ char szConditionTypeInParam[C_MAX_CONDITION_NB_PARAM+1]; #endif /* AI_USE_SCRIPT */ unsigned char bUltraCondtionFlag; #ifdef PROFILE_IA unsigned long ulCallCtr; unsigned long ulTimeCtr; unsigned long ulOwnTimeCtr; #endif /* PROFILE_IA*/ } tdstConditionEntry; extern tdstConditionEntry a_stConditionTable[] ; /* * Meta-Action */ #define C_MAX_SIZE_META_ACTION_SCRIPT_NAME 37 #define C_MAX_SIZE_META_ACTION_EDITOR_NAME 80 #define C_MAX_NB_META_ACTION_PARAM C_MAX_NB_PARAM typedef struct tdstMetaActionEntry_ { #if defined(ACTIVE_EDITOR) /* metaaction string used in editor*/ char szMetaActionEditorName[C_MAX_SIZE_META_ACTION_EDITOR_NAME+1]; char szMetaActionEditorName_En[C_MAX_SIZE_META_ACTION_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* metaaction string used in script*/ char szMetaActionScriptName[C_MAX_SIZE_META_ACTION_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on metaaction INIT function*/ tdp_fn_p_stMetaActionInitFunctionPtr p_fn_p_stMetaActionInitFunction; /* pointer on metaaction NEXT function*/ tdp_fn_ucMetaActionFunctionPtr p_fn_ucMetaActionFunction; #endif /* _AI_LIB_*/ /* list of metaaction parameters (taken from szAutorizedTypeParam)*/ char szMetaActionTypeParam[C_MAX_NB_META_ACTION_PARAM+1]; } tdstMetaActionEntry; extern tdstMetaActionEntry a_stMetaActionTable[] ; /* * procedures */ #define C_MAX_SIZE_PROCEDURE_EDITOR_NAME 50 #define C_MAX_SIZE_PROCEDURE_SCRIPT_NAME 40 #define C_MAX_PROCEDURE_NB_PARAM 8 /*ANNECY YLT Passage de 6 à 8 arguments (note: ceci ne prend pas plus de place en release binarise)*/ typedef struct tdstProcedureEntry_ { #if defined(ACTIVE_EDITOR) /* Procedure string used in editor*/ char szProcedureEditorName[C_MAX_SIZE_PROCEDURE_EDITOR_NAME+1]; char szProcedureEditorName_En[C_MAX_SIZE_PROCEDURE_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* Procedure string used in script*/ char szProcedureScriptName[C_MAX_SIZE_PROCEDURE_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on Procedure function*/ tdp_fn_p_stProcedureFunctionPtr p_fn_p_stProcedureFunction; #endif #if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG) /* list of Procedure parameters (taken from szAutorizedTypeParam) in parameter*/ char szProcedureTypeParam[C_MAX_PROCEDURE_NB_PARAM+1]; #endif /* AI_USE_SCRIPT */ unsigned char bUltraProcedureFlag; #ifdef PROFILE_IA unsigned long ulCallCtr; unsigned long ulTimeCtr; unsigned long ulOwnTimeCtr; #endif /* PROFILE_IA*/ } tdstProcedureEntry; extern tdstProcedureEntry a_stProcedureTable[] ; /* * Operators */ #define C_MAX_SIZE_OPERATOR_EDITOR_NAME 4 #define C_MAX_SIZE_OPERATOR_SCRIPT_NAME 26 #define C_MAX_OPERATOR_NB_IN_PARAM 2 #define C_MAX_OPERATOR_NB_OUT_PARAM 1 #if defined(ACTIVE_EDITOR) || defined(AI_USE_SCRIPT) || defined(_AI_LIB_) typedef struct tdstOperatorEntry_ { #if defined(ACTIVE_EDITOR) /* Operator string used in editor*/ char szOperatorEditorName[C_MAX_SIZE_OPERATOR_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* Operator string used in script*/ char szOperatorScriptName[C_MAX_SIZE_OPERATOR_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on Operator function*/ tdp_fn_p_stOperatorFunctionPtr p_fn_p_stOperatorFunction; #endif /* _AI_LIB_*/ #if defined(ACTIVE_EDITOR) /* list of Operator parameters (taken from szAutorizedTypeParam) in parameter*/ char szOperatorTypeInParam[C_MAX_OPERATOR_NB_IN_PARAM+1]; /* out parameter*/ char szOperatorTypeOutParam[C_MAX_OPERATOR_NB_OUT_PARAM+1]; #endif /* ACTIVE_EDITOR*/ } tdstOperatorEntry; extern tdstOperatorEntry a_stOperatorTable[] ; #endif /* * type (vector, ... ) */ typedef struct tdstTypeEntry_ { tdp_fn_p_stEvalTypePtr p_fn_p_stEvalTypePtr; } tdstTypeEntry; extern tdstTypeEntry a_stTypeTable[] ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stConditionFunctionPtr CFast_g_p_fn_CondPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stOperatorFunctionPtr CFast_g_p_fn_OpPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stProcedureFunctionPtr CFast_g_p_fn_ProcPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stFunctionFunctionPtr CFast_g_p_fn_FuncPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stKeyWordFunctionPtr CFast_g_p_fn_KeyWordPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_p_stMetaActionInitFunctionPtr CFast_g_p_fn_MetaInitPtr ; EXTERN_AI_DLL CPA_EXPORT tdp_fn_ucMetaActionFunctionPtr CFast_g_p_fn_MetaPtr ; EXTERN_AI_DLL CPA_EXPORT tdstGetSetParam CFast_g_a_stParam[CFast_lMaxTreeDepth] ; EXTERN_AI_DLL CPA_EXPORT tdstNodeInterpret CFast_g_a_stPseudoTree[7][CFast_lMaxTreeDepth] ; EXTERN_AI_DLL CPA_EXPORT long CFast_g_a_lLong[CFast_lMaxTreeDepth] ; EXTERN_AI_DLL CPA_EXPORT tdeTypeInterpret CFast_g_aEvt2Eti[] ; EXTERN_AI_DLL CPA_EXPORT ACP_tdxBool CFast_g_bProcessReflex ; EXTERN_AI_DLL CPA_EXPORT ACP_tdxBool CFast_g_bMetaActionInRfx ; /*extern tdstNodeInterpret *M_CFast_GetReferenceNodeN(HIE_tdxHandleToSuperObject hSuperObjectPerso, long indice) ;*/ #ifdef __cplusplus /*}*/ #endif #ifdef __cplusplus extern "C" { #endif EXTERN_AI_DLL char gcGlobAleat; EXTERN_AI_DLL CPA_EXPORT CFast_tdst_ArrayFunctions CFast_gast_ArrayFunctions[]; tdstNodeInterpret *fn_p_stEvalVector(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue) ; #ifdef __cplusplus } #endif #endif /* _CFAST_H_ */