reman3/Rayman_X/cpa/tempgrp/AI/AIBase/ActParam.c

166 lines
5.7 KiB
C

/*---------------------------------------------------------------------------*/
/* Action parameters functions and macros for intelligence engine*/
/* author : Olivier Couvreur*/
/* date : 7/11/1996*/
/* modify : Fabien MORALES*/
/* date : 29/01/1997 Vertex param*/
/* modify : Olivier Couvreur*/
/* date : 03/02/1997 Lint 0 warnings*/
/* modify : Olivier Couvreur*/
/* date : 09/02/1997 error handling*/
/* modify : Olivier Couvreur 23/04/97 MMG + DIR*/
/*---------------------------------------------------------------------------*/
#include "AIUseCPA.h"
#include "specif/AIOption.h"
#include "AIMacros.h"
#include "AI_Erm.h"
#include "StrIntel.h"
#include "AI_Struc.h"
#include "specif/ActTable.h"
/* XB 20/05/1999 */
#ifndef D_THROW_COMPLEX_ACTION_TABLE
#define M_ActionParam(n) M_ActionTableParam((n),M_ActionTableCurrentEntry(n))
/* En Bref un truc du genre*/
/* M_ActionParam(p_stIntellOrReflex)*/
/* =*/
/* p_stIntelligence->stActionTable.a_stEntry[p_stIntelligence->stActionTable.ucCurrentEntry].stActionParam*/
#else /* D_THROW_COMPLEX_ACTION_TABLE */
#define M_ActionParam(n) M_ActionTableParam0((n))
#endif /* D_THROW_COMPLEX_ACTION_TABLE */
/* End XB 20/05/1999 */
#define M_InternalSetActionParam(p_SuperObjPerso, ucN, Value, AccesMacro) \
tdstIntelligence *p_stIntellOrReflex = M_GetIntellOrReflex(AI_M_stGetMindOfSuperObj((p_SuperObjPerso))); \
##AccesMacro(&M_ActionParam(p_stIntellOrReflex).a_uParam[(ucN)]) = (Value);
#if defined(__DEBUG_AI__)
#define M_SetActionParam(p_SuperObjPerso, ucN, Value, AccesMacro) \
if (ucN<C_MAX_NB_PARAM) \
{\
M_InternalSetActionParam(p_SuperObjPerso, ucN, Value, AccesMacro); \
}\
else\
{\
M_AIFatalError(E_uwAIFatalInvalidParameter);\
}
#else
#define M_SetActionParam(p_SuperObjPerso, ucN, Value, AccesMacro) M_InternalSetActionParam(p_SuperObjPerso, ucN, Value, AccesMacro);
#endif /* __DEBUG_AI__*/
#define M_InternalGetActionParam(p_SuperObjPerso, ucN, AccesMacro) \
tdstIntelligence *p_stIntellOrReflex = M_GetIntellOrReflex(AI_M_stGetMindOfSuperObj((p_SuperObjPerso))); \
return(##AccesMacro(&M_ActionParam(p_stIntellOrReflex).a_uParam[(ucN)]));
#if defined(__DEBUG_AI__)
#define M_GetActionParam(p_SuperObjPerso, ucN, DefaultReturnValue, AccesMacro) \
if (ucN<C_MAX_NB_PARAM) \
{\
M_InternalGetActionParam(p_SuperObjPerso, ucN, AccesMacro); \
}\
else\
{\
M_AIFatalError(E_uwAIFatalInvalidParameter);\
return DefaultReturnValue; \
}
#else
#define M_GetActionParam(p_SuperObjPerso, ucN, DefaultReturnValue, AccesMacro) M_InternalGetActionParam(p_SuperObjPerso, ucN, AccesMacro);
#endif /* __DEBUG_AI__*/
/****************************************************************************************/
/* ACCESS TO ACTION PARAMETERS */
/****************************************************************************************/
/* REAL_PARAM*/
void fn_vSetActionParamxValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH_tdxReal xValue)
{
M_SetActionParam(p_SuperObjPerso, ucN, xValue, M_tduGetSetParam_xValue);
}
MTH_tdxReal fn_xGetActionParamxValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso)
{
M_GetActionParam(p_SuperObjPerso, ucN, MTH_M_xLongToReal(0), M_tduGetSetParam_xValue);
}
/* CGHT */
/* LIPSYNCHRO_PARAM*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vSetActionParamhLipsSynchro(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso,tdxHandleOfLipsSynchroTable hLipsSynchro)
{
M_SetActionParam(p_SuperObjPerso, ucN, hLipsSynchro, M_tduGetSetParam_hLipsSynchro);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
tdxHandleOfLipsSynchroTable fn_p_stGetActionParamhLipsSynchro(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso)
{
M_GetActionParam(p_SuperObjPerso, ucN, NULL, M_tduGetSetParam_hLipsSynchro);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/* CONSTANT_PARAM*/
void fn_vSetActionParamlValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso, long lValue)
{
M_SetActionParam(p_SuperObjPerso, ucN, lValue, M_tduGetSetParam_lValue);
}
long fn_lGetActionParamlValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso)
{
M_GetActionParam(p_SuperObjPerso, ucN, 0, M_tduGetSetParam_lValue);
}
/* ACTION_PARAM*/
void fn_vSetActionParamStateValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso, tdxHandleToState hState)
{
M_SetActionParam(p_SuperObjPerso, ucN, hState, M_tduGetSetParam_HandleToState);
}
tdxHandleToState fn_xGetActionParamStateValue(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso)
{
M_GetActionParam(p_SuperObjPerso, ucN, NULL, M_tduGetSetParam_HandleToState);
}
/* VERTEX_PARAM*/
void fn_vSetActionParamp_stVertex(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stVertex)
{
#if defined(__DEBUG_AI__)
if (ucN < C_MAX_NB_PARAM)
{
#endif
tdstIntelligence *p_stIntellOrReflex = M_GetIntellOrReflex(AI_M_stGetMindOfSuperObj(p_SuperObjPerso));
MTH3D_M_vCopyVector( &M_tduGetSetParam_stVertexValue(&M_ActionParam(p_stIntellOrReflex).a_uParam[ucN]), p_stVertex );
#if defined(__DEBUG_AI__)
}
else
{
M_AIFatalError(E_uwAIFatalInvalidParameter);
}
#endif
}
MTH3D_tdstVector *fn_p_stGetActionParamp_stVertex(unsigned char ucN, HIE_tdxHandleToSuperObject p_SuperObjPerso)
{
tdstIntelligence *p_stIntellOrReflex = M_GetIntellOrReflex(AI_M_stGetMindOfSuperObj(p_SuperObjPerso));
#if defined(__DEBUG_AI__)
if (ucN < C_MAX_NB_PARAM)
{
#endif
return(&M_tduGetSetParam_stVertexValue(&M_ActionParam(p_stIntellOrReflex).a_uParam[ucN]) );
#if defined(__DEBUG_AI__)
}
else
{
M_AIFatalError(E_uwAIFatalInvalidParameter);
return(NULL);
}
#endif
}