reman3/Rayman_X/cpa/tempgrp/MEC/specif/dnmloadiCB.c

515 lines
12 KiB
C

#if !defined(U64)
#include "ACP_Base.h"
#include "cpa_std.h"
#include "MTH.h"
#include "SCR.h"
#include "MEC.h"
#include "DPT.h"
#include "LST.h"
#include "MEC/DNMLoadI.h"
#include "MEC/mbase.h"
#include "ldt.h"
#include <crtdbg.h>
/* ---- must be report in bin/binproto */
#define BIN_C_DNMMecBaseIdCardID 64
#define lTagAngularSpeed 'ugnA'
#define lTagLinearSpeed 'eniL'
#define lTagSpeedingUp 'eepS'
#define lTagGi 'iG'
#define lTagIx 'xI'
#define lTagIy 'yI'
#define lTagIz 'zI'
#define lTagAnimation 'minA'
#define lTagGravity 'varG'
#define lTagTilt 'tliT'
/*#define lTagTiltIntensity 13*/
/*#define lTagTiltInertia 11*/
/*#define lTagTiltOrigin 10*/
#define lTagClimb 'milC'
#define lTagOnGround 'rGnO'
#define lTagSpider 'dipS'
#define lTagShoot 'oohS'
#define lTagCollide 'lloC'
#define lTagKeepSpeedZ 'peeK'
#define lTagSpeedLimit 'eepS'
#define lTagInertia 'renI'
#define lTagStream 'ertS'
#define lTagStickOnPlatform 'citS'
#define lTagSlide 'dilS'
#define lTagScale 'lacS'
#define lTagRebound 'obeR'
#define lTagSlopeLimit 'polS'
#define lTagMaxSpeed 'SxaM'
/* Macro for initializing a CallBack and*/
/* initializing the associated LinkTable*/
/* for binarization purpose*/
#define DNMi_M_RegisterLDT(Type) \
LDT_RegisterType(C_SectionIdCard##Type##, CreateIdCard##Type##, LoadIdCard##Type##, LDT_REG_SECTION);
/* Macro for Reading the script file describing an Identity Card*/
/* and defining a LinkTable for this type of struct for*/
/* binarization purpose */
#define DNMi_M_CallBackLDT(Type, Struct, Parse) \
int CreateIdCard##Type##( LDT_tdst_Link* pLink ) \
{ \
DNM_tdxHandleToMecIdentityCard h_IdCard; \
\
h_IdCard = DNM_fn_xIdentityCardCreate(##Struct##); \
pLink->pObject = (void *)h_IdCard; \
return 0; \
} \
int LoadIdCard##Type##( LDT_tdst_Link* pLink ) \
{ \
int nLen;\
char a255_cLongName[255]; \
DNM_tdxHandleToMecIdentityCard h_IdCard = pLink->pObject; \
nLen = LDT_ComputeSectionName(pLink, a255_cLongName); \
SCR_M_v_Link_SetAdditionalLong( SCR_fnp_st_Link_SetValue (DNM_fn_p_stGetIdCardLinkTable(), a255_cLongName, (unsigned long)h_IdCard ), 1, nLen); \
return Parse##(h_IdCard, pLink); \
}
/* -> OS : THIS CODE SHOULD BE DELETED 25-Aug-98*/
/* _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_WNDW ); \*/
/* _RPT2( _CRT_WARN, "Name:%s.\nnLen=%d ", a255_cLongName, nLen); \*/
/* DebugBreak(); \*/
/* <- OS : THIS CODE SHOULD BE DELETED 25-Aug-98*/
/*-----------------------------
| Camera |
| Script, WriteBloc, CallBack |
-----------------------------*/
/* Script Parsing */
/*****************************************************************
Function name : DNM_fn_eLDTFillCameraIdentityCard
Description :
Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM
Creation Date : 14-Oct-98
Modified :
Return type : int
Argument : DNM_tdxHandleToMecIdentityCard h_IdCard
Argument : LDT_tdst_Link* pLink
*****************************************************************/
int DNM_fn_eLDTFillCameraIdentityCard( DNM_tdxHandleToMecIdentityCard h_IdCard, LDT_tdst_Link* pLink)
{
LDT_tdeParseResult result=ParseResult_BeginSection;
MTH_tdxReal xTmp;
while( result!=ParseResult_EndSection )
{
result=LDT_GetNextEntry();
switch( result )
{
case ParseResult_Entry: /* an entry */
{
char *szEntry=LDT_szGetEntryName();
switch (*(long*)szEntry)
{
case lTagAngularSpeed : /* AngularSpeed */
{
xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)));
DNM_M_xCameraIdCardSetAngularSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,MTH_M_xDegToRad(xTmp));
}
break;
case lTagLinearSpeed : /* LinearSpeed */
{
xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)));
DNM_M_xCameraIdCardSetLinearSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp);
}
break;
case lTagSpeedingUp : /* SpeedingUp */
{
xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)));
DNM_M_xCameraIdCardSetSpeedingUp((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp);
}
break;
}
}
}
}
return 0;
}
/* CallBack */
DNMi_M_CallBackLDT(
Camera,
DNM_eCamera,
DNM_fn_eLDTFillCameraIdentityCard)
/*-----------------------------
| Base |
| Script, WriteBloc, CallBack |
-----------------------------*/
/* Script Parsing */
/*****************************************************************
Function name : DNM_fn_eLDTFillBaseIdentityCard
Description :
Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM
Creation Date : 14-Oct-98
Modified :
Return type : int
Argument : DNM_tdxHandleToMecIdentityCard h_IdCard
Argument : LDT_tdst_Link* pLink
*****************************************************************/
int DNM_fn_eLDTFillBaseIdentityCard( DNM_tdxHandleToMecIdentityCard h_IdCard, LDT_tdst_Link* pLink)
{
LDT_tdeParseResult result=ParseResult_BeginSection;
DNM_tdstMecBaseIdCard *p_stBaseIdCard;
/* Gives back the semantic of the handle */
p_stBaseIdCard = DNM_fn_p_stMecBaseIdCardGiveBackSemantic(h_IdCard);
while( result!=ParseResult_EndSection )
{
result=LDT_GetNextEntry();
switch( result )
{
case ParseResult_Entry: /* an entry */
{
char *szEntry=LDT_szGetEntryName();
if (strlen(szEntry) == 1) /* G*/
{
DNM_M_vBaseIdCardSetGravityFactor
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
break;
}
if (strlen(szEntry) == 2)
{
switch (*(short*)szEntry)
{
case lTagGi : /* */
{
DNM_M_vBaseIdCardSetGi
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagIx : /* */
{
DNM_M_vBaseIdCardSetInertiaFactorX
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case lTagIy : /* */
{
DNM_M_vBaseIdCardSetInertiaFactorY
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case lTagIz : /* */
{
DNM_M_vBaseIdCardSetInertiaFactorZ
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
}
break;
}
switch (*(long*)szEntry)
{
case lTagAnimation : /* */
{
DNM_M_vBaseIdCardSetAnimation
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagCollide : /* Collide, CollisionControl*/
{
if (strlen(szEntry)==7) /* Collide*/
{
DNM_M_vBaseIdCardSetCollide
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
else /* CollisionControl*/
{
DNM_M_vBaseIdCardSetCollisionControl
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
}
break;
case lTagGravity : /* */
{
DNM_M_vBaseIdCardSetGravity
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagTilt : /* */
{
switch (strlen(szEntry))
{
case 4: /* Tilt*/
{
DNM_M_vBaseIdCardSetTilt
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case 10: /*TiltOrigin*/
{
DNM_M_vBaseIdCardSetTiltOrigin
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case 11: /*TiltInertia*/
{
DNM_M_vBaseIdCardSetTiltInertia
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case 13: /*TiltIntensity*/
{
DNM_M_vBaseIdCardSetTiltIntensity
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
}
}
break;
case lTagClimb : /* */
{
DNM_M_vBaseIdCardSetClimb
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagOnGround : /* */
{
DNM_M_vBaseIdCardSetOnGround
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagSpider : /* */
{
DNM_M_vBaseIdCardSetSpider
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagShoot : /* */
{
DNM_M_vBaseIdCardSetShoot
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagKeepSpeedZ : /* */
{
DNM_M_vBaseIdCardSetKeepWallSpeedZ
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagSpeedLimit : /* */
{
DNM_M_vBaseIdCardSetSpeedLimit
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagInertia : /* */
{
DNM_M_vBaseIdCardSetInertia
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagStream : /* */
{
DNM_M_vBaseIdCardSetStream
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagStickOnPlatform : /* */
{
DNM_M_vBaseIdCardSetStickOnPlatform
(
p_stBaseIdCard,
atoi(LDT_szGetParam(1))
);
}
break;
case lTagSlide : /* */
{
DNM_M_vBaseIdCardSetSlide
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case lTagRebound : /* */
{
DNM_M_vBaseIdCardSetRebound
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case lTagSlopeLimit : /* */
{
DNM_M_vBaseIdCardSetSlopeLimit
(
p_stBaseIdCard,
MTH_M_xDoubleToReal(atof(LDT_szGetParam(1)))
);
}
break;
case lTagMaxSpeed : /* */
{
MTH3D_tdstVector stVector;
MTH3D_M_vSetVectorElements
(
&stVector,
MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(1))),
MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(2))),
MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(3)))
);
DNM_M_vBaseIdCardSetMaxSpeed
(
p_stBaseIdCard,
&stVector
);
}
break;
}
}
}
}
return 0;
}
/* CallBack */
DNMi_M_CallBackLDT(
Base,
DNM_eBase,
DNM_fn_eLDTFillBaseIdentityCard)
#endif /* U64 */
/*#define LDT_REG_SECTION 0 /* registers section callbacks */
/*#define LDT_REG_FILE 1 /* registers file callbacks */
/*-----------------------------------------------------------------------------
* Description : Init the load of IdCard
*-----------------------------------------------------------------------------
* Input : void
* Output : void
*---------------------------------------------------------------------------*/
void DNM_fn_vInitLoadIdCardLDT()
{
DNM_fn_vInitLinkTableOfIdCard();
#if !defined(U64)
/* Camera */
DNMi_M_RegisterLDT(Camera)
/* Base */
DNMi_M_RegisterLDT(Base)
#endif /* U64 */
}