Add rayman2 source files
This commit is contained in:
668
Rayman_X/cpa/tempgrp/AI/AIGame/AITools.c
Normal file
668
Rayman_X/cpa/tempgrp/AI/AIGame/AITools.c
Normal file
@@ -0,0 +1,668 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* AITools.C : Some useful functions*/
|
||||
/* author : Olivier Couvreur.*/
|
||||
/* date : 05/05/1996*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
#include "AI_Mmg.h"
|
||||
|
||||
#include "AI_Struc.h"
|
||||
#include "WPWayPt.h"
|
||||
|
||||
#include "specif/AITools.h"
|
||||
|
||||
#include "StrIntel.h"
|
||||
|
||||
#include "safe.h"
|
||||
/* in order to test NULL perso,waypoint,action,GMT, text, etc. */
|
||||
#if defined(__DEBUG_AI__)
|
||||
static unsigned char gs_ucDontCheckNULLFlag = 0;
|
||||
|
||||
void fn_vSetDontCheckNULLFlag(signed char _cValue)
|
||||
{
|
||||
gs_ucDontCheckNULLFlag += _cValue;
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
|
||||
#ifdef ACTIVE_EDITOR
|
||||
|
||||
extern unsigned char g_ucIsEdInGhostMode;
|
||||
|
||||
void fn_vCheckModuleAccess(HIE_tdxHandleToSuperObject hPerso, ACP_tdxBool _bNextArgIsAChannel, void *_p_vChannelOrModuleHandle)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hModule;
|
||||
unsigned char ucChannel;
|
||||
|
||||
if ( _bNextArgIsAChannel )
|
||||
{
|
||||
ucChannel = *(unsigned char *)_p_vChannelOrModuleHandle;
|
||||
hModule = fn_hGetSuperObjectInChannel(fn_h3dDataGetChannelSOList(M_GetMSHandle(hPerso, 3dData)),(short) ucChannel);
|
||||
}
|
||||
else
|
||||
{
|
||||
ucChannel = C_ucUnknownChannel;
|
||||
hModule = *(HIE_tdxHandleToSuperObject *)_p_vChannelOrModuleHandle;
|
||||
}
|
||||
|
||||
|
||||
/* if B mode, no check is done */
|
||||
if (g_ucIsEdInGhostMode)
|
||||
{
|
||||
if (hModule)
|
||||
hModule->llastComputeFrameForModule = HIE_gs_lCurrentFrame;
|
||||
return;
|
||||
}
|
||||
|
||||
/* if hModule is NULL, then there is an error : access to a valid channel number, but nothing in the channel !*/
|
||||
if (hModule == NULL)
|
||||
{
|
||||
/* error !*/
|
||||
char cText[512];
|
||||
|
||||
if (M_GetMSHandle(hPerso,Brain) && M_pstGetMindOfBrain(M_GetMSHandle(hPerso,Brain)))
|
||||
{
|
||||
sprintf(cText,"You try to access a module that does not exist at this moment !!!\n"
|
||||
"this module belongs to : %s\nThe number of the channel you try to access is : %i\n",(M_pstGetMindOfBrain(M_GetMSHandle(hPerso,Brain)))->szPersoName,ucChannel);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(cText,"You try to access a module that does not exist at this moment !!!\n"
|
||||
"this module belongs to <actor with no brain (current state is %s)>\nThe number of the channel you try to access is : %i\n",ucChannel, fn_p_szGetStateName(fn_h3dDataGetCurrentState(M_GetMSHandle(hPerso,3dData))));
|
||||
}
|
||||
SAF_M_AssertWithMsg(FALSE,cText);
|
||||
}
|
||||
else if (hModule->llastComputeFrameForModule < HIE_gs_lCurrentFrame-1)
|
||||
{
|
||||
/* error !*/
|
||||
char cText[512];
|
||||
|
||||
if (M_GetMSHandle(hPerso,Brain) && M_pstGetMindOfBrain(M_GetMSHandle(hPerso,Brain)))
|
||||
{
|
||||
sprintf(cText,"You try to get a module position that is not up to date !!!\n"
|
||||
"this module belongs to : %s\n",(M_pstGetMindOfBrain(M_GetMSHandle(hPerso,Brain)))->szPersoName);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(cText,"You try to get a module position that is not up to date !!!\n"
|
||||
"this module belongs to <actor with no brain (current state is %s)>\n", fn_p_szGetStateName(fn_h3dDataGetCurrentState(M_GetMSHandle(hPerso,3dData))));
|
||||
}
|
||||
|
||||
if (fn_ulStandardGameGetCustomBitsSO(hPerso) & GAM_C_CustBitNeedModuleMatrices)
|
||||
{
|
||||
strcat(cText,"This Perso already has the custombit 2 set, but it seems that the anim player has not\n"
|
||||
"been played this time..., so check anim player related flags\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(cText,"This perso does not have the custom bit 2 set, correct this and try again\n");
|
||||
}
|
||||
sprintf (cText + strlen(cText),"There is a difference of %i frames\n",HIE_gs_lCurrentFrame-hModule->llastComputeFrameForModule);
|
||||
|
||||
SAF_M_AssertWithMsg(FALSE,cText);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
#if defined(__DEBUG_AI__)
|
||||
unsigned char fn_ucGetDontCheckNULLFlag()
|
||||
{
|
||||
return gs_ucDontCheckNULLFlag;
|
||||
}
|
||||
#endif /* __DEBUG_AI__ */
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
/* CGHT*/
|
||||
#if 0
|
||||
/* MODIF YLG*/
|
||||
ACP_tdxBool fn_bIsEndReached(MTH_tdxReal xStart,MTH_tdxReal xEnd,MTH_tdxReal xSpeed)
|
||||
{
|
||||
if(MTH_M_bGreaterZero(xSpeed))
|
||||
{
|
||||
return(MTH_M_bGreaterEqual(xStart,xEnd));
|
||||
}
|
||||
else if(MTH_M_bLessZero(xSpeed))
|
||||
{
|
||||
return(MTH_M_bLessEqual(xStart,xEnd));
|
||||
}
|
||||
return(TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
char *fn_szGetStringFromTextOrStringParam(tdstGetSetParam *p_stValue)
|
||||
{
|
||||
char *pszString = NULL;
|
||||
|
||||
if ( M_GetSetParam_Type(p_stValue) == E_vt_String )
|
||||
{
|
||||
pszString = M_GetSetParam_szString(p_stValue);
|
||||
}
|
||||
else if ( M_GetSetParam_Type(p_stValue) == E_vt_Text )
|
||||
{
|
||||
|
||||
pszString = FON_fn_szGetTextPointerForHandle(M_GetSetParam_hText(p_stValue));
|
||||
|
||||
}
|
||||
return pszString;
|
||||
}
|
||||
|
||||
|
||||
void fn_vGetCenterOfBoundingVolume(HIE_tdxHandleToSuperObject hPerso,struct MTH3D_tdstVector_ *p_stVertex)
|
||||
{
|
||||
GEO_tdxHandleToBoundingSphere hBoundingSphere;
|
||||
|
||||
hBoundingSphere = (GEO_tdxHandleToBoundingSphere)HIE_fn_hGetSuperObjectBoundingVolume(hPerso);
|
||||
|
||||
/* si il y a un bounding volume*/
|
||||
if (hBoundingSphere!=NULL)
|
||||
{
|
||||
/* on renvoie le centre de la sph<70>re*/
|
||||
MTH3D_M_vMulMatrixVector(p_stVertex, &(hPerso->hGlobalMatrix->stRotationMatrix), &(hBoundingSphere->stCenterPoint));
|
||||
MTH3D_M_vAddVector (p_stVertex,p_stVertex,&(hPerso->hGlobalMatrix->stTranslationVector));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* on renvoie l'origine du rep<65>re*/
|
||||
MTH3D_M_vCopyVector(p_stVertex, &(hPerso->hGlobalMatrix->stTranslationVector));
|
||||
}
|
||||
}
|
||||
|
||||
MTH_tdxReal fn_xDistanceBetweenPersoAndWP(HIE_tdxHandleToSuperObject p_SuperObjPerso, WP_tdhWayPoint hWP)
|
||||
{
|
||||
MTH3D_tdstVector stVertex1, stVertex2;
|
||||
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso), &stVertex1);
|
||||
WP_fnv_WayPoint_ComputeLocation(hWP, &stVertex2);
|
||||
MTH3D_M_vSubVector(&stVertex1, &stVertex1, &stVertex2);
|
||||
return (MTH3D_M_xNormVector(&stVertex1));
|
||||
}
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
MTH_tdxReal fn_xDistanceBetweenPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso1, HIE_tdxHandleToSuperObject p_SuperObjPerso2)
|
||||
{
|
||||
MTH3D_tdstVector stVertex1, stVertex2;
|
||||
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso1), &stVertex1);
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso2), &stVertex2);
|
||||
MTH3D_M_vSubVector(&stVertex1, &stVertex1, &stVertex2);
|
||||
return (MTH3D_M_xNormVector(&stVertex1));
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
MTH_tdxReal fn_xInternalDistance(MTH3D_tdstVector *p_stVector,unsigned char ucFlags)
|
||||
{
|
||||
MTH_tdxReal xX,xY,xZ;
|
||||
|
||||
xX=MTH3D_M_xGetXofVector(p_stVector);
|
||||
xY=MTH3D_M_xGetYofVector(p_stVector);
|
||||
xZ=MTH3D_M_xGetZofVector(p_stVector);
|
||||
|
||||
switch (ucFlags)
|
||||
{
|
||||
/* signed distance */
|
||||
case C_DISTANCE_X:
|
||||
return(xX);
|
||||
case C_DISTANCE_Y:
|
||||
return(xY);
|
||||
case C_DISTANCE_Z:
|
||||
return(xZ);
|
||||
/* unsigned distance */
|
||||
case C_DISTANCE_XY:
|
||||
return(MTH_M_xSqrt(MTH_M_xAdd(MTH_M_xSqr(xX),MTH_M_xSqr(xY))));
|
||||
case C_DISTANCE_XZ:
|
||||
return(MTH_M_xSqrt(MTH_M_xAdd(MTH_M_xSqr(xX),MTH_M_xSqr(xZ))));
|
||||
case C_DISTANCE_YZ:
|
||||
return(MTH_M_xSqrt(MTH_M_xAdd(MTH_M_xSqr(xY),MTH_M_xSqr(xZ))));
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
case C_DISTANCE_XYZ:
|
||||
return(MTH3D_M_xNormVector(p_stVector));
|
||||
}
|
||||
}
|
||||
|
||||
/* distance expressed in local of perso2 */
|
||||
MTH_tdxReal fn_xExtendedDistanceBetweenPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso1, HIE_tdxHandleToSuperObject p_SuperObjPerso2, unsigned char ucFlags)
|
||||
{
|
||||
MTH3D_tdstVector stVertex1, stVertex2;
|
||||
/*XB980430*/
|
||||
/* MTH_tdxReal xNorm2=MTH_C_ZERO;*/
|
||||
/*End XB*/
|
||||
POS_tdstCompletePosition stMatrix;
|
||||
|
||||
/* bounding volume center or origin*/
|
||||
if (ucFlags & DISTANCE_TO_CENTER_OF_BOUNDING_VOLUME)
|
||||
{
|
||||
fn_vGetCenterOfBoundingVolume(p_SuperObjPerso1,&stVertex1);
|
||||
fn_vGetCenterOfBoundingVolume(p_SuperObjPerso2,&stVertex2);
|
||||
}
|
||||
else
|
||||
{
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso1), &stVertex1);
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso2), &stVertex2);
|
||||
}
|
||||
MTH3D_M_vSubVector(&stVertex1, &stVertex1, &stVertex2);
|
||||
|
||||
|
||||
ucFlags &= C_DISTANCE_MASK;
|
||||
if (ucFlags!=C_DISTANCE_MASK)
|
||||
{
|
||||
/* return to local coordinates*/
|
||||
POS_fn_vInvertIsoMatrix(&stMatrix,HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso2));
|
||||
POS_fn_vMulMatrixVector(&stVertex1,&stMatrix,&stVertex1);
|
||||
}
|
||||
return(fn_xInternalDistance(&stVertex1,ucFlags));
|
||||
}
|
||||
|
||||
|
||||
/* local in perso2 */
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
MTH_tdxReal fn_xExtendedDistanceBetweenVertexAndPerso(MTH3D_tdstVector *p_stVertex1,HIE_tdxHandleToSuperObject p_SuperObjPerso2 , unsigned char ucFlags)
|
||||
{
|
||||
MTH3D_tdstVector stVertex2;
|
||||
/*XB980430*/
|
||||
/* MTH_tdxReal xNorm2=MTH_C_ZERO;*/
|
||||
/*End XB*/
|
||||
POS_tdstCompletePosition stMatrix;
|
||||
|
||||
/* bounding volume center or origin*/
|
||||
if (ucFlags & DISTANCE_TO_CENTER_OF_BOUNDING_VOLUME)
|
||||
{
|
||||
fn_vGetCenterOfBoundingVolume(p_SuperObjPerso2,&stVertex2);
|
||||
}
|
||||
else
|
||||
{
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso2), &stVertex2);
|
||||
}
|
||||
MTH3D_M_vSubVector(p_stVertex1,p_stVertex1,&stVertex2);
|
||||
|
||||
ucFlags &= C_DISTANCE_MASK;
|
||||
if (ucFlags!=C_DISTANCE_MASK)
|
||||
{
|
||||
/* return to local coordinates*/
|
||||
POS_fn_vInvertIsoMatrix(&stMatrix,HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso2));
|
||||
POS_fn_vMulMatrixVector(p_stVertex1,&stMatrix,p_stVertex1);
|
||||
}
|
||||
return(fn_xInternalDistance(p_stVertex1,ucFlags));
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
|
||||
MTH_tdxReal fn_xComputeDirectionAngle(MTH3D_tdstVector *p_stVector)
|
||||
{
|
||||
MTH_tdxReal xRealX,xRealY,xAngle;
|
||||
|
||||
xRealX=MTH3D_M_xGetXofVector(p_stVector);
|
||||
xRealY=MTH3D_M_xGetYofVector(p_stVector);
|
||||
|
||||
/* Arctan(y/x)*/
|
||||
if (xRealX) xAngle=MTH_M_xATan(MTH_M_xDiv(xRealY , xRealX));
|
||||
else if(MTH_M_bLess(xRealY ,MTH_C_ZERO)) xAngle=MTH_M_xNeg(MTH_C_PiBy2);
|
||||
else xAngle=MTH_C_PiBy2;
|
||||
|
||||
/* correction !?!*/
|
||||
if(MTH_M_bLess(xRealX ,MTH_C_ZERO)) xAngle=MTH_M_xAdd(xAngle,MTH_C_Pi);
|
||||
if(MTH_M_bLess(xAngle,MTH_C_ZERO)) xAngle=MTH_M_xAdd(xAngle,MTH_C_2Pi);
|
||||
|
||||
/* correction if xAngle=0 (you go on the x axis), the angle of the perso is PI/2.*/
|
||||
xAngle = MTH_M_xAdd(xAngle,MTH_C_PiBy2);
|
||||
if(MTH_M_bGreater(xAngle,MTH_C_2Pi)) xAngle=MTH_M_xSub(xAngle,MTH_C_2Pi);
|
||||
|
||||
return(xAngle);
|
||||
}
|
||||
|
||||
/* angle must be [in 0, 2pi[ : use xAngle=fn_xRealModuloAround(MTH_C_ZERO,MTH_C_2Pi,xAngle);*/
|
||||
MTH_tdxReal fn_xComputeBestEcartDirectionAngle(MTH_tdxReal xAngleFollowed,MTH_tdxReal xAngleToFollow)
|
||||
{
|
||||
/* to be sure Abs(xDeltaAngle) is <=180 deg : so that it is the shortest angle */
|
||||
MTH_tdxReal xDeltaAngle=MTH_M_xSub(xAngleToFollow,xAngleFollowed);
|
||||
if (MTH_M_bGreater(xDeltaAngle,MTH_C_ZERO))
|
||||
{
|
||||
if (MTH_M_bGreater(xDeltaAngle,MTH_C_Pi))
|
||||
{
|
||||
xDeltaAngle=MTH_M_xSub(xDeltaAngle,MTH_C_2Pi);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MTH_M_bLess(xDeltaAngle,MTH_M_xNeg(MTH_C_Pi)))
|
||||
{
|
||||
xDeltaAngle=MTH_M_xAdd(xDeltaAngle,MTH_C_2Pi);
|
||||
}
|
||||
}
|
||||
return(xDeltaAngle);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
tdstMACDPID *fn_p_stGetMACDPIDPointer(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
tdstMACDPID *p_stMACDPID=NULL;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
DNM_tdstDynamics *p_stDynamics;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(p_SuperObjPerso,Dynam)) != NULL )
|
||||
{
|
||||
if((p_stDynamics = fn_p_stDynamGetDynamics(h_Dynam)) != NULL)
|
||||
{
|
||||
p_stMACDPID = DNM_M_p_stDynamicsGetExternalDatas(p_stDynamics);
|
||||
}
|
||||
}
|
||||
|
||||
if (p_stMACDPID==NULL)
|
||||
{
|
||||
M_AIFatalError(E_uwAIFatalNoDynamics);
|
||||
}
|
||||
return (p_stMACDPID);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
DNM_tdstReport *fn_pstGetDNMReport(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
DNM_tdstDynamics *p_stDynamics;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(p_SuperObjPerso,Dynam)) == NULL )
|
||||
return NULL;
|
||||
if((p_stDynamics = fn_p_stDynamGetDynamics(h_Dynam)) == NULL)
|
||||
return NULL;
|
||||
return DNM_M_p_stDynamicsGetReport(p_stDynamics);
|
||||
}
|
||||
|
||||
/* round xValue so that it belongs to [xFrom,xFrom+xModulus[*/
|
||||
MTH_tdxReal fn_xRealModuloAround(MTH_tdxReal xFrom,MTH_tdxReal xModulus,MTH_tdxReal xValue)
|
||||
{
|
||||
/* xValue -= xFrom;*/
|
||||
xValue=MTH_M_xSub(xValue,xFrom);
|
||||
|
||||
/* while (xValue<0) xValue += xModulus;*/
|
||||
while (MTH_M_bLess(xValue,MTH_C_ZERO))
|
||||
{
|
||||
xValue=MTH_M_xAdd(xValue,xModulus);
|
||||
}
|
||||
|
||||
/* while (xValue>=xModulus) xValue -= xModulus;*/
|
||||
while (MTH_M_bGreaterEqual(xValue,xModulus))
|
||||
{
|
||||
xValue=MTH_M_xSub(xValue,xModulus);
|
||||
}
|
||||
|
||||
/* xValue += xFrom;*/
|
||||
xValue=MTH_M_xAdd(xValue,xFrom);
|
||||
|
||||
/* that's all folks*/
|
||||
return(xValue);
|
||||
};
|
||||
|
||||
/* same but but for a vector (X,Y,Z)*/
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
void fn_vVectorModuloAround(MTH_tdxReal xFrom,MTH_tdxReal xModulus,struct MTH3D_tdstVector_ *p_stRotationVector)
|
||||
{
|
||||
MTH3D_M_vSetXofVector(p_stRotationVector,fn_xRealModuloAround(xFrom,xModulus,MTH3D_M_xGetXofVector(p_stRotationVector)));
|
||||
MTH3D_M_vSetYofVector(p_stRotationVector,fn_xRealModuloAround(xFrom,xModulus,MTH3D_M_xGetYofVector(p_stRotationVector)));
|
||||
MTH3D_M_vSetZofVector(p_stRotationVector,fn_xRealModuloAround(xFrom,xModulus,MTH3D_M_xGetZofVector(p_stRotationVector)));
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
;
|
||||
|
||||
|
||||
/* make angular speed vector positive*/
|
||||
/*
|
||||
void fn_vMakeAngularSpeedVectorPositive(struct MTH3D_tdstVector_ *p_stRotationVector,struct MTH3D_tdstVector_ *p_stAngleVector,struct MTH3D_tdstVector_ *p_stAimAngleVector)
|
||||
{
|
||||
MTH_tdxReal xTemp;
|
||||
|
||||
// we must quarantee that RotationVector is >0, and that
|
||||
// sgn(AimAngleVector-Anglevector)=sgn(RotationVector)
|
||||
// if (RotationVector<0)
|
||||
// {
|
||||
// RotationVector=-RotationVector;
|
||||
// if (Anglevector<AimAngleVector) AngleVector+=2Pi;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (Anglevector>AimAngleVector) AngleVector-=2Pi;
|
||||
// }
|
||||
///
|
||||
|
||||
// X
|
||||
if (MTH_M_bLess(xTemp=MTH3D_M_xGetXofVector(p_stRotationVector),MTH_C_ZERO))
|
||||
{
|
||||
MTH3D_M_vSetXofVector(p_stRotationVector,MTH_M_xNeg(xTemp));
|
||||
|
||||
xTemp=MTH3D_M_xGetXofVector(p_stAngleVector);
|
||||
while (MTH_M_bLess(xTemp,MTH3D_M_xGetXofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xAdd(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetXofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
else
|
||||
{
|
||||
xTemp=MTH3D_M_xGetXofVector(p_stAngleVector);
|
||||
while (MTH_M_bGreater(xTemp,MTH3D_M_xGetXofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xSub(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetXofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
|
||||
// Y
|
||||
if (MTH_M_bLess(xTemp=MTH3D_M_xGetYofVector(p_stRotationVector),MTH_C_ZERO))
|
||||
{
|
||||
MTH3D_M_vSetYofVector(p_stRotationVector,MTH_M_xNeg(xTemp));
|
||||
|
||||
xTemp=MTH3D_M_xGetYofVector(p_stAngleVector);
|
||||
while (MTH_M_bLess(xTemp,MTH3D_M_xGetYofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xAdd(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetYofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
else
|
||||
{
|
||||
xTemp=MTH3D_M_xGetYofVector(p_stAngleVector);
|
||||
while (MTH_M_bGreater(xTemp,MTH3D_M_xGetYofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xSub(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetYofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
|
||||
// Z
|
||||
if (MTH_M_bLess(xTemp=MTH3D_M_xGetZofVector(p_stRotationVector),MTH_C_ZERO))
|
||||
{
|
||||
MTH3D_M_vSetZofVector(p_stRotationVector,MTH_M_xNeg(xTemp));
|
||||
|
||||
xTemp=MTH3D_M_xGetZofVector(p_stAngleVector);
|
||||
while (MTH_M_bLess(xTemp,MTH3D_M_xGetZofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xAdd(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetZofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
else
|
||||
{
|
||||
xTemp=MTH3D_M_xGetZofVector(p_stAngleVector);
|
||||
if (MTH_M_bGreater(xTemp,MTH3D_M_xGetZofVector(p_stAimAngleVector)))
|
||||
{
|
||||
xTemp=MTH_M_xSub(xTemp,MTH_C_2Pi);
|
||||
}
|
||||
MTH3D_M_vSetZofVector(p_stAngleVector,xTemp);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
unsigned char fn_ucIsThereFloatIfYesConvertItToInteger(tdstGetSetParam *p_stParam)
|
||||
{
|
||||
unsigned char ucIsThereFloat=(unsigned char) M_IsFloatType(p_stParam);
|
||||
if (ucIsThereFloat)
|
||||
{
|
||||
long lValue;
|
||||
|
||||
if((M_GetSetParam_xValue(p_stParam)<MTH_C_MAX_LONG)&&
|
||||
(M_GetSetParam_xValue(p_stParam)>(-MTH_C_MAX_LONG)))/*AR980325 Antibug U64*/
|
||||
lValue=MTH_M_xRealToLong(M_GetSetParam_xValue(p_stParam));
|
||||
else if (M_GetSetParam_xValue(p_stParam)>0)
|
||||
lValue=MTH_C_MAX_LONG;
|
||||
else
|
||||
lValue=-MTH_C_MAX_LONG;
|
||||
|
||||
M_Full_GetSetParam_Integer(p_stParam,lValue);
|
||||
}
|
||||
return(ucIsThereFloat);
|
||||
}
|
||||
|
||||
unsigned char fn_ucAreThereFloatIfYesConvertThem(tdstGetSetParam *p_stParam1,tdstGetSetParam *p_stParam2)
|
||||
{
|
||||
unsigned char ucIsThereFloat=(unsigned char) M_IsFloatType(p_stParam1);
|
||||
if (ucIsThereFloat)
|
||||
{
|
||||
if (!M_IsFloatType(p_stParam2))
|
||||
{
|
||||
M_GetSetParam_xValue(p_stParam2)=MTH_M_xLongToReal(M_GetSetParam_lValue(p_stParam2)) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ucIsThereFloat=(unsigned char) M_IsFloatType(p_stParam2);
|
||||
if (ucIsThereFloat)
|
||||
{
|
||||
M_GetSetParam_xValue(p_stParam1)=MTH_M_xLongToReal(M_GetSetParam_lValue(p_stParam1));
|
||||
}
|
||||
}
|
||||
return(ucIsThereFloat);
|
||||
}
|
||||
|
||||
#if defined(__DEBUG_AI__)
|
||||
char *fn_szGetPersoName(HIE_tdxHandleToSuperObject hPerso)
|
||||
{
|
||||
return AI_M_szGetPersoName(AI_M_stGetMindOfSuperObj(hPerso));
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************************
|
||||
* Set the position of p_SuperObjPerso to p_stVertex. Make the mecanic collision test.
|
||||
**************************************************************************************/
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
ACP_tdxBool fn_bSetPositionWithCollideTest(HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stVertex)
|
||||
{
|
||||
/* MS_tdxHandleToDynam h_Dynam;
|
||||
DNM_tdstDynamics *p_stDynamics;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(p_SuperObjPerso,Dynam)) == NULL )
|
||||
return FALSE;
|
||||
if((p_stDynamics = fn_p_stDynamGetDynamics(h_Dynam)) == NULL)
|
||||
return FALSE;*/
|
||||
|
||||
/* Break the son-father link.*/
|
||||
fn_vReputCharacterSuperObjectAtTheWorld(p_SuperObjPerso);
|
||||
|
||||
/* Set the new position*/
|
||||
POS_fn_vSetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),p_stVertex);
|
||||
POS_fn_vSetTranslationVector(HIE_fn_hGetSuperObjectMatrix(p_SuperObjPerso),p_stVertex);
|
||||
|
||||
/* DNM_fn_vDynamicsSetFromHiePositionByTakingIntoAccountTheObstaclesOfTheWayCoveredByTheObject(p_stDynamics, p_SuperObjPerso);*/
|
||||
/* LRM_fn_xBoolInitListOfRequests(fn_pDynamGetListOfRequests(h_Dynam));*/
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
/*ANNECY BBB { parti dans GAM\actions\Dynam.c*/
|
||||
/********************************************************************************************
|
||||
* Set the position of p_SuperObjPerso to p_stVertex. Do not make the mecanic collision test.
|
||||
*********************************************************************************************/
|
||||
/*ACP_tdxBool fn_bSetPositionWithoutCollideTest(HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stVertex)*/
|
||||
/*ANNECY BBB } parti dans GAM\actions\Dynam.c*/
|
||||
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
unsigned char fn_bGethDynamAndMACDPIDPointers(HIE_tdxHandleToSuperObject p_SuperObjPerso, MS_tdxHandleToDynam *p_h_Dynam, tdstMACDPID **p_p_stMACDPID)
|
||||
{
|
||||
DNM_tdstDynamics *p_stDynamics;
|
||||
|
||||
if((*p_h_Dynam = M_GetMSHandle(p_SuperObjPerso,Dynam)) != NULL )
|
||||
{
|
||||
if((p_stDynamics = fn_p_stDynamGetDynamics(*p_h_Dynam)) != NULL)
|
||||
{
|
||||
*p_p_stMACDPID = DNM_M_p_stDynamicsGetExternalDatas(p_stDynamics);
|
||||
return(TRUE);
|
||||
}
|
||||
}
|
||||
return(FALSE);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
unsigned char fn_ucInternalTurn(HIE_tdxHandleToSuperObject p_SuperObjPerso,MTH_tdxReal xAngle)
|
||||
{
|
||||
struct DNM_stDynamics* pstDynamic;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
/* Get Dynamics structure*/
|
||||
h_Dynam = M_GetMSHandle(p_SuperObjPerso,Dynam);
|
||||
|
||||
if (h_Dynam)
|
||||
{
|
||||
pstDynamic = fn_p_stDynamGetDynamics(h_Dynam);
|
||||
|
||||
if (pstDynamic)
|
||||
{
|
||||
MEC_vTurnAroundZAxis ( pstDynamic, xAngle );
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void fn_vConvertParamToColor(struct tdstGetSetParam_ *p_stParam,struct GEO_tdstColor_ *p_stColor)
|
||||
{
|
||||
/* don't use MTH because this is real float*/
|
||||
float lValue;
|
||||
float fValue=0.0f;
|
||||
float fFactor=0.01f;
|
||||
|
||||
lValue=M_GetSetParam_RedValue(p_stParam);
|
||||
if (lValue<0) fValue=0.0f; else if (lValue>100) fValue=1.0f; else fValue=lValue*fFactor;
|
||||
p_stColor->xR=fValue;
|
||||
|
||||
lValue=M_GetSetParam_GreenValue(p_stParam);
|
||||
if (lValue<0) fValue=0.0f; else if (lValue>100) fValue=1.0f; else fValue=lValue*fFactor;
|
||||
p_stColor->xG=fValue;
|
||||
|
||||
lValue=M_GetSetParam_BlueValue(p_stParam);
|
||||
if (lValue<0) fValue=0.0f; else if (lValue>100) fValue=1.0f; else fValue=lValue*fFactor;
|
||||
p_stColor->xB=fValue;
|
||||
|
||||
lValue=M_GetSetParam_AlphaValue(p_stParam);
|
||||
if (lValue<0) fValue=0.0f; else if (lValue>100) fValue=1.0f; else fValue=lValue*fFactor;
|
||||
p_stColor->xA=fValue;
|
||||
}
|
||||
|
||||
void fn_vConvertColorToParam(struct GEO_tdstColor_ *p_stColor,struct tdstGetSetParam_ *p_stParam)
|
||||
{
|
||||
M_GetSetParam_RedValue(p_stParam) =(unsigned char) (100*p_stColor->xR);
|
||||
M_GetSetParam_GreenValue(p_stParam) =(unsigned char) (100*p_stColor->xG);
|
||||
M_GetSetParam_BlueValue(p_stParam) =(unsigned char) (100*p_stColor->xB);
|
||||
M_GetSetParam_AlphaValue(p_stParam) =(unsigned char) (100*p_stColor->xA);
|
||||
M_GetSetParam_Type(p_stParam)=E_vt_Color;
|
||||
}
|
||||
|
||||
|
188
Rayman_X/cpa/tempgrp/AI/AIGame/ActMain.c
Normal file
188
Rayman_X/cpa/tempgrp/AI/AIGame/ActMain.c
Normal file
@@ -0,0 +1,188 @@
|
||||
#include "AIUseCPA.h"
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
#include "ActParam.h"
|
||||
#include "Action.h"
|
||||
#include "Intell.h"
|
||||
#include "WPWayPt.h"
|
||||
#include "specif/AITools.h"
|
||||
#include "Procedur.h"
|
||||
#include "EnumProc.h"
|
||||
#include "safe.h"
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *fn_p_stExecuteActionInit(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
tdxHandleToState h_WantedState;
|
||||
|
||||
p_stTree = fn_p_stDefaultActionInit(p_SuperObjPerso, p_stTree);
|
||||
h_WantedState = fn_xGetActionParamStateValue(0, p_SuperObjPerso);
|
||||
|
||||
/* Force the state to be changed by setting it with a dummy value */
|
||||
fn_v3dDataSetFirstStateOfAction(M_GetMSHandle(p_SuperObjPerso,3dData), NULL);
|
||||
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (!PLA_fn_bSetNewState(p_SuperObjPerso, h_WantedState, FALSE,FALSE))
|
||||
{
|
||||
fn_vSetActionParamlValue(0, p_SuperObjPerso, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
fn_vSetActionParamlValue(0, p_SuperObjPerso, 1);
|
||||
}
|
||||
#else
|
||||
fn_vSetActionParamlValue(0, p_SuperObjPerso, (long) (PLA_fn_bSetNewState(p_SuperObjPerso, h_WantedState, FALSE,FALSE) ) );
|
||||
#endif
|
||||
|
||||
/* Put the action in the stack parameters */
|
||||
fn_vSetActionParamStateValue(1, p_SuperObjPerso, h_WantedState);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*===============================================================================================*/
|
||||
tducActionReturn fn_ucExecuteAction(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
tdxHandleToState h_WantedState = fn_xGetActionParamStateValue(1, p_SuperObjPerso);
|
||||
|
||||
/* Test if SetNewState has work */
|
||||
if (fn_lGetActionParamlValue(0, p_SuperObjPerso) == 0)
|
||||
return C_DefaultMetaActionFinished;
|
||||
|
||||
/* Test if this the same action */
|
||||
if (!PLA_fn_bTestCurrentAction(p_SuperObjPerso, h_WantedState))
|
||||
{
|
||||
#if defined(__DEBUG_AI__)
|
||||
char MyMsg[100];
|
||||
sprintf(MyMsg,"");
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningExecuteActionInt, C_ucErmNoOpenInfoWindow,MyMsg);
|
||||
#endif
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
/* Test if animation is finished */
|
||||
if (PLA_fn_bTestIfEndOfAction(p_SuperObjPerso))
|
||||
return C_DefaultMetaActionFinished;
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#ifdef D_USE_LIPSYNC
|
||||
tdstNodeInterpret *fn_p_stSpeakAndWaitEndInit(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
p_stTree = fn_p_stDefaultActionInit(p_SuperObjPerso,p_stTree);
|
||||
if(fn_bIsDiscussionOver(p_SuperObjPerso))
|
||||
{
|
||||
fn_vStartLipsSynchro(p_SuperObjPerso,fn_p_stGetActionParamhLipsSynchro(0, p_SuperObjPerso));
|
||||
}
|
||||
return p_stTree;
|
||||
}
|
||||
#endif /* D_USE_LIPSYNC*/
|
||||
|
||||
/*===============================================================================================*/
|
||||
#ifdef D_USE_LIPSYNC
|
||||
tducActionReturn fn_ucSpeakAndWaitEnd(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
if(fn_bIsDiscussionOver(p_SuperObjPerso))
|
||||
return C_DefaultMetaActionFinished;
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* D_USE_LIPSYNC*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
tducActionReturn fn_ucWaitEndOfAction(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
if (PLA_fn_bTestIfEndOfAction(p_SuperObjPerso))
|
||||
return C_DefaultMetaActionFinished;
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
tducActionReturn fn_ucWaitEndOfAnim(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
if (PLA_fn_bTestIfEndOfAnim(p_SuperObjPerso))
|
||||
return C_DefaultMetaActionFinished;
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
|
||||
#define D_FrozenWaitWarn 0
|
||||
#define D_FrozenWaitForce 0
|
||||
tdstNodeInterpret *fn_p_stFrozenWaitInit(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
/* read the meta-action arguments */
|
||||
p_stTree = fn_p_stDefaultActionInit(p_SuperObjPerso,p_stTree);
|
||||
|
||||
#if D_FrozenWaitWarn && defined(ACTIVE_EDITOR)
|
||||
SAF_M_AssertWithMsg(
|
||||
( fn_uc3dDataGetBrainComputationFrequency(M_GetMSHandle(p_SuperObjPerso,3dData)) == 1 )
|
||||
|| M_IsTheEndOfTree(p_stTree)
|
||||
||
|
||||
(
|
||||
( M_GetTypeInterpret(p_stTree) == E_ti_Procedure )
|
||||
&&
|
||||
(
|
||||
( M_eProcedureIdInterpret(p_stTree) == eProc_ChangeMyComportAndMyReflex )
|
||||
|| ( M_eProcedureIdInterpret(p_stTree) == ( AI_M_bGetDoingIntel(AI_M_stGetMindOfSuperObj(p_SuperObjPerso)) ? eProc_ChangeMyComport : eProc_ChangeMyComportReflex ) )
|
||||
)
|
||||
),
|
||||
"il est fortement d<>conseill<6C> d'appeler cette m<>ta-action <20> l'int<6E>rieur d'un comportement\n"
|
||||
"dans une IA qui n'est pas trait<69>e toutes les trames!"
|
||||
);
|
||||
#endif
|
||||
|
||||
#if D_FrozenWaitForce
|
||||
/* remember the AI computation frequency */
|
||||
fn_vSetActionParamlValue(
|
||||
1,
|
||||
p_SuperObjPerso,
|
||||
fn_uc3dDataGetBrainComputationFrequency(M_GetMSHandle(p_SuperObjPerso,3dData))
|
||||
);
|
||||
/* and force it to 1, to make sure the meta action does not last longer than planned */
|
||||
fn_v3dDataSetBrainComputationFrequency(M_GetMSHandle(p_SuperObjPerso,3dData), 1) ;
|
||||
#endif
|
||||
|
||||
/*remember the time at which the metaaction is to end*/
|
||||
fn_vSetActionParamlValue(
|
||||
0,
|
||||
p_SuperObjPerso,
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount + fn_lGetActionParamlValue(0, p_SuperObjPerso)
|
||||
);
|
||||
|
||||
return p_stTree;
|
||||
}
|
||||
|
||||
/*===============================================================================================*/
|
||||
tducActionReturn fn_ucFrozenWait(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
tducActionReturn ucReturn ;
|
||||
|
||||
/*the meta action ends when the time is later than the specified one*/
|
||||
ucReturn = (g_stEngineStructure.stEngineTimer.ulCurrentTimerCount < (unsigned long) fn_lGetActionParamlValue(0, p_SuperObjPerso))
|
||||
? C_DefaultMetaActionNotFinished
|
||||
: C_DefaultMetaActionFinished ;
|
||||
#if D_FrozenWaitForce
|
||||
/* if it is over, restore the brain computation frequency */
|
||||
if ( ucReturn == C_DefaultMetaActionFinished )
|
||||
{
|
||||
fn_v3dDataSetBrainComputationFrequency(M_GetMSHandle(p_SuperObjPerso,3dData), fn_lGetActionParamlValue(1, p_SuperObjPerso)) ;
|
||||
}
|
||||
#endif
|
||||
return ucReturn ;
|
||||
}
|
733
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Act.c
Normal file
733
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Act.c
Normal file
@@ -0,0 +1,733 @@
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
extern
|
||||
#ifdef _DEBUG
|
||||
"C"
|
||||
#endif
|
||||
unsigned long fn_ulDetermineUsefulDT();
|
||||
|
||||
#define D_CineInfo_StructureDefine
|
||||
|
||||
#include "AIUseCPA.h"
|
||||
#include "AIMacros.h"
|
||||
|
||||
#include "StrIntel.h"
|
||||
#include "Intell.h"
|
||||
#include "ActParam.h"
|
||||
#include "Action.h"
|
||||
#include "Convert.h"
|
||||
#include "EnumAct.h"
|
||||
|
||||
#include "Gam.h"
|
||||
|
||||
#include "specif/AITools.h"
|
||||
#include "CAM_Base.h"
|
||||
#include "CAM_Tool.h"
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
void fnv_MoveAToB
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
MTH3D_tdstVector *_p_stSource,
|
||||
MTH3D_tdstVector *_p_stDest,
|
||||
MTH3D_tdstVector *_p_stCurrent,
|
||||
int _iTime,
|
||||
int _iAccel
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MTH_tdxReal xDist, xActDist, xSpeed, xTemp;
|
||||
long lTime;
|
||||
MTH3D_tdstVector stTempVector;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/* Total dist to move */
|
||||
MTH3D_M_vSubVector(&stTempVector, _p_stDest, _p_stSource);
|
||||
xDist = MTH3D_M_xNormVector(&stTempVector);
|
||||
|
||||
/* Dist already moved */
|
||||
MTH3D_M_vSubVector(&stTempVector, _p_stCurrent, _p_stSource);
|
||||
xActDist = MTH3D_M_xNormVector(&stTempVector);
|
||||
|
||||
/* Max speed depending on total time and distance */
|
||||
xSpeed = MTH_M_xDiv(xDist, MTH_M_xLongToReal(_iTime));
|
||||
|
||||
/* Time elapsed since beginning */
|
||||
lTime = g_stEngineStructure.stEngineTimer.ulCurrentTimerCount - fn_lGetActionParamlValue(5, p_SuperObjPerso);
|
||||
|
||||
/* Accel */
|
||||
if(lTime < _iAccel)
|
||||
{
|
||||
xSpeed = MTH_M_xMul(MTH_M_xDiv(xSpeed, MTH_M_xLongToReal(_iAccel)), lTime);
|
||||
}
|
||||
|
||||
/* Decel */
|
||||
if(lTime > _iTime - _iAccel)
|
||||
{
|
||||
xTemp = MTH_M_xMul(MTH_M_xLongToReal(lTime), -MTH_M_xDiv(xSpeed, MTH_M_xLongToReal(_iAccel)));
|
||||
xSpeed = MTH_M_xAdd(xTemp, MTH_M_xDiv(MTH_M_xMul(MTH_M_xLongToReal(_iTime), xSpeed), MTH_M_xFloatToReal(_iAccel)));
|
||||
}
|
||||
|
||||
/* New pos */
|
||||
MTH3D_M_vSubVector(&stTempVector, _p_stDest, _p_stSource);
|
||||
MTH3D_M_vNormalizeVector(&stTempVector, &stTempVector);
|
||||
|
||||
xSpeed = MTH_M_xMul(xSpeed, fn_ulDetermineUsefulDT());
|
||||
MTH3D_M_vMulScalarVector(&stTempVector, xSpeed, &stTempVector);
|
||||
MTH3D_M_vAddVector(_p_stDest, &stTempVector, _p_stCurrent);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
void fnv_TurnAWithB
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
MTH3D_tdstVector *_p_stSource,
|
||||
MTH3D_tdstVector *_p_stPointAxis,
|
||||
MTH3D_tdstVector *_p_stAxis,
|
||||
MTH3D_tdstVector *_p_stCurrent,
|
||||
MTH_tdxReal _xAngle,
|
||||
int _iTime,
|
||||
int _iAccel
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MTH_tdxReal xActAngle, xSpeed, xTemp;
|
||||
long lTime;
|
||||
MTH3D_tdstVector stTempVector, stTempVector1;
|
||||
MTH_tdstRotation stRotation;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/* Angle already move */
|
||||
MTH3D_M_vSubVector(&stTempVector, _p_stCurrent, _p_stPointAxis);
|
||||
CAM_fn_vComputeProjection(&stTempVector, &stTempVector, _p_stAxis);
|
||||
MTH3D_M_vSubVector(&stTempVector1, _p_stSource, _p_stPointAxis);
|
||||
CAM_fn_vComputeProjection(&stTempVector1, &stTempVector1, _p_stAxis);
|
||||
|
||||
xActAngle = CAM_fn_xComputeRotation(&stTempVector1, &stTempVector, NULL);
|
||||
|
||||
/* Max speed depending on total time and distance */
|
||||
xSpeed = MTH_M_xDiv(_xAngle, MTH_M_xLongToReal(_iTime));
|
||||
|
||||
/* Time elapsed since beginning */
|
||||
lTime = g_stEngineStructure.stEngineTimer.ulCurrentTimerCount - fn_lGetActionParamlValue(5, p_SuperObjPerso);
|
||||
|
||||
/* Accel */
|
||||
if(lTime < _iAccel)
|
||||
{
|
||||
xSpeed = MTH_M_xMul(MTH_M_xDiv(xSpeed, MTH_M_xLongToReal(_iAccel)), lTime);
|
||||
}
|
||||
|
||||
/* Decel */
|
||||
if(lTime > _iTime - _iAccel)
|
||||
{
|
||||
xTemp = MTH_M_xMul(MTH_M_xLongToReal(lTime), -MTH_M_xDiv(xSpeed, MTH_M_xLongToReal(_iAccel)));
|
||||
xSpeed = MTH_M_xAdd(xTemp, MTH_M_xDiv(MTH_M_xMul(MTH_M_xLongToReal(_iTime), xSpeed), MTH_M_xFloatToReal(_iAccel)));
|
||||
}
|
||||
|
||||
/* New pos */
|
||||
MTH3D_M_vCopyVector(&stRotation.m_stAxis, _p_stAxis);
|
||||
xSpeed = MTH_M_xMul(xSpeed, fn_ulDetermineUsefulDT());
|
||||
stRotation.m_xAngle = xSpeed;
|
||||
MTH3D_M_vSubVector(&stTempVector, _p_stCurrent, _p_stPointAxis);
|
||||
MTH_p_stRotationMulVector(&stRotation, &stTempVector, _p_stSource);
|
||||
MTH3D_M_vAddVector(_p_stSource, _p_stSource, _p_stPointAxis);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
|
||||
tdstNodeInterpret *fn_p_stCamCineInit(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector;
|
||||
enum tdeMetaActionId_ eMetaActionId = M_eMetaActionIdInterpret(p_stTree-1);
|
||||
tdstGetSetParam stParam;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* No meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits |= 0x8000;
|
||||
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
switch(eMetaActionId)
|
||||
{
|
||||
case eMetaAction_CamCineMoveAToBTgtC:
|
||||
case eMetaAction_CamCineMoveAToBTgtAC:
|
||||
case eMetaAction_CamCinePosAMoveTgtBToC:
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(1, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(2, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamlValue(3, p_SuperObjPerso, M_ReturnParam_lValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamlValue(4, p_SuperObjPerso, M_ReturnParam_lValue(&stParam));
|
||||
|
||||
fn_vSetActionParamlValue(5, p_SuperObjPerso, g_stEngineStructure.stEngineTimer.ulCurrentTimerCount);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
if(eMetaActionId == eMetaAction_CamCinePosAMoveTgtBToC)
|
||||
{
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso), &stTempVector);
|
||||
/* To remember actual target */
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
}
|
||||
else
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), &stTempVector);
|
||||
break;
|
||||
|
||||
case eMetaAction_CamCinePosATgtB:
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(1, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamlValue(2, p_SuperObjPerso, M_ReturnParam_lValue(&stParam));
|
||||
|
||||
fn_vSetActionParamlValue(3, p_SuperObjPerso, g_stEngineStructure.stEngineTimer.ulCurrentTimerCount);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso), &stTempVector);
|
||||
break;
|
||||
|
||||
case eMetaAction_CamCinePosATgtBTurnPosH:
|
||||
case eMetaAction_CamCinePosATgtBTurnTgtH:
|
||||
case eMetaAction_CamCinePosATgtBTurnPosV:
|
||||
case eMetaAction_CamCinePosATgtBTurnTgtV:
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamp_stVertex(1, p_SuperObjPerso, &M_GetSetParam_stVertexValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamxValue(2, p_SuperObjPerso, M_GetSetParam_xValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamlValue(3, p_SuperObjPerso, M_ReturnParam_lValue(&stParam));
|
||||
M_EvalNextParameter(&stParam);
|
||||
fn_vSetActionParamlValue(4, p_SuperObjPerso, M_ReturnParam_lValue(&stParam));
|
||||
|
||||
fn_vSetActionParamlValue(5, p_SuperObjPerso, g_stEngineStructure.stEngineTimer.ulCurrentTimerCount);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso), &stTempVector);
|
||||
if((eMetaActionId == eMetaAction_CamCinePosATgtBTurnTgtH) || (eMetaActionId == eMetaAction_CamCinePosATgtBTurnTgtV))
|
||||
{
|
||||
/* To remember actual target */
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return p_stTree;
|
||||
}
|
||||
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
|
||||
tducActionReturn fn_ucCamCineMoveAToBTgtC(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector, stCurrentCameraPos;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), &stTempVector);
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
fnv_MoveAToB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso),
|
||||
&stTempVector,
|
||||
&stCurrentCameraPos,
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, &stTempVector);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCineMoveAToBTgtAC(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector, stTempVector1, stCurrentCameraPos;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
MTH3D_M_vSubVector(&stTempVector1, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
MTH3D_M_vAddVector(&stTempVector1, &stTempVector1, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, &stTempVector1, &stTempVector);
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
fnv_MoveAToB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso),
|
||||
&stTempVector,
|
||||
&stCurrentCameraPos,
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, &stTempVector);
|
||||
|
||||
MTH3D_M_vSubVector(&stTempVector1, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
MTH3D_M_vAddVector(&stTempVector1, &stTempVector1, &stTempVector);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, &stTempVector1, &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosATgtB(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(2, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosAMoveTgtBToC(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector, stTempVector1, stCurrentTarget;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
MTH3D_M_vSetVectorElements(&stTempVector1, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso), &stTempVector1);
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Current target */
|
||||
MTH3D_M_vCopyVector(&stCurrentTarget, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(2,p_SuperObjPerso));
|
||||
fnv_MoveAToB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso),
|
||||
&stTempVector,
|
||||
&stCurrentTarget,
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector1, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, &stTempVector, &stTempVector1);
|
||||
|
||||
/* Remember actual target */
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosATgtBTurnPosH(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector, stCurrentCameraPos, stAxis;
|
||||
POS_tdstCompletePosition *p_stPersoGlobalMatrix;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
/* Rotation axis is camera Z */
|
||||
p_stPersoGlobalMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stPersoGlobalMatrix, &stTempVector, &stTempVector, &stAxis);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
fnv_TurnAWithB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
&stTempVector,
|
||||
fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso),
|
||||
&stAxis,
|
||||
&stCurrentCameraPos,
|
||||
fn_xGetActionParamxValue(2, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, &stTempVector);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso), &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosATgtBTurnPosV(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stTempVector, stCurrentCameraPos, stAxis;
|
||||
POS_tdstCompletePosition *p_stPersoGlobalMatrix;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
/* Rotation axis is camera X */
|
||||
p_stPersoGlobalMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stPersoGlobalMatrix, &stAxis, &stTempVector, &stTempVector);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso));
|
||||
fnv_TurnAWithB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
&stTempVector,
|
||||
fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso),
|
||||
&stAxis,
|
||||
&stCurrentCameraPos,
|
||||
fn_xGetActionParamxValue(2, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
CAM_fn_vForceCameraPos(p_SuperObjPerso, &stTempVector);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso), &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosATgtBTurnTgtH(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stCurrentCameraPos, stTempVector, stTempVector1, stAxis;
|
||||
POS_tdstCompletePosition *p_stPersoGlobalMatrix;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
/* Rotation axis is camera Z */
|
||||
p_stPersoGlobalMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stPersoGlobalMatrix, &stTempVector, &stTempVector, &stAxis);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
fnv_TurnAWithB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
&stTempVector,
|
||||
&stCurrentCameraPos,
|
||||
&stAxis,
|
||||
fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso),
|
||||
fn_xGetActionParamxValue(2, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector1, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, &stTempVector, &stTempVector1);
|
||||
|
||||
/* Remember actual target */
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tducActionReturn fn_ucCamCinePosATgtBTurnTgtV(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MTH3D_tdstVector stCurrentCameraPos, stTempVector, stTempVector1, stAxis;
|
||||
POS_tdstCompletePosition *p_stPersoGlobalMatrix;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
hCineinfo = M_GetMSHandle(p_SuperObjPerso, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* Test end of meta action */
|
||||
if
|
||||
(
|
||||
g_stEngineStructure.stEngineTimer.ulCurrentTimerCount >=
|
||||
((unsigned long) fn_lGetActionParamlValue(5, p_SuperObjPerso)+(unsigned long) fn_lGetActionParamlValue(3, p_SuperObjPerso))
|
||||
)
|
||||
{
|
||||
/* Meca */
|
||||
M_GetMSHandle(p_SuperObjPerso, StandardGame)->ulCustomBits &= ~0x8000;
|
||||
return C_DefaultMetaActionFinished;
|
||||
}
|
||||
|
||||
/* Actual camera pos */
|
||||
POS_fn_vGetTranslationVector
|
||||
(
|
||||
HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso),
|
||||
&stCurrentCameraPos
|
||||
);
|
||||
|
||||
/* Rotation axis is camera X */
|
||||
p_stPersoGlobalMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(p_SuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stPersoGlobalMatrix, &stAxis, &stTempVector, &stTempVector);
|
||||
|
||||
MTH3D_M_vCopyVector(&stTempVector, fn_p_stGetActionParamp_stVertex(1,p_SuperObjPerso));
|
||||
fnv_TurnAWithB
|
||||
(
|
||||
p_SuperObjPerso,
|
||||
&stTempVector,
|
||||
&stCurrentCameraPos,
|
||||
&stAxis,
|
||||
fn_p_stGetActionParamp_stVertex(0,p_SuperObjPerso),
|
||||
fn_xGetActionParamxValue(2, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(3, p_SuperObjPerso),
|
||||
fn_lGetActionParamlValue(4, p_SuperObjPerso)
|
||||
);
|
||||
MTH3D_M_vSetVectorElements(&stTempVector1, MTH_C_ZERO, MTH_C_ZERO, MTH_C_ONE);
|
||||
CAM_fn_vForceCameraTgt(p_SuperObjPerso, &stTempVector, &stTempVector1);
|
||||
|
||||
/* Remember actual target */
|
||||
fn_vSetActionParamp_stVertex(0, p_SuperObjPerso, &stTempVector);
|
||||
|
||||
return C_DefaultMetaActionNotFinished;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
1773
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Base.c
Normal file
1773
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Base.c
Normal file
File diff suppressed because it is too large
Load Diff
111
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Base.h
Normal file
111
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Base.h
Normal file
@@ -0,0 +1,111 @@
|
||||
#ifndef __CAM_BASE_H__
|
||||
#define __CAM_BASE_H__
|
||||
|
||||
extern char cLastCutAngleSens;
|
||||
extern char cJustBetterPos;
|
||||
|
||||
/*
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structure to update position of camera.
|
||||
* The fileds of that structure are passed to meca parsing.
|
||||
*/
|
||||
typedef struct CAM_tdstComputedPosition_
|
||||
{
|
||||
MTH3D_tdstVector stTarget;
|
||||
MTH3D_tdstVector stMovePos;
|
||||
MTH3D_tdstVector stRefAxisZ;
|
||||
MTH_tdxReal xLinearSpeed;
|
||||
MTH_tdxReal xAngularSpeed;
|
||||
MTH_tdxReal xTargetSpeed;
|
||||
} CAM_tdstComputedPosition;
|
||||
|
||||
/*
|
||||
* Structure to use for update actions of camera.
|
||||
*/
|
||||
typedef struct CAM_tdstUpdateCamera_
|
||||
{
|
||||
DNM_tdstReport *p_stReport;
|
||||
DNM_tdstDynamics *p_stDynamics;
|
||||
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
MS_tdxHandleToInternalCineinfo hCineinfoWork;
|
||||
MS_tdxHandleToInternalCineinfo hCineinfoCurrent;
|
||||
MS_tdxHandleToInternalCineinfo hCineinfoInit;
|
||||
MS_tdxHandleToInternalCineinfo hCineinfoVisibility;
|
||||
|
||||
HIE_tdxHandleToSuperObject hSuperObjCamera;
|
||||
|
||||
MTH3D_tdstVector stCurrentCameraPos;
|
||||
MTH3D_tdstVector stWantedCameraPos;
|
||||
MTH3D_tdstVector stRealWantedCameraPos;
|
||||
|
||||
MTH3D_tdstVector stTargetedPersoRealPos;
|
||||
MTH3D_tdstVector stTargetedPersoPos;
|
||||
MTH3D_tdstVector stSecondTargetedPersoRealPos;
|
||||
MTH3D_tdstVector stSecondTargetedPersoPos;
|
||||
|
||||
char cHasCutAlpha;
|
||||
MTH_tdxReal xAngleAlphaCut;
|
||||
MTH_tdxReal xAngleDeltaAlphaCut;
|
||||
|
||||
char cTgtPersoIsMovingAbsolute;
|
||||
MTH3D_tdstVector stTgtPersoMoveAbsolute;
|
||||
char cTgtPersoIsMovingRelative;
|
||||
MTH3D_tdstVector stTgtPersoMoveRelative;
|
||||
|
||||
CAM_tdstComputedPosition stCptPos;
|
||||
} CAM_tdstUpdateCamera;
|
||||
|
||||
/*
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*/
|
||||
|
||||
#define CONSTANT_CUT_COL (CAM_g_stCameraConstants.wFlags & 0x0001)
|
||||
#define CONSTANT_RESETTEMP (CAM_g_stCameraConstants.wFlags & 0x0002)
|
||||
#define CONSTANT_FORCEBESTPOS (CAM_g_stCameraConstants.wFlags & 0x0004)
|
||||
#define CONSTANT_NOVISPROJ (CAM_g_stCameraConstants.wFlags & 0x0008)
|
||||
#define CONSTANT_NORMALIFJOIN (CAM_g_stCameraConstants.wFlags & 0x0010)
|
||||
#define CONSTANT_NOBETTERPOS (CAM_g_stCameraConstants.wFlags & 0x0020)
|
||||
#define CONSTANT_NODISTVIS (CAM_g_stCameraConstants.wFlags & 0x0040)
|
||||
|
||||
/*
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
extern void CAM_fn_vComputeRefAxis(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeTargetedPersoPos(CAM_tdstUpdateCamera *, HIE_tdxHandleToSuperObject, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeReferencePoint(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vDynChangeTarget(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeTarget(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vBoundAngleWithTolerance(CAM_tdstUpdateCamera *, MTH_tdxReal *, MTH_tdxReal *, MTH_tdxReal *, MTH_tdxReal, MTH_tdxReal);
|
||||
extern void CAM_fn_vComputeCameraAxisAngles(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal *, MTH_tdxReal *);
|
||||
extern void CAM_fn_vRotateCameraAxis( MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeRealWantedPos(CAM_tdstUpdateCamera *);
|
||||
extern char CAM_fn_cDynChangeTheta(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vTakeCareOfCameraAltitude(MS_tdxHandleToCineinfo, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeMovePos(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vComputeMovePosWithDynTheta(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vComputeSpeed(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vConstraintMoveAfterVisFailure(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vConstraintMove(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vUpdateGeneralCamera(CAM_tdstUpdateCamera *);
|
||||
|
||||
#endif /* __CAM_BASE_H__ */
|
184
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Cond.c
Normal file
184
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Cond.c
Normal file
@@ -0,0 +1,184 @@
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
#define D_CineInfo_StructureDefine
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Intell.h"
|
||||
#include "StrIntel.h"
|
||||
#include "AI_Struc.h"
|
||||
#include "EnumCond.h"
|
||||
|
||||
#include "Operator.h"
|
||||
|
||||
#include "Convert.h"
|
||||
|
||||
#include "CAM_Base.h"
|
||||
#include "CAM_Tool.h"
|
||||
#include "CAM_Vis.h"
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Is ... ?
|
||||
*=================================================================================================
|
||||
*/
|
||||
|
||||
tdstNodeInterpret *CAM_fn_p_stIs(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
MS_tdxHandleToInternalCineinfo hIntCineInfo;
|
||||
tdstGetSetParam stValue;
|
||||
long lCurrentValue;
|
||||
long lViewport;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
M_EvalNextParameter(&stValue);
|
||||
lCurrentValue = M_GetSetParam_lValue(&stValue);
|
||||
|
||||
if (lCurrentValue == 1)
|
||||
{
|
||||
if (hCineInfo->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||||
{
|
||||
hIntCineInfo = hCineInfo->hWork;
|
||||
}
|
||||
else
|
||||
{
|
||||
hIntCineInfo = hCineInfo->hCurrent;
|
||||
}
|
||||
}
|
||||
else if(lCurrentValue == -1)
|
||||
{
|
||||
hIntCineInfo = hCineInfo->hInit;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hCineInfo->ucPerIAFlags & C_PerIAFlags_VisibilityCopied)
|
||||
hIntCineInfo = hCineInfo->hVisibility;
|
||||
else
|
||||
hIntCineInfo = hCineInfo->hCurrent;
|
||||
}
|
||||
|
||||
switch (eCondId)
|
||||
{
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsActive :
|
||||
*p_lValue=(long) hIntCineInfo->bIsActive;
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsViewportOwner :
|
||||
M_EvalNextParameter(&stValue);
|
||||
lViewport = M_GetSetParam_lValue(&stValue);
|
||||
*p_lValue=(long) (lViewport == (long) hIntCineInfo->eTypeOfViewport);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoDynamicTarget :
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoDynamicTarget);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoAverageMoveTgtPerso:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoAverageMoveTgtPerso);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoParseCutAngle :
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoParseCutAngle);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoVisibility :
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoVisibility);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoVisibilityWithDynHie :
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoVisibilityWithDynHie);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoDynChangeTheta :
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoDynChangeTheta);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoShiftUntilPosReached:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoShiftUntilPosReached);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoDynSpeed:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_NoDynSpeed);
|
||||
return(p_stTree);
|
||||
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
|
||||
case eCond_Cam_IsFlagNoLinearParsing :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoLinearParsing);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoLinearInertia :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoLinearInertia);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoAngularParsing :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoAngularParsing);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoAngularInertia :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoAngularInertia);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoTargetParsing :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoTargetParsing);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoTargetInertia :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoTargetInertia);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagNoObstacle:
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_NoObstacle);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagFixedOrientation :
|
||||
*p_lValue=(long) (hIntCineInfo->uwDNMFlags & DNM_CAM_C_FixedOrientation);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagForcedTarget:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_TargetIsAlreadyComputed);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eCond_Cam_IsFlagForcedAxis:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_RefAxisIsAlreadyComputed);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
case eCond_Cam_IsFlagForcedPosition:
|
||||
*p_lValue=(long) (hIntCineInfo->uwIAFlags & C_IAFlags_PositionIsAlreadyComputed);
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
M_AIFatalError(E_uwAIFatalNotValidCondition);
|
||||
return p_stTree;
|
||||
}
|
850
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Fnct.c
Normal file
850
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Fnct.c
Normal file
@@ -0,0 +1,850 @@
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
#define D_CineInfo_StructureDefine
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Intell.h"
|
||||
#include "StrIntel.h"
|
||||
#include "AI_Struc.h"
|
||||
#include "EnumFunc.h"
|
||||
|
||||
#include "Operator.h"
|
||||
|
||||
#include "Convert.h"
|
||||
|
||||
#include "CAM_Base.h"
|
||||
#include "CAM_Tool.h"
|
||||
#include "Cam_Vis.h"
|
||||
|
||||
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* To retrieve a real.
|
||||
* _lCurrentValue : -1 Initial
|
||||
* 0 Actual current (current or visibility)
|
||||
* 1 The actual one (current or work)
|
||||
*=================================================================================================
|
||||
*/
|
||||
MTH_tdxReal CAM_fn_xGetARealParameter
|
||||
(
|
||||
MS_tdxHandleToCineinfo _hCineInfo,
|
||||
MTH_tdxReal *_p_xInitialValue,
|
||||
MTH_tdxReal *_p_xCurrentValue,
|
||||
MTH_tdxReal *_p_xWorkValue,
|
||||
MTH_tdxReal *_p_xVisValue,
|
||||
long _lCurrentValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MTH_tdxReal xValue = MTH_C_ZERO;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
if (_lCurrentValue == 1)
|
||||
{
|
||||
if (_hCineInfo->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||||
xValue = *_p_xWorkValue;
|
||||
else
|
||||
xValue = *_p_xCurrentValue;
|
||||
}
|
||||
else if (_lCurrentValue == -1)
|
||||
{
|
||||
xValue = *_p_xInitialValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_hCineInfo->ucPerIAFlags & C_PerIAFlags_VisibilityCopied)
|
||||
xValue = *_p_xVisValue;
|
||||
else
|
||||
xValue = *_p_xCurrentValue;
|
||||
}
|
||||
|
||||
return xValue;
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* To retrieve a vector.
|
||||
* _lCurrentValue : -1 Initial
|
||||
* 0 Actual current (current or visibility)
|
||||
* 1 The actual one (current or work)
|
||||
*=================================================================================================
|
||||
*/
|
||||
MTH3D_tdstVector *CAM_fn_p_stGetAVectorParameter
|
||||
(
|
||||
MS_tdxHandleToCineinfo _hCineInfo,
|
||||
MTH3D_tdstVector *_p_stInitialValue,
|
||||
MTH3D_tdstVector *_p_stCurrentValue,
|
||||
MTH3D_tdstVector *_p_stWorkValue,
|
||||
MTH3D_tdstVector *_p_stVisValue,
|
||||
long _lCurrentValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
MTH3D_tdstVector *p_stValue = NULL;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
if (_lCurrentValue == 1)
|
||||
{
|
||||
if (_hCineInfo->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||||
p_stValue = _p_stWorkValue;
|
||||
else
|
||||
p_stValue = _p_stCurrentValue;
|
||||
}
|
||||
else if (_lCurrentValue == -1)
|
||||
{
|
||||
p_stValue = _p_stInitialValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_hCineInfo->ucPerIAFlags & C_PerIAFlags_VisibilityCopied)
|
||||
p_stValue = _p_stVisValue;
|
||||
else
|
||||
p_stValue = _p_stCurrentValue;
|
||||
}
|
||||
|
||||
return p_stValue;
|
||||
}
|
||||
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get a vector parameter.
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetVectorParameter(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
long lCurrentValue;
|
||||
MTH3D_tdstVector *p_stInitialValue = NULL;
|
||||
MTH3D_tdstVector *p_stCurrentValue = NULL;
|
||||
MTH3D_tdstVector *p_stWorkValue = NULL;
|
||||
MTH3D_tdstVector *p_stVisValue = NULL;
|
||||
enum tdeFuncId_ eFuncId = M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
M_EvalNextParameter(p_stValue);
|
||||
lCurrentValue = M_GetSetParam_lValue(p_stValue);
|
||||
|
||||
switch(eFuncId)
|
||||
{
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetShiftTarget:
|
||||
p_stInitialValue = &(hCineInfo->hInit->stShiftTarget);
|
||||
p_stCurrentValue = &(hCineInfo->hCurrent->stShiftTarget);
|
||||
p_stWorkValue = &(hCineInfo->hWork->stShiftTarget);
|
||||
p_stVisValue = &(hCineInfo->hVisibility->stShiftTarget);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetShiftPos:
|
||||
p_stInitialValue = &(hCineInfo->hInit->stShiftPos);
|
||||
p_stCurrentValue = &(hCineInfo->hCurrent->stShiftPos);
|
||||
p_stWorkValue = &(hCineInfo->hWork->stShiftPos);
|
||||
p_stVisValue = &(hCineInfo->hVisibility->stShiftPos);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
CAM_fn_p_stGetAVectorParameter
|
||||
(
|
||||
hCineInfo,
|
||||
p_stInitialValue,
|
||||
p_stCurrentValue,
|
||||
p_stWorkValue,
|
||||
p_stVisValue,
|
||||
lCurrentValue
|
||||
)
|
||||
);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get a Real Parameter.
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetRealParameter(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
long lCurrentValue;
|
||||
MTH_tdxReal *p_xInitialValue = NULL;
|
||||
MTH_tdxReal *p_xCurrentValue = NULL;
|
||||
MTH_tdxReal *p_xWorkValue = NULL;
|
||||
MTH_tdxReal *p_xVisValue = NULL;
|
||||
enum tdeFuncId_ eFuncId = M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
M_EvalNextParameter(p_stValue);
|
||||
lCurrentValue = M_GetSetParam_lValue(p_stValue);
|
||||
|
||||
switch(eFuncId)
|
||||
{
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetDistMin :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xDistMin);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xDistMin);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xDistMin);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xDistMin);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetDistMax :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xDistMax);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xDistMax);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xDistMax);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xDistMax);
|
||||
break;
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetBoundDistMin :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xBoundDistMin);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xBoundDistMin);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xBoundDistMin);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xBoundDistMin);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetBoundDistMax :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xBoundDistMax);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xBoundDistMax);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xBoundDistMax);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xBoundDistMax);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngleAlpha :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngleAlpha);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngleAlpha);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngleAlpha);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngleAlpha);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngleShiftAlpha :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngleShiftAlpha);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngleShiftAlpha);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngleShiftAlpha);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngleShiftAlpha);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngleTheta :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngleTheta);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngleTheta);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngleTheta);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngleTheta);
|
||||
break;
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngleShiftTheta :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngleShiftTheta);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngleShiftTheta);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngleShiftTheta);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngleShiftTheta);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetLinearSpeed:
|
||||
p_xInitialValue = &(hCineInfo->hInit->xLinearSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xLinearSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xLinearSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xLinearSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetLinearIncreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xLinearIncreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xLinearIncreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xLinearIncreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xLinearIncreaseSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetLinearDecreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xLinearDecreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xLinearDecreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xLinearDecreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xLinearDecreaseSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngularSpeed:
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngularSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngularSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngularSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngularSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngularIncreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngularIncreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngularIncreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngularIncreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngularIncreaseSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetAngularDecreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xAngularDecreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xAngularDecreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xAngularDecreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xAngularDecreaseSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetTargetSpeed:
|
||||
p_xInitialValue = &(hCineInfo->hInit->xTargetSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xTargetSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xTargetSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xTargetSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetTargetIncreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xTargetIncreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xTargetIncreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xTargetIncreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xTargetIncreaseSpeed);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetTargetDecreaseSpeed :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xTargetDecreaseSpeed);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xTargetDecreaseSpeed);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xTargetDecreaseSpeed);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xTargetDecreaseSpeed);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetFocal :
|
||||
p_xInitialValue = &(hCineInfo->hInit->xFocal);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xFocal);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xFocal);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xFocal);
|
||||
break;
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetZMin:
|
||||
p_xInitialValue = &(hCineInfo->hInit->xZMin);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xZMin);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xZMin);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xZMin);
|
||||
break;
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetZMax:
|
||||
p_xInitialValue = &(hCineInfo->hInit->xZMax);
|
||||
p_xCurrentValue = &(hCineInfo->hCurrent->xZMax);
|
||||
p_xWorkValue = &(hCineInfo->hWork->xZMax);
|
||||
p_xVisValue = &(hCineInfo->hVisibility->xZMax);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_Float
|
||||
(
|
||||
p_stValue,
|
||||
CAM_fn_xGetARealParameter
|
||||
(
|
||||
hCineInfo,
|
||||
p_xInitialValue,
|
||||
p_xCurrentValue,
|
||||
p_xWorkValue,
|
||||
p_xVisValue,
|
||||
lCurrentValue
|
||||
)
|
||||
);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get Super Object Targeted.
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetTargetedSuperObject
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
HIE_tdxHandleToSuperObject hSuperObjectTargeted;
|
||||
long lCurrentValue;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
M_EvalNextParameter(p_stValue);
|
||||
lCurrentValue = M_GetSetParam_lValue(p_stValue);
|
||||
|
||||
if (lCurrentValue == 1)
|
||||
{
|
||||
if (hCineInfo->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||||
hSuperObjectTargeted = hCineInfo->hWork->hSuperObjectTargeted;
|
||||
else
|
||||
hSuperObjectTargeted = hCineInfo->hCurrent->hSuperObjectTargeted;
|
||||
}
|
||||
else if(lCurrentValue == -1)
|
||||
{
|
||||
hSuperObjectTargeted = hCineInfo->hInit->hSuperObjectTargeted;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hCineInfo->ucPerIAFlags & C_PerIAFlags_VisibilityCopied)
|
||||
hSuperObjectTargeted = hCineInfo->hVisibility->hSuperObjectTargeted;
|
||||
else
|
||||
hSuperObjectTargeted = hCineInfo->hCurrent->hSuperObjectTargeted;
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_Perso
|
||||
(
|
||||
p_stValue,
|
||||
hSuperObjectTargeted
|
||||
);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get Type of Viewport.
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetTypeOfViewport
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
long lTypeOfViewport;
|
||||
long lCurrentValue;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
M_EvalNextParameter(p_stValue);
|
||||
lCurrentValue = M_GetSetParam_lValue(p_stValue);
|
||||
|
||||
if (lCurrentValue == 1)
|
||||
{
|
||||
if (hCineInfo->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||||
lTypeOfViewport = (long)(hCineInfo->hWork->eTypeOfViewport);
|
||||
else
|
||||
lTypeOfViewport = (long)(hCineInfo->hCurrent->eTypeOfViewport);
|
||||
}
|
||||
else if(lCurrentValue == -1)
|
||||
{
|
||||
lTypeOfViewport = (long)(hCineInfo->hInit->eTypeOfViewport);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hCineInfo->ucPerIAFlags & C_PerIAFlags_VisibilityCopied)
|
||||
lTypeOfViewport = (long)(hCineInfo->hVisibility->eTypeOfViewport);
|
||||
else
|
||||
lTypeOfViewport = (long)(hCineInfo->hCurrent->eTypeOfViewport);
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_Integer
|
||||
(
|
||||
p_stValue,
|
||||
lTypeOfViewport
|
||||
);
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get camera type in current camera sector.
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetSectorCameraType
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
long lType;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
MS_tdxHandleToSectInfo hCamCineinfo;
|
||||
HIE_tdxHandleToSuperObject hCurrentSectorCamera;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCamCineinfo = M_GetMSHandle(hCamera, SectInfo);
|
||||
hCurrentSectorCamera = fn_h_SectInfoGetCurrentSector(hCamCineinfo);
|
||||
|
||||
lType = (long) fn_cGetSectorCameraType(hCurrentSectorCamera);
|
||||
M_Full_GetSetParam_Integer
|
||||
(
|
||||
p_stValue,
|
||||
lType
|
||||
);
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get the camera handle
|
||||
* Parameter :
|
||||
* Constant : Viewport number (1 : Main Viewport, ...)
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *CAM_fn_p_stGetCameraOfViewport
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
enum tdeFuncId_ eFuncId = M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
p_SuperObjPerso =p_SuperObjPerso;
|
||||
switch(eFuncId)
|
||||
{
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetCameraOfViewport :
|
||||
M_EvalNextParameter(p_stValue);
|
||||
M_Full_GetSetParam_Perso(p_stValue, CAM_fn_hGetActiveCamera(M_GetSetParam_lValue(p_stValue)));
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
case eFct_Cam_GetMainCamera :
|
||||
M_Full_GetSetParam_Perso(p_stValue, CAM_fn_hGetActiveCamera(CAM_e_MainViewport));
|
||||
return(p_stTree);
|
||||
/*---------------------------------------------------------------------------------------*/
|
||||
default :
|
||||
break;
|
||||
}
|
||||
M_AIFatalError(E_uwAIFatalNotValidFunction);
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
|
||||
/*
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
**************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Compute the target
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *CAM_fn_p_stComputeTargetWithTgtPerso
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
CAM_tdstUpdateCamera stStruct;
|
||||
enum tdeFuncId_ eFuncId = M_eFuncIdInterpret(p_stTree-1);
|
||||
unsigned short uwMemoFlags;
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Else we copy current to work (basic function to compute target took their
|
||||
* parameters in work cineinfo) and initialise a temporary structure.
|
||||
*/
|
||||
CAM_fn_vSetCineinfoWorkFromCurrent(hCineInfo);
|
||||
CAM_fn_vInitCameraStructure(hCamera, &stStruct);
|
||||
|
||||
/*
|
||||
* If no perso, no target...
|
||||
*/
|
||||
if(stStruct.hCineinfoCurrent->hSuperObjectTargeted == NULL)
|
||||
{
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
NULL
|
||||
);
|
||||
return (p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
* We doesn't want dynamic target, and we inhibit force target to force
|
||||
* function to compute target with the targeted perso.
|
||||
*/
|
||||
uwMemoFlags = stStruct.hCineinfoWork->uwIAFlags;
|
||||
stStruct.hCineinfoWork->uwIAFlags |= C_IAFlags_NoDynamicTarget;
|
||||
stStruct.hCineinfoWork->uwIAFlags &= ~C_IAFlags_TargetIsAlreadyComputed;
|
||||
|
||||
/*
|
||||
* Compute target.
|
||||
*/
|
||||
CAM_fn_vComputeReferencePoint(&stStruct);
|
||||
CAM_fn_vComputeTarget(&stStruct);
|
||||
|
||||
/*
|
||||
* Restore flags.
|
||||
*/
|
||||
stStruct.hCineinfoWork->uwIAFlags = uwMemoFlags;
|
||||
|
||||
/*
|
||||
* Return value.
|
||||
*/
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
&stStruct.stCptPos.stTarget
|
||||
);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get the current target Position
|
||||
* No Parameter.
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *CAM_fn_p_stComputeCurrentTarget
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineInfo;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
DNM_tdstParsingDatas *p_stParsingDatas;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineInfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineInfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(hCamera, Dynam)) == NULL )
|
||||
return (p_stTree);
|
||||
if((p_stParsingDatas = fn_p_stDynamGetParsingDatas(h_Dynam)) == NULL)
|
||||
return (p_stTree);
|
||||
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
DNM_M_p_stCPDGetTarget(p_stParsingDatas)
|
||||
);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get the best pos for a camera.
|
||||
* No Parameter.
|
||||
*=================================================================================================
|
||||
*/
|
||||
extern char cRefAxisIsAlreadyComputed;
|
||||
extern char cNoDynChangeTheta;
|
||||
extern char cCanTestStatic;
|
||||
tdstNodeInterpret *CAM_fn_p_stGetBestPos
|
||||
(
|
||||
HIE_tdxHandleToSuperObject p_SuperObjPerso,
|
||||
tdstNodeInterpret *p_stTree,
|
||||
tdstGetSetParam *p_stValue
|
||||
)
|
||||
{
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
HIE_tdxHandleToSuperObject hCamera;
|
||||
MS_tdxHandleToCineinfo hCineinfo;
|
||||
CAM_tdstUpdateCamera stStruct;
|
||||
MTH3D_tdstVector stVec;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hCamera);
|
||||
/********************************************************************************/
|
||||
|
||||
hCineinfo = M_GetMSHandle(hCamera, Cineinfo);
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (hCineinfo == NULL)
|
||||
M_AIFatalError(E_uwAIFatalNotMSCamera);
|
||||
#endif
|
||||
|
||||
/* ANNECY MT - 12/07/99 { */
|
||||
if (!hCineinfo->bCanDoBestPos)
|
||||
{
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
&(hCamera->hGlobalMatrix->stTranslationVector)
|
||||
);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
/* END ANNECY MT } */
|
||||
|
||||
/*
|
||||
* To have the actual good camera parameters.
|
||||
*/
|
||||
CAM_fn_vSetCineinfoWorkFromCurrent(hCineinfo);
|
||||
CAM_fn_vInitCameraStructure(hCamera, &stStruct);
|
||||
|
||||
cRefAxisIsAlreadyComputed = stStruct.hCineinfoWork->uwIAFlags & C_IAFlags_RefAxisIsAlreadyComputed ? 1 : 0;
|
||||
cNoDynChangeTheta = stStruct.hCineinfoWork->uwIAFlags & C_IAFlags_NoDynChangeTheta ? 1 : 0;
|
||||
cCanTestStatic = 1;
|
||||
|
||||
/*
|
||||
* Compute target and real wanted camera pos (this is necessary
|
||||
* for failure when we want a more correct position.
|
||||
*/
|
||||
CAM_fn_vComputeReferencePoint(&stStruct);
|
||||
CAM_fn_vComputeTarget(&stStruct);
|
||||
CAM_fn_vComputeRealWantedPos(&stStruct);
|
||||
CAM_fn_vComputeMovePosWithDynTheta(&stStruct);
|
||||
|
||||
/*
|
||||
* If no perso, can't do it.
|
||||
*/
|
||||
if(stStruct.hCineinfoCurrent->hSuperObjectTargeted == NULL)
|
||||
return(p_stTree);
|
||||
|
||||
/*
|
||||
* Force visibility failure.
|
||||
*/
|
||||
CAM_fn_vForceFailureVisibility(&stStruct);
|
||||
if(stStruct.hCineinfo->eState == CAM_e_State_FailureVisibility)
|
||||
{
|
||||
MTH3D_M_vCopyVector(&stVec, &stStruct.hCineinfo->stLastFailedWanted);
|
||||
/* ANNECY MT - 12/07/99 { */
|
||||
hCineinfo->bCanDoBestPos = FALSE;
|
||||
/* END ANNECY MT } */
|
||||
}
|
||||
else
|
||||
{
|
||||
MTH3D_M_vNullVector(&stVec);
|
||||
}
|
||||
stStruct.hCineinfo->eState = CAM_e_State_GoToOptimal;
|
||||
|
||||
M_Full_GetSetParam_p_stVertex
|
||||
(
|
||||
p_stValue,
|
||||
&stVec
|
||||
);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
2184
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Proc.c
Normal file
2184
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Proc.c
Normal file
File diff suppressed because it is too large
Load Diff
1054
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Tool.c
Normal file
1054
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Tool.c
Normal file
File diff suppressed because it is too large
Load Diff
50
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Tool.h
Normal file
50
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Tool.h
Normal file
@@ -0,0 +1,50 @@
|
||||
#ifndef __CAM_TOOL_H__
|
||||
#define __CAM_TOOL_H__
|
||||
/*
|
||||
#undef EXTERN
|
||||
#undef extern
|
||||
#if !defined(D_StdGame_VariableDefine)
|
||||
#define EXTERN extern
|
||||
#else
|
||||
#define EXTERN
|
||||
#endif*/ /* D_StdGame_VariableDefine */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
extern void CAM_fn_vSetResetInternalFlag(MS_tdxHandleToCineinfo,unsigned short *,unsigned short *,unsigned short *,long,long,unsigned short);
|
||||
|
||||
extern void CAM_fn_vForceCameraPos(HIE_tdxHandleToSuperObject, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vForceCameraTgt(HIE_tdxHandleToSuperObject, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
|
||||
extern ACP_tdxBool CAM_fn_bPersoIsMoving(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern ACP_tdxBool CAM_fn_bPersoIsTurning(HIE_tdxHandleToSuperObject, MTH_tdxReal *);
|
||||
extern ACP_tdxBool CAM_fn_bPersoOnFace(HIE_tdxHandleToSuperObject, MTH3D_tdstVector *);
|
||||
extern CPA_EXPORT HIE_tdxHandleToSuperObject CAM_fn_hGetFather(HIE_tdxHandleToSuperObject);
|
||||
|
||||
extern void CAM_fn_vComputeProjection(MTH3D_tdstVector *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern MTH_tdxReal CAM_fn_xComputeRotation(MTH3D_tdstVector *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern ACP_tdxBool CAM_fn_bEqualVectorWithEpsilon(MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal);
|
||||
extern ACP_tdxBool CAM_fn_bPositionIsReached(HIE_tdxHandleToSuperObject, MTH3D_tdstVector *, MTH_tdxReal, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeAnglesBetweenTwoVectors(MS_tdxHandleToInternalCineinfo, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal *, MTH_tdxReal *, MTH3D_tdstVector *);
|
||||
extern MTH_tdxReal CAM_fn_xSetAngleInIntervalPiPi(MTH_tdxReal);
|
||||
extern MTH_tdxReal CAM_fn_xSetAngleInInterval02Pi(MTH_tdxReal);
|
||||
|
||||
extern void CAM_fn_vGetPersoSightAxis(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
|
||||
extern void CAM_fn_vInitCameraStructure(HIE_tdxHandleToSuperObject, CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vSendParametersToParsing(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void Cam_fn_vComputeMovingOnRail(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal);
|
||||
extern MTH_tdxReal Cam_fn_xComputeProjectionRail(MTH3D_tdstVector *,MTH3D_tdstVector *,MTH3D_tdstVector *);
|
||||
|
||||
extern CPA_EXPORT void CAM_fn_vForceBestPosition(HIE_tdxHandleToSuperObject _hCamera);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __CAM_TOOL_H__ */
|
1837
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Vis.c
Normal file
1837
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Vis.c
Normal file
File diff suppressed because it is too large
Load Diff
56
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Vis.h
Normal file
56
Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Vis.h
Normal file
@@ -0,0 +1,56 @@
|
||||
#ifndef __CAM_VIS_H__
|
||||
#define __CAM_VIS_H__
|
||||
|
||||
/*
|
||||
* For _cMode.
|
||||
*/
|
||||
#define C_mode_MUSTSEE 1
|
||||
#define C_mode_MUSTGO 2
|
||||
#define C_mode_FAILURE 4
|
||||
#define C_mode_MORE_CORRECT 8
|
||||
|
||||
/*
|
||||
* For cCantTest
|
||||
*/
|
||||
#define C_cantest_NOTEST_NORMAL 0
|
||||
#define C_cantest_TEST_NORMAL 1
|
||||
|
||||
/*------------------------------------------------------------------------------------------*/
|
||||
|
||||
extern struct tdstInternalStructurCineinfo_ gst_Ideal;
|
||||
|
||||
/*------------------------------------------------------------------------------------------*/
|
||||
|
||||
extern char CAM_fn_cIsSectorInCollisionList(HIE_tdxHandleToSuperObject, HIE_tdxHandleToSuperObject);
|
||||
extern char CAM_fn_cSendSegmentInDynamicWorld(MTH3D_tdstVector *, MTH3D_tdstVector *, HIE_tdxHandleToSuperObject, HIE_tdxHandleToSuperObject);
|
||||
extern char CAM_fn_cSendSegment(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern char CAM_fn_cSendMultiSegment(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, long);
|
||||
|
||||
extern char CAM_fn_cCameraCantGo(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern char CAM_fn_cCameraCantSee(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
|
||||
extern char CAM_fn_cIsWantedPosIncorrect(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, char);
|
||||
|
||||
extern MTH_tdxReal CAM_fnx_ComputePosPound(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern char CAM_fnc_IsDirectionCorrect(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, char);
|
||||
extern void CAM_fn_vFillVectorArray(CAM_tdstUpdateCamera *, char);
|
||||
|
||||
extern int CAM_fni_ComparePosition(void *_pv_Elem1, void *_pv_Elem2);
|
||||
extern char CAM_fn_cFindCorrectPosWithDir(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, char);
|
||||
extern char CAM_fn_cFindNewGoodIdealPos(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, char);
|
||||
|
||||
extern void CAM_fn_vForceFailureVisibility(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vComputeFailureVisibility(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vTestBadDistance(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vTestBadVisibility(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vTestOppositeCollision(CAM_tdstUpdateCamera *);
|
||||
|
||||
extern void CAM_fn_vComputeCineinfoWorkForAPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vComputeCineinfoCurrentForAPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vMakeAsNewIdealPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
|
||||
extern char CAM_fn_cCanResetConstraintMoveVisFailure(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
|
||||
extern void CAM_fn_vRestoreNormalState(CAM_tdstUpdateCamera *);
|
||||
extern void CAM_fn_vCheckForABetterPos(CAM_tdstUpdateCamera *);
|
||||
|
||||
#endif /* __CAM_VIS_H__ */
|
1791
Rayman_X/cpa/tempgrp/AI/AIGame/Cond.c
Normal file
1791
Rayman_X/cpa/tempgrp/AI/AIGame/Cond.c
Normal file
File diff suppressed because it is too large
Load Diff
26
Rayman_X/cpa/tempgrp/AI/AIGame/Cond.h
Normal file
26
Rayman_X/cpa/tempgrp/AI/AIGame/Cond.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Cond.h : Definition of general Condition.*/
|
||||
/* auteur : Olivier Didelot.*/
|
||||
/* date : 07/10/1996*/
|
||||
/* 970130 : O.C. conditions and keywords tables + beginning of Lint verification*/
|
||||
/* modify : Olivier Couvreur*/
|
||||
/* date : 18/02/1997 CPA_EXPORT + new functions for editor*/
|
||||
/* modify : Olivier Couvreur*/
|
||||
/* date : 21/02/1997 Add <= , >= conditions and some keywords for editor*/
|
||||
/* modify : Olivier Couvreur*/
|
||||
/* date : 03/04/1997 new button conditions*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__CONDITION_H__)
|
||||
#define __CONDITION_H__
|
||||
|
||||
|
||||
|
||||
ACP_tdxBool fn_bCanSwim(HIE_tdxHandleToSuperObject p_SuperObjPerso);
|
||||
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitConditionEntries(void);
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#endif /* __CONDITION_H__*/
|
941
Rayman_X/cpa/tempgrp/AI/AIGame/Cond1.cxx
Normal file
941
Rayman_X/cpa/tempgrp/AI/AIGame/Cond1.cxx
Normal file
@@ -0,0 +1,941 @@
|
||||
/* Private functions */
|
||||
/*
|
||||
BOOL fn_bIsObstacleTypeOfGMT(HIE_tdxHandleToSuperObject p_SuperObjPerso, GMT_tdxMask xTestMask)
|
||||
{
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
|
||||
if ((p_stDynamReport = fn_pstGetDNMReport(p_SuperObjPerso)) == NULL)
|
||||
return FALSE;
|
||||
return fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetObstacle(p_stDynamReport)), xTestMask);
|
||||
}
|
||||
|
||||
BOOL fn_bIsWallTypeOfGMT(HIE_tdxHandleToSuperObject p_SuperObjPerso, GMT_tdxMask xTestMask)
|
||||
{
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
|
||||
if ((p_stDynamReport = fn_pstGetDNMReport(p_SuperObjPerso)) == NULL)
|
||||
return FALSE;
|
||||
return fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetWall(p_stDynamReport)), xTestMask);
|
||||
}
|
||||
|
||||
BOOL fn_bIsGroundTypeOfGMT(HIE_tdxHandleToSuperObject p_SuperObjPerso, GMT_tdxMask xTestMask)
|
||||
{
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
|
||||
if ((p_stDynamReport = fn_pstGetDNMReport(p_SuperObjPerso)) == NULL)
|
||||
return FALSE;
|
||||
return fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetGround(p_stDynamReport)), xTestMask);
|
||||
}
|
||||
|
||||
BOOL fn_bIsCeilingTypeOfGMT(HIE_tdxHandleToSuperObject p_SuperObjPerso, GMT_tdxMask xTestMask)
|
||||
{
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
|
||||
if ((p_stDynamReport = fn_pstGetDNMReport(p_SuperObjPerso)) == NULL)
|
||||
return FALSE;
|
||||
return fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetCeil(p_stDynamReport)), xTestMask);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/******************************************************************
|
||||
* Condition : ZDMCollideWithObstacle *
|
||||
* Use : ZDMCollisionAvecObstacle ("Type de mat<61>riau") *
|
||||
* Use for : Return the collide type with OBSTACLES *
|
||||
* Author : Jacques Th<54>noz *
|
||||
* Date of last modification: 31/10/97 *
|
||||
******************************************************************/
|
||||
tdstNodeInterpret *fn_p_stZDMCollideWithObstacle(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
GMT_tdxMask xTestMask;
|
||||
unsigned long ulSurfState;
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
|
||||
enum tdeCondId_ eCondId=M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
|
||||
if ((p_stDynamReport=fn_pstGetDNMReport(p_SuperObjPerso))==NULL)
|
||||
{
|
||||
*p_lValue = (long)FALSE;
|
||||
return p_stTree;
|
||||
}
|
||||
|
||||
ulSurfState = DNM_M_ulReportGetSurfaceState(p_stDynamReport);
|
||||
|
||||
xTestMask = (GMT_tdxMask) M_GetSetParam_xMaskValue(&stParam);
|
||||
*p_lValue = FALSE;
|
||||
|
||||
|
||||
switch (eCondId)
|
||||
{
|
||||
case eCond_IsZDMCollideWithObstacle :
|
||||
if (ulSurfState!=C_WOT_ulNoObstacle)
|
||||
/**p_lValue = fn_bIsObstacleTypeOfGMT(p_SuperObjPerso, xTestMask);*/
|
||||
*p_lValue = (long)fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetObstacle(p_stDynamReport)), xTestMask);
|
||||
break;
|
||||
|
||||
case eCond_IsZDMCollideWithWall :
|
||||
if (ulSurfState & C_WOT_ulWall)
|
||||
/**p_lValue = fn_bIsWallTypeOfGMT(p_SuperObjPerso, xTestMask);*/
|
||||
*p_lValue = (long)fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetWall(p_stDynamReport)), xTestMask);
|
||||
break;
|
||||
|
||||
case eCond_IsZDMCollideWithGround :
|
||||
if (ulSurfState & (C_WOT_ulGround/*|C_WOT_ulSlope*/))
|
||||
/**p_lValue = fn_bIsGroundTypeOfGMT(p_SuperObjPerso, xTestMask);*/
|
||||
*p_lValue = (long)fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetGround(p_stDynamReport)), xTestMask);
|
||||
break;
|
||||
|
||||
case eCond_IsZDMCollideWithCeiling :
|
||||
if (ulSurfState & (/*C_WOT_ulAttic|*/C_WOT_ulCeiling))
|
||||
/**p_lValue = fn_bIsCeilingTypeOfGMT(p_SuperObjPerso, xTestMask);*/
|
||||
*p_lValue = (long)fn_bTestTypeOfGameMaterial(DNM_M_hObstacleGetCollidedMaterial(DNM_M_p_stReportGetCeil(p_stDynamReport)), xTestMask);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************
|
||||
* Condition : Cond_IsCustomBitSet *
|
||||
* : Cond_IsCurrentStateCustomBitSet *
|
||||
* Use : ACT_TestCustomBit(numero_de_bit) *
|
||||
* : ACT_TestCustomBitDEtatCourant(numero_de_bit) *
|
||||
* Use for : Return the state of the bit *
|
||||
* Author : B. Germain *
|
||||
* Date of last modification: 25/11/98 MT *
|
||||
******************************************************************/
|
||||
/* ANNECY MT - 24/11/98 {*/
|
||||
tdstNodeInterpret *fn_p_stCustomBitsCond(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
/*read the custom bit identifier*/
|
||||
M_EvalNextParameter(&stParam);
|
||||
|
||||
switch ( eCondId )
|
||||
{
|
||||
case eCond_IsCustomBitSet:
|
||||
{
|
||||
unsigned long ulMask = (1 << (M_GetSetParam_lValue(&stParam) - 1));
|
||||
*p_lValue = (fn_ulStandardGameGetCustomBits(M_GetMSHandle(hNewSuperObjPerso,StandardGame)) & ulMask) ? TRUE : FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case eCond_IsCurrentStateCustomBitSet:
|
||||
{
|
||||
unsigned long ulMask;
|
||||
tdxHandleToState h_State;
|
||||
|
||||
ulMask = (unsigned long)M_GetSetParam_CapsValue(&stParam);
|
||||
|
||||
#ifdef _DEBUG
|
||||
SAF_M_AssertWithMsg(ulMask < 256, "Le masque est trop grand")
|
||||
#endif
|
||||
h_State = fn_h3dDataGetCurrentState(M_GetMSHandle(hNewSuperObjPerso,3dData));
|
||||
*p_lValue = ( (h_State && (fn_ucGetStateCustomBits(h_State) & ulMask)) ? TRUE : FALSE);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
*p_lValue = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return p_stTree;
|
||||
}
|
||||
/* END ANNECY MT }*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*=====================================================================================================================================
|
||||
Name: CollisionWP( Perso, WP )
|
||||
Author: yann le tensorer
|
||||
Created: October 12,1998 (completely rewriten for optimisations)
|
||||
Last modified:
|
||||
=====================================================================================================================================*/
|
||||
/*extern void fn_vRegisterTextToDraw (char * _szTextToDraw , long _lX , long _lY);*/
|
||||
|
||||
tdstNodeInterpret *fn_p_stCollisionWP(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
HIE_tdxHandleToSuperObject hPerso;
|
||||
WP_tdhWayPoint hWP;
|
||||
MTH3D_tdstVector stPosWP;
|
||||
/*
|
||||
static char init=0;
|
||||
static char text[100];
|
||||
|
||||
|
||||
unsigned long ulTimerValue;
|
||||
|
||||
if (init==0)
|
||||
{
|
||||
init=1;
|
||||
fn_vRegisterTextToDraw(text,10,450);
|
||||
}
|
||||
ulTimerValue = TMR_fn_ulFastGetInternalCounter();
|
||||
*/
|
||||
|
||||
|
||||
/* Get first parameter that is a type Perso*/
|
||||
M_EvalNextParameter( &stParam );
|
||||
hPerso = (HIE_tdxHandleToSuperObject) M_GetSetParam_p_stSupObjValue( &stParam );
|
||||
|
||||
/* Get second parameter that is a Waypoint*/
|
||||
M_EvalNextParameter( &stParam );
|
||||
hWP = M_GetSetParam_WayPointValue( &stParam );
|
||||
|
||||
/* if bad wp or perso given, ther is surely no collision !*/
|
||||
if ((hPerso==0) || (hWP==0))
|
||||
{
|
||||
*p_lValue=FALSE;
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (hWP->m_hSuperObject) /* does the waypoint have a superobject ?*/
|
||||
{
|
||||
WP_fnv_WayPoint_ComputeLocation(hWP,&stPosWP);
|
||||
/*get vector between WP and Perso*/
|
||||
MTH3D_M_vSubVector(&stPosWP,&stPosWP,&hPerso->hGlobalMatrix->stTranslationVector);
|
||||
}
|
||||
else
|
||||
/* what almost always happens...*/
|
||||
MTH3D_M_vSubVector(&stPosWP,&hWP->m_stVertex,&hPerso->hGlobalMatrix->stTranslationVector);
|
||||
|
||||
|
||||
/*compare the square of its norm with the square of the radius*/
|
||||
|
||||
if MTH_M_bGreaterZero(MTH_M_xSub(MTH3D_M_xSqrVector(&stPosWP),MTH_M_xSqr(hWP->m_xRadius)))
|
||||
*p_lValue=FALSE;
|
||||
else
|
||||
*p_lValue=TRUE;
|
||||
/*
|
||||
ulTimerValue=TMR_fn_ulFastGetInternalCounter()-ulTimerValue-30;
|
||||
sprintf(text,"%ul",ulTimerValue);
|
||||
*/
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: IsGiBlock *
|
||||
* Use : bool := GiBloque *
|
||||
* true if Gi mechanic prevents Rayman from going out a Gi *
|
||||
* collide set material *
|
||||
* false *
|
||||
* Author : Christophe Giraud *
|
||||
* Date of last modification: 25/11/97 *
|
||||
**********************************************************************/
|
||||
/*tdstNodeInterpret *fn_p_stMechanicBlock(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
switch ( eCondId )
|
||||
{
|
||||
case eCond_IsGiBlock:
|
||||
case eCond_IsMechanicBlock:
|
||||
{
|
||||
DNM_tdstReport *p_stDynamReport;
|
||||
BOOL bGiBlock = FALSE;
|
||||
|
||||
if ( (p_stDynamReport = fn_pstGetDNMReport(p_SuperObjPerso))!=NULL )
|
||||
{
|
||||
bGiBlock = DNM_M_bReportCollision(p_stDynamReport);
|
||||
DNM_M_bReportSetCollisionFlagToFalse(p_stDynamReport);
|
||||
}
|
||||
|
||||
*p_lValue = bGiBlock?TRUE:FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
*p_lValue = FALSE;
|
||||
break;
|
||||
}
|
||||
return(p_stTree);
|
||||
}*/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: IsVectorNul *
|
||||
* Use : bool := VecteurNul ( vecteur ) *
|
||||
* almost true if ||vecteur|| < epsilon *
|
||||
* Author : Jacques Th<54>noz *
|
||||
* Date of last modification: 22/04/98 *
|
||||
* - no more BOOL variable *
|
||||
* - epsilon changed from 1e-15 to 1e-5 *
|
||||
* - test modified so that as soon as one compoent is too large, *
|
||||
* the others are ignored *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret *fn_p_stNullVector(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
/*
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
switch ( eCondId )
|
||||
{
|
||||
case eCond_IsNullVector:
|
||||
{
|
||||
*/
|
||||
MTH3D_tdstVector *p_stVector;
|
||||
|
||||
/* read vector */
|
||||
M_EvalNextParameter(&stParam);
|
||||
p_stVector=&M_GetSetParam_stVectorValue(&stParam);
|
||||
|
||||
*p_lValue = ( MTH_M_bIsNullWithEpsilon(MTH3D_M_xGetXofVector(p_stVector), MTH_M_xDoubleToReal(1.0e-5)) && MTH_M_bIsNullWithEpsilon(MTH3D_M_xGetYofVector(p_stVector), MTH_M_xDoubleToReal(1.0e-5)) && MTH_M_bIsNullWithEpsilon(MTH3D_M_xGetZofVector(p_stVector), MTH_M_xDoubleToReal(1.0e-5)) )
|
||||
? TRUE
|
||||
: FALSE;
|
||||
/* }
|
||||
break;
|
||||
|
||||
default:
|
||||
*p_lValue = FALSE;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: OptionTruc *
|
||||
* Use : bool := OptionTruc () *
|
||||
* true if Truc option is active in current mechanic *
|
||||
* Author : Jacques Th<54>noz *
|
||||
* Date of last modification: 16/12/97 *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret *fn_p_stMechanicOption(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
struct DNM_stDynamics* pstDynamic;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
BOOL bOption;
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
|
||||
/* Get Dynamics structure*/
|
||||
h_Dynam = M_GetMSHandle(hNewSuperObjPerso,Dynam);
|
||||
if (!h_Dynam)
|
||||
{
|
||||
#if (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG)
|
||||
#if !defined(U64_AIDEBUG) /* Oliv' - 23/11/1998*/
|
||||
Erm_M_UpdateLastError(AI, C_ucErmDefaultChannel, E_uwAIWarningScriptError , C_lErmNoDebugData,
|
||||
C_ucErmOpenInfoWindow, C_ucNeverStopForDebug,
|
||||
"You must allocate Dynamics.");
|
||||
Erm_fn_iMessageBox ("You must allocate Dynamics.","STOP",MB_OK|MB_ICONERROR);
|
||||
Erm_M_ClearLastError(C_ucErmDefaultChannel);
|
||||
fn_vSetStopAIEngineFlag();
|
||||
#endif /* !defined(U64_AIDEBUG) */
|
||||
#endif /* (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG) */
|
||||
|
||||
*p_lValue = FALSE;
|
||||
return(p_stTree);
|
||||
}
|
||||
pstDynamic = fn_p_stDynamGetDynamics(h_Dynam);
|
||||
|
||||
switch ( eCondId )
|
||||
{
|
||||
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
case eCond_IsMechanicAnimation :
|
||||
bOption=DNM_M_bDynamicsIsAnimation (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicCollide :
|
||||
bOption=DNM_M_bDynamicsIsCollide (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicGravity :
|
||||
bOption=DNM_M_bDynamicsIsGravity (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicTilt :
|
||||
bOption=DNM_M_bDynamicsIsTilt (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicGi :
|
||||
bOption=DNM_M_bDynamicsIsGi (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicClimb :
|
||||
bOption=DNM_M_bDynamicsIsClimb (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicOnGround :
|
||||
bOption=DNM_M_bDynamicsIsOnGround (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicSpider :
|
||||
bOption=DNM_M_bDynamicsIsSpider (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicShoot :
|
||||
bOption=DNM_M_bDynamicsIsShoot (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicSwim :
|
||||
bOption=DNM_M_bDynamicsIsShoot (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicNeverFall :
|
||||
bOption=DNM_M_bDynamicsIsNeverFall (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicCollisionControl:
|
||||
bOption=DNM_M_bDynamicsIsCollisionControl (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicKeepSpeedZ:
|
||||
bOption=DNM_M_bDynamicsIsKeepWallSpeedZ (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicSpeedLimit:
|
||||
bOption=DNM_M_bDynamicsIsSpeedLimit (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicInertia:
|
||||
bOption=DNM_M_bDynamicsIsInertia (pstDynamic);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
case eCond_IsMechanicStream:
|
||||
bOption=DNM_M_bDynamicsIsStream (pstDynamic);
|
||||
break;
|
||||
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
case eCond_IsMechanicStickOnPlatform:
|
||||
bOption=DNM_M_bDynamicsIsStickOnPlatform (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicPatformCrash:
|
||||
bOption=DNM_M_bDynamicsIsPlatformCrash (pstDynamic);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
case eCond_CanFall:
|
||||
/* if true, we store the fall direction in the specified vector dsgvar*/
|
||||
if ( (bOption = DNM_M_bDynamicsIsCanFall (pstDynamic)) != 0 ) /*VOLUNTARY ASSIGNMENT!!!*/
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
AI_tdstMind *p_stMind; /* Mind of the dsgvar owning perso (used to return paramaters to dsgVars)*/
|
||||
unsigned char ucVectorId; /* id of the vector dsgvar*/
|
||||
|
||||
/* get the vector identification in the argument*/
|
||||
M_vEvalNextVarId(p_stMind, ucVectorId);
|
||||
|
||||
/*put the vector found in the mechanics into the dsgvar*/
|
||||
M_GetSetParam_stVertexValue(&stParam) = *DNM_M_pDynamicsGetFallTranslation(pstDynamic);
|
||||
M_GetSetParam_Type(&stParam) = E_vt_Vector;
|
||||
ucVectorId = fn_ucSetDsgVar(ucVectorId, 0, p_stMind, &stParam);
|
||||
SAF_M_AssertWithMsg(ucVectorId != C_INVALID_SET, "L'argument n'est pas de type vecteur!");
|
||||
}
|
||||
else /* no need to store the vector -> do not evaluate its id*/
|
||||
p_stTree = fn_p_stSkipThisArgument(p_stTree);
|
||||
break;
|
||||
|
||||
case eCond_IsGiBlock:
|
||||
case eCond_IsMechanicBlock:
|
||||
bOption=DNM_M_bDynamicsIsStop (pstDynamic);
|
||||
DNM_M_vDynamicsSetStop (pstDynamic,FALSE);
|
||||
break;
|
||||
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
case eCond_IsMechanicScale:
|
||||
bOption = DNM_M_bDynamicsIsScale (pstDynamic);
|
||||
break;
|
||||
|
||||
case eCond_IsMechanicExec:
|
||||
bOption = DNM_M_bDynamicsIsExec (pstDynamic);
|
||||
DNM_M_vDynamicsSetExec (pstDynamic,FALSE);
|
||||
break;
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
case eCond_IsMechanicCrash:
|
||||
bOption = DNM_M_bDynamicsIsCrash (pstDynamic);
|
||||
break;
|
||||
|
||||
default:
|
||||
bOption = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
*p_lValue = bOption ? TRUE : FALSE;
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
/*ANNECY CT 06/02/98{*/
|
||||
/**********************************************************************
|
||||
* Function: ANI_TestFinAnim *
|
||||
* Function: ACT_TestFinAction *
|
||||
* Use : Booleen = ANI_TestFinAnim() ou Perso.ANI_TestFinAnim() *
|
||||
* Use : Booleen = ACT_TestFinAction() ou Perso.ACT_TestFinAction() *
|
||||
* *
|
||||
* Author : Carlos Torres *
|
||||
* Date of last modification: 16/02/98 *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stCheckAnimEnd(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue) {
|
||||
enum tdeCondId_ eCondId=M_eCondIdInterpret(p_stTree-1);
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
if (eCondId == eCond_CheckAnimEnd) {
|
||||
*p_lValue=PLA_fn_bTestIfEndOfAnim(hNewSuperObjPerso);
|
||||
return (p_stTree);
|
||||
}
|
||||
else if (eCondId == eCond_CheckActionEnd) {
|
||||
*p_lValue=PLA_fn_bTestIfEndOfAction(hNewSuperObjPerso);
|
||||
return (p_stTree);
|
||||
}
|
||||
|
||||
M_AIFatalError(E_uwAIFatalNotValidCondition);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
/*ENDANNECY CT}*/
|
||||
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: HIER_EstFils_acteur ( toto ) *
|
||||
* true if actor is a son of toto *
|
||||
* Author : Jacques Th<54>noz *
|
||||
* Date of last modification: 10/02/98 *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret *fn_p_stHierarchySon (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
tdstGetSetParam stParam;
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
HIE_tdxHandleToSuperObject hFather;
|
||||
HIE_tdxHandleToSuperObject hChild;
|
||||
int i;
|
||||
struct DNM_stDynamics* pstDynamic;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
*p_lValue = FALSE;
|
||||
|
||||
M_EvalNextParameter( &stParam );
|
||||
hFather = (HIE_tdxHandleToSuperObject) M_GetSetParam_p_stSupObjValue( &stParam );
|
||||
|
||||
SAF_M_AssertWithMsg(hFather, "l'acteur sp<73>cifi<66> est nul");
|
||||
|
||||
h_Dynam = M_GetMSHandle(hNewSuperObjPerso,Dynam);
|
||||
if (h_Dynam)
|
||||
{
|
||||
pstDynamic = fn_p_stDynamGetDynamics(h_Dynam);
|
||||
if (DNM_M_bDynamicsIsComplexSize(pstDynamic))
|
||||
{
|
||||
if (DNM_M_hDynamicsGetPlatformSO(pstDynamic)==hFather) *p_lValue = TRUE;
|
||||
return p_stTree;
|
||||
}
|
||||
}
|
||||
|
||||
HIE_M_ForEachChildOf (hFather,hChild,i)
|
||||
{
|
||||
if (hChild==hNewSuperObjPerso)
|
||||
{
|
||||
*p_lValue = TRUE;
|
||||
return p_stTree;
|
||||
}
|
||||
}
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
/*ANNECY Bart#01 13/02/98 {*/
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------------------------
|
||||
Description : *fn_p_stCheckCapabilities
|
||||
|
||||
p_SuperObjPerso ->
|
||||
p_stTree ->
|
||||
p_lValue ->
|
||||
Returns (tdstNodeInterpret )
|
||||
----------------------------------------------------------------------------------------
|
||||
Author : Fred 'Bart#01' Compagnon
|
||||
Date : 13/02/98
|
||||
----------------------------------------------------------------------------------------
|
||||
*/
|
||||
tdstNodeInterpret *fn_p_stCheckCapabilities(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
tdstGetSetParam stParam;
|
||||
|
||||
unsigned long ubf32CapabilityToTest = 0;
|
||||
unsigned long ubf32BitOfCapability = 0;
|
||||
unsigned char ucBitNumber;
|
||||
struct tdstEngineObject_ * hEngineObj; /* there's no "tdhEngineObject" ? ? ? ? ? ? ! ! !*/
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
*p_lValue = FALSE;
|
||||
|
||||
switch(eCondId)
|
||||
{
|
||||
case eCond_HasTheCapability:
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
case eCond_HasOneOfTheCapabilities:
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
{
|
||||
M_EvalNextParameter(&stParam);
|
||||
ubf32CapabilityToTest = M_GetSetParam_CapsValue(&stParam);
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
ubf32BitOfCapability = M_GetSetParam_CapsValue(&stParam);
|
||||
break;
|
||||
}
|
||||
case eCond_HasTheCapabilityNumber:
|
||||
{
|
||||
M_EvalNextParameter(&stParam);
|
||||
ubf32CapabilityToTest = M_GetSetParam_CapsValue(&stParam);
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
ucBitNumber = (unsigned char) M_GetSetParam_lValue(&stParam);
|
||||
|
||||
if (ucBitNumber >= 32)
|
||||
{
|
||||
return(p_stTree); /* *p_lValue = FALSE;*/
|
||||
break;
|
||||
}
|
||||
ubf32BitOfCapability = 1<<ucBitNumber;
|
||||
break;
|
||||
}
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
case eCond_PersoHasTheCapability:
|
||||
case eCond_PersoHasOneOfTheCapabilities:
|
||||
{
|
||||
/* get perso capacity */
|
||||
hEngineObj = M_GetEngineObject(hNewSuperObjPerso);
|
||||
ubf32CapabilityToTest = fn_ulGetCapabilities(hEngineObj);
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
ubf32BitOfCapability = M_GetSetParam_CapsValue(&stParam);
|
||||
break;
|
||||
}
|
||||
case eCond_PersoHasTheCapabilityNumber:
|
||||
{
|
||||
/* get perso capacity */
|
||||
hEngineObj = M_GetEngineObject(hNewSuperObjPerso);
|
||||
ubf32CapabilityToTest = fn_ulGetCapabilities(hEngineObj);
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
ucBitNumber = (unsigned char) M_GetSetParam_lValue(&stParam);
|
||||
|
||||
if (ucBitNumber >= 32)
|
||||
{
|
||||
return(p_stTree); /* *p_lValue = FALSE;*/
|
||||
break;
|
||||
}
|
||||
ubf32BitOfCapability = 1<<ucBitNumber;
|
||||
break;
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
if ( (eCondId == eCond_HasOneOfTheCapabilities) || (eCondId == eCond_PersoHasOneOfTheCapabilities) )
|
||||
*p_lValue = ((ubf32CapabilityToTest & ubf32BitOfCapability) != 0);
|
||||
else
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
*p_lValue = ((ubf32CapabilityToTest & ubf32BitOfCapability) == ubf32BitOfCapability);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*ENDANNECY Bart#01 }*/
|
||||
|
||||
/*ANNECY CT 02/03/98{*/
|
||||
/**********************************************************************
|
||||
* Function: ACT_EstActif *
|
||||
* Use : Booleen = ACT_EstActif(perso) *
|
||||
* *
|
||||
* Author : Carlos Torres *
|
||||
* Date of last modification: 04/03/98 *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stIsPersoActive(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
/* enum tdeCondId_ eCondId=M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
|
||||
if (eCondId == eCond_IsPersoActive)
|
||||
{
|
||||
*/
|
||||
tdstGetSetParam stParam;
|
||||
M_EvalNextParameter(&stParam);
|
||||
|
||||
if ( M_GetSetParam_p_stEngineObjValue(&stParam)->h_StandardGame )
|
||||
{
|
||||
p_SuperObjPerso = M_GetSetParam_p_stSupObjValue(&stParam);
|
||||
SAF_M_AssertWithMsg(p_SuperObjPerso, "l'acteur sp<73>cifi<66> est nul");
|
||||
*p_lValue = GAM_fn_bIsCharacterActive(p_SuperObjPerso);
|
||||
}
|
||||
else
|
||||
*p_lValue = 0; /* when actor is an always, its MS pointers are cleard when is is destroyed*/
|
||||
return (p_stTree);
|
||||
/* }
|
||||
|
||||
M_AIFatalError(E_uwAIFatalNotValidCondition);
|
||||
return(p_stTree);
|
||||
*/
|
||||
}
|
||||
/*ENDANNECY CT}*/
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: ACT_NEstPasEnCollisionAvecMap () *
|
||||
* Condition: ACT_NEstPasEnCollisionAvecProjectiles () *
|
||||
* Condition: ACT_NEstPasEnCollisionAvecActeursSecondaires () *
|
||||
* Condition: ACT_NEstPasEnCollisionAvecActeurPrincipal () *
|
||||
* true according Collision Flag in CollisionSet MS *
|
||||
* *
|
||||
* Author : Marc Trabucato *
|
||||
* Date of last modification: 17/03/98 *
|
||||
**********************************************************************/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
|
||||
tdstNodeInterpret *fn_p_stIsCollisionFlag (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
MS_tdxHandleToCollSet hCollSet;
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
hCollSet = M_GetMSHandle(hNewSuperObjPerso,CollSet);
|
||||
switch( eCondId )
|
||||
{
|
||||
case eCond_NEstPasEnCollisionAvecMap:
|
||||
*p_lValue = fn_bCollSetGetCharacterNoCollisionWithMap( hCollSet );
|
||||
break;
|
||||
|
||||
case eCond_NEstPasEnCollisionAvecProjectile:
|
||||
*p_lValue = fn_bCollSetGetCharacterNoCollisionWithProjectile( hCollSet );
|
||||
break;
|
||||
|
||||
case eCond_NEstPasEnCollisionAvecSecondCharact:
|
||||
*p_lValue = fn_bCollSetGetCharacterNoCollisionWithSecondaryCharacter( hCollSet );
|
||||
break;
|
||||
|
||||
case eCond_NEstPasEnCollisionAvecMainCharact:
|
||||
*p_lValue = fn_bCollSetGetCharacterNoCollisionWithMainCharacter( hCollSet );
|
||||
break;
|
||||
|
||||
case eCond_NEstPasEnCollisionAvecAutresSecteurs:
|
||||
*p_lValue = fn_bCollSetGetCharacterNoCollisionWithOtherSectors( hCollSet );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/**********************************************************************
|
||||
* Function: ACT_EstDe *
|
||||
* Use : Booleen = ULTRA.ACT_EstDeFamille(Famille) *
|
||||
* Use : Booleen = ULTRA.ACT_EstDeModele(Modele) *
|
||||
* *
|
||||
* Author : Yann Le Guyader *
|
||||
* Date of last modification: 24/03/98 *
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stIsOf(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue) {
|
||||
enum tdeCondId_ eCondId=M_eCondIdInterpret(p_stTree-1);
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
tdstGetSetParam stParam;
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
M_EvalNextParameter(&stParam);
|
||||
switch( eCondId )
|
||||
{
|
||||
case eCond_IsInFamily:
|
||||
{
|
||||
*p_lValue=(fn_h3dDataGetFamily(M_GetMSHandle(hNewSuperObjPerso,3dData)) == M_GetSetParam_hFamily(&stParam));
|
||||
return (p_stTree);
|
||||
break;
|
||||
}
|
||||
case eCond_IsInModel:
|
||||
{
|
||||
MS_tdxHandleToBrain hBrain = M_GetMSHandle(hNewSuperObjPerso,Brain);
|
||||
*p_lValue=(
|
||||
hBrain
|
||||
&& (AI_M_p_stGetAIModel(M_pstGetMindOfBrain(hBrain)) == M_GetSetParam_p_stModel(&stParam))
|
||||
);
|
||||
|
||||
return (p_stTree);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
M_AIFatalError(E_uwAIFatalNotValidCondition);
|
||||
return(p_stTree);
|
||||
}
|
||||
/**********************************************************************
|
||||
* Function: IPT_AJoypadIsConnected
|
||||
**********************************************************************/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT 07/06/99 { */
|
||||
tdstNodeInterpret * fn_p_stAJoypadIsConnected(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
#ifdef USE_IPT_DX5
|
||||
*p_lValue= IPT_fn_bIsJoystickControlAvailable();
|
||||
#else /* USE_IPT_WIN */
|
||||
*p_lValue= IPT_fn_bAJoypadConnected();
|
||||
#endif /* USE_IPT_WIN */
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ } */
|
||||
/**********************************************************************
|
||||
* Function: IPT_AKeyJustPressed
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stAKeyJustPressed(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
/* LOL*/
|
||||
#ifndef U64
|
||||
*p_lValue= IPT_fn_bAKeyJustPressed();
|
||||
#else
|
||||
M_PrintfStopErrorN64(("Condition fn_p_stAKeyJustPressed invalidate for N64"));
|
||||
#endif
|
||||
return(p_stTree);
|
||||
|
||||
}
|
||||
/**********************************************************************
|
||||
* Function: IPT_AButtonPadJustPressed
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stAButtonPadJustPressed(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue= IPT_fn_bAButtonPadJustPressed();
|
||||
return(p_stTree);
|
||||
|
||||
}
|
||||
|
||||
/*HP 101298*/
|
||||
/**********************************************************************
|
||||
* Function fn_p_stDemoCondition
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stDemoCondition(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue=g_stEngineStructure.xDemoMode;
|
||||
return(p_stTree);
|
||||
}
|
||||
/**********************************************************************
|
||||
* Function fn_p_stIsStereoMode
|
||||
* Parameters:
|
||||
* Return TRUE if stereo
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stIsInStereoMode(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue = SND_fn_bGetStereoSound();
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Function fn_p_stMusicPlaying
|
||||
* Parameters:
|
||||
* Return TRUE if there's a music now playing
|
||||
**********************************************************************/
|
||||
tdstNodeInterpret * fn_p_stIsMusicPlaying(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue = SND_fn_bIsMusicPlayingSound();
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Function fn_p_stIsIsShapnessMax
|
||||
**********************************************************************/
|
||||
#ifdef U64
|
||||
extern unsigned char g_bSharpnessValue;
|
||||
extern char g_bMustSwitchResolution;
|
||||
extern int SCREEN_WD;
|
||||
|
||||
tdstNodeInterpret * fn_p_stIsIsShapnessMax(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
if (((SCREEN_WD==300) || (g_bMustSwitchResolution == 1)) && (g_bMustSwitchResolution != 2))
|
||||
{
|
||||
*p_lValue = g_bSharpnessValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
*p_lValue = 1;
|
||||
}
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
tdstNodeInterpret *fn_p_stIsSlotDataCorrupt(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue = 0;
|
||||
return (p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stIsCheatMenu(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue = 0;
|
||||
return (p_stTree);
|
||||
}
|
||||
tdstNodeInterpret *fn_p_stIsUSBuild(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
*p_lValue = TRUE;
|
||||
return (p_stTree);
|
||||
}
|
285
Rayman_X/cpa/tempgrp/AI/AIGame/ConvAct.c
Normal file
285
Rayman_X/cpa/tempgrp/AI/AIGame/ConvAct.c
Normal file
@@ -0,0 +1,285 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumAct.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtAct.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumAct.h"
|
||||
#include "ConvAct.h"
|
||||
#endif /* _AI_LIB_ */
|
||||
|
||||
#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;
|
||||
|
||||
tdstMetaActionEntry a_stMetaActionTable[eNbMetaAction]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
/* Procedure initialisation*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { b,english,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { c,d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { b,english,c,f },
|
||||
#else
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { c,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* _AI_LIB_*/
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { b,english,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { b,english,f },
|
||||
#else
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) { f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* _AI_LIB_*/
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#include "DefAct.h"
|
||||
#undef M_DEFINE_METAACTION
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeMetaActionId_ fn_eGetNbMetaAction()
|
||||
{
|
||||
return(eNbMetaAction);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
char *szGetMetaActionTypeInParamFromId(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return( a_stMetaActionTable[eMetaActionId].szMetaActionTypeParam);
|
||||
}
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szGetMetaActionTypeOutParamFromId(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
eMetaActionId=eMetaActionId; /* for lint*/
|
||||
return(USE_NO_PARAM);
|
||||
}
|
||||
|
||||
char *szGetMetaActionTypeParamFromId(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return( a_stMetaActionTable[eMetaActionId].szMetaActionTypeParam);
|
||||
}
|
||||
|
||||
enum tdeMetaActionId_ fn_eFindMetaActionIdFromEditorName(char *szMetaAction)
|
||||
{
|
||||
short wActionEntry;
|
||||
for(wActionEntry=0;wActionEntry<fn_eGetNbMetaAction();wActionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stMetaActionTable[wActionEntry].szMetaActionEditorName,szMetaAction))
|
||||
{
|
||||
return((enum tdeMetaActionId_) wActionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbMetaAction());
|
||||
}
|
||||
|
||||
char *szFindMetaActionEditorNameFromId(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return( a_stMetaActionTable[eMetaActionId].szMetaActionEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char *szFindMetaActionScriptNameFromId(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return( a_stMetaActionTable[eMetaActionId].szMetaActionScriptName);
|
||||
}
|
||||
|
||||
enum tdeMetaActionId_ fn_eFindMetaActionIdFromScriptName(char *szMetaAction)
|
||||
{
|
||||
short wActionEntry;
|
||||
for(wActionEntry=0;wActionEntry<fn_eGetNbMetaAction();wActionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stMetaActionTable[wActionEntry].szMetaActionScriptName,szMetaAction))
|
||||
{
|
||||
return((enum tdeMetaActionId_) wActionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbMetaAction());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
|
||||
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stMetaActionInitFunctionPtr fn_p_fn_pGetMetaActionInitFunctionPtr(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return(a_stMetaActionTable[eMetaActionId].p_fn_p_stMetaActionInitFunction);
|
||||
}
|
||||
|
||||
tdp_fn_ucMetaActionFunctionPtr fn_p_fn_pGetMetaActionFunctionPtr(enum tdeMetaActionId_ eMetaActionId)
|
||||
{
|
||||
return(a_stMetaActionTable[eMetaActionId].p_fn_ucMetaActionFunction);
|
||||
}
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
/***************************************************************************************/
|
||||
/* -------------------------*/
|
||||
/* fn_vDefineMetaActionEntry*/
|
||||
/* -------------------------*/
|
||||
/* eMetaActionId : MetaAction identifier*/
|
||||
/* szMetaActionEditorName : MetaAction string in Editor*/
|
||||
/* szMetaActionScriptName : MetaAction string in Script*/
|
||||
/* p_fn_p_stMetaActionInitFunction : function pointer on your INIT function*/
|
||||
/* p_fn_ucMetaActionFunction : function pointer on your NEXT function*/
|
||||
/* szMetaActionTypeParam : string of MetaActionParameters (cf szAutorizedTypeParam)*/
|
||||
/***************************************************************************************/
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineMetaActionEntry(enum tdeMetaActionId_ eMetaActionId,char *szMetaActionEditorName,char *szMetaActionEditorName_En,char *szMetaActionScriptName,tdp_fn_p_stMetaActionInitFunctionPtr p_fn_p_stMetaActionInitFunction,tdp_fn_ucMetaActionFunctionPtr p_fn_ucMetaActionFunction,char *szMetaActionTypeParam)
|
||||
#else
|
||||
void fn_vDefineMetaActionEntry(enum tdeMetaActionId_ eMetaActionId,char *szMetaActionScriptName,tdp_fn_p_stMetaActionInitFunctionPtr p_fn_p_stMetaActionInitFunction,tdp_fn_ucMetaActionFunctionPtr p_fn_ucMetaActionFunction,char *szMetaActionTypeParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eMetaActionId<fn_eGetNbMetaAction())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szMetaActionEditorName)<=C_MAX_SIZE_META_ACTION_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szMetaActionScriptName)<=C_MAX_SIZE_META_ACTION_SCRIPT_NAME)
|
||||
&&(strlen(szMetaActionTypeParam)<=C_MAX_NB_META_ACTION_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szMetaActionTypeParam))
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stMetaActionTable[eMetaActionId].szMetaActionEditorName,szMetaActionEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stMetaActionTable[eMetaActionId].szMetaActionScriptName,szMetaActionScriptName);
|
||||
a_stMetaActionTable[eMetaActionId].p_fn_p_stMetaActionInitFunction=p_fn_p_stMetaActionInitFunction;
|
||||
a_stMetaActionTable[eMetaActionId].p_fn_ucMetaActionFunction=p_fn_ucMetaActionFunction;
|
||||
strcpy(a_stMetaActionTable[eMetaActionId].szMetaActionTypeParam,szMetaActionTypeParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s metaaction in %s\n",a_stMetaActionTable[eMetaActionId].szMetaActionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalInvalidAction,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitMetaActionTable(tdp_fn_p_stMetaActionInitFunctionPtr fn_p_stDefaultActionInitFunctionPointer,tdp_fn_ucMetaActionFunctionPtr fn_ucDefaultActionFunctionPointer)
|
||||
{
|
||||
short wActionEntry;
|
||||
for(wActionEntry=0;wActionEntry<fn_eGetNbMetaAction();wActionEntry++)
|
||||
{
|
||||
fn_vDefineMetaActionEntry(M_METAACTION_ENTRY((enum tdeMetaActionId_) wActionEntry,"","","",fn_p_stDefaultActionInitFunctionPointer,fn_ucDefaultActionFunctionPointer,USE_NO_PARAM));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckMetaActionTable(tdp_fn_p_stMetaActionInitFunctionPtr fn_p_stDefaultActionInitFunctionPointer,tdp_fn_ucMetaActionFunctionPtr fn_ucDefaultActionFunctionPointer)
|
||||
{
|
||||
short wActionEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
size_t lMaxLengthParam=0;
|
||||
for(wActionEntry=0;wActionEntry<fn_eGetNbMetaAction();wActionEntry++)
|
||||
{
|
||||
fn_p_stDefaultActionInitFunctionPointer=fn_p_stDefaultActionInitFunctionPointer;
|
||||
if ( /*(fn_p_fn_pGetMetaActionInitFunctionPtr((enum tdeMetaActionId_) wActionEntry)==fn_p_stDefaultActionInitFunctionPointer) ||*/
|
||||
(fn_p_fn_pGetMetaActionFunctionPtr((enum tdeMetaActionId_) wActionEntry)==fn_ucDefaultActionFunctionPointer)
|
||||
)
|
||||
{
|
||||
sprintf(str,"Error while defining %s metaaction in %s\n",a_stMetaActionTable[wActionEntry].szMetaActionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalInvalidAction,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stMetaActionTable[wActionEntry].szMetaActionScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stMetaActionTable[wActionEntry].szMetaActionEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if ((lLen=strlen(a_stMetaActionTable[wActionEntry].szMetaActionTypeParam))>lMaxLengthParam)
|
||||
{
|
||||
lMaxLengthParam=lLen;
|
||||
}
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_META_ACTION_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_META_ACTION_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_META_ACTION_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_META_ACTION_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if (lMaxLengthParam<C_MAX_NB_META_ACTION_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_NB_META_ACTION_PARAM in %s to %d\n",__FILE__,lMaxLengthParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
384
Rayman_X/cpa/tempgrp/AI/AIGame/ConvCond.c
Normal file
384
Rayman_X/cpa/tempgrp/AI/AIGame/ConvCond.c
Normal file
@@ -0,0 +1,384 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumCond.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtCond.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumCond.h"
|
||||
#include "ConvCond.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#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;
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
extern unsigned long ulIndice;
|
||||
extern unsigned long p_ulTime[255];
|
||||
extern FILE *file;
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
tdstConditionEntry a_stConditionTable[eNbCond]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
|
||||
#ifdef U64_AIDEBUG
|
||||
/* function pointers in DefCond.c, in params,ultra-able*/
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { d,e,f },
|
||||
#include "DefCond.h"
|
||||
}
|
||||
#else /* U64_AIDEBUG*/
|
||||
/* Conditions initialisation*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { b,english,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { c,d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { b,english,c,e,f },
|
||||
#else
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { c,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefCond.h"
|
||||
#undef M_DEFINE_CONDITION
|
||||
}
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { b,english,d,f },
|
||||
#else
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { d,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { b,english,f },
|
||||
#else
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) { f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefCond.h"
|
||||
#undef M_DEFINE_CONDITION
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* U64_AIDEBUG*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
#if ! defined(OPTIMIZED_COMMAND)
|
||||
void fn_vSetConditionUltraOperator(enum tdeCondId_ eCondId,unsigned char bFlag)
|
||||
{
|
||||
a_stConditionTable[eCondId].bUltraCondtionFlag=bFlag;
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
unsigned char fn_ucGetConditionUltraOperator(enum tdeCondId_ eCondId)
|
||||
{
|
||||
return(a_stConditionTable[eCondId].bUltraCondtionFlag);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stConditionFunctionPtr fn_p_fn_pGetConditionFunctionPtr(enum tdeCondId_ eCondId)
|
||||
{
|
||||
return(a_stConditionTable[eCondId].p_fn_p_stConditionFunction);
|
||||
}
|
||||
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
void fn_vCondSaveTime(unsigned long ulTime, enum tdeCondId_ eCondId)
|
||||
{
|
||||
/* if level != 0, then stop time count of last function*/
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
p_ulTime[ulIndice - 1] = (ulTime - p_ulTime[ulIndice - 1]);
|
||||
}
|
||||
/* set time for this new function and add indice*/
|
||||
p_ulTime[ulIndice++] = ulTime;
|
||||
}
|
||||
|
||||
|
||||
void fn_vCondComputeTime(unsigned long ulCurrentTime, unsigned long ulTime, enum tdeCondId_ eCondId)
|
||||
{
|
||||
/* compute total time for this function*/
|
||||
a_stConditionTable[eCondId].ulCallCtr++;
|
||||
a_stConditionTable[eCondId].ulTimeCtr += (ulCurrentTime - ulTime)/5;
|
||||
/* compute own time for this function*/
|
||||
ulIndice--;
|
||||
/* compute the time for this function*/
|
||||
a_stConditionTable[eCondId].ulOwnTimeCtr += ((ulCurrentTime - p_ulTime[ulIndice]) / 5);
|
||||
p_ulTime[ulIndice] = 0;
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
/* level != 0, then restart previous function time*/
|
||||
p_ulTime[ulIndice-1] = ulCurrentTime - p_ulTime[ulIndice-1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void dumpCond()
|
||||
{
|
||||
int i;
|
||||
char string[250];
|
||||
|
||||
strcpy(string,"x:\\cpa\\");
|
||||
strcat(string,fn_p_szGetLevelName());
|
||||
strcat(string,".txt");
|
||||
|
||||
file = fopen(string,"w");
|
||||
if (file == NULL)
|
||||
return;
|
||||
|
||||
fprintf(file,"name Count Time Own Time Rel Time Own Rel Time\n");
|
||||
for (i=0;i<(long)eNbCond;i++)
|
||||
{
|
||||
if (a_stConditionTable[i].ulCallCtr)
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stConditionTable[i].szConditionScriptName,
|
||||
a_stConditionTable[i].ulCallCtr,
|
||||
a_stConditionTable[i].ulTimeCtr,
|
||||
a_stConditionTable[i].ulOwnTimeCtr,
|
||||
a_stConditionTable[i].ulTimeCtr / a_stConditionTable[i].ulCallCtr,
|
||||
a_stConditionTable[i].ulOwnTimeCtr / a_stConditionTable[i].ulCallCtr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stConditionTable[i].szConditionScriptName,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
void clearCond()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<(long)eNbCond;i++)
|
||||
{
|
||||
a_stConditionTable[i].ulCallCtr = 0;
|
||||
a_stConditionTable[i].ulTimeCtr = 0;
|
||||
a_stConditionTable[i].ulOwnTimeCtr = 0;
|
||||
}
|
||||
ulIndice = 0;
|
||||
}
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeCondId_ fn_eGetNbCond()
|
||||
{
|
||||
return(eNbCond);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined(__DEBUG_AI__) || defined (U64_AIDEBUG)
|
||||
char *szGetConditionTypeInParamFromId(enum tdeCondId_ eCondId)
|
||||
{
|
||||
return(a_stConditionTable[eCondId].szConditionTypeInParam);
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szGetConditionTypeOutParamFromId(enum tdeCondId_ eCondId)
|
||||
{
|
||||
eCondId=eCondId;
|
||||
return(USE_BOOLEAN_PARAM);
|
||||
}
|
||||
|
||||
enum tdeCondId_ fn_eFindConditionIdFromEditorName(char *szCondition)
|
||||
{
|
||||
short wConditionEntry;
|
||||
for(wConditionEntry=0;wConditionEntry<fn_eGetNbCond();wConditionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stConditionTable[wConditionEntry].szConditionEditorName,szCondition))
|
||||
{
|
||||
return((enum tdeCondId_) wConditionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbCond());
|
||||
}
|
||||
|
||||
char *szFindConditionEditorNameFromId(enum tdeCondId_ eCondId)
|
||||
{
|
||||
return(a_stConditionTable[eCondId].szConditionEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char *szFindConditionScriptNameFromId(enum tdeCondId_ eCondId)
|
||||
{
|
||||
return(a_stConditionTable[eCondId].szConditionScriptName);
|
||||
}
|
||||
|
||||
enum tdeCondId_ fn_eFindConditionIdFromScriptName(char *szCondition)
|
||||
{
|
||||
short wConditionEntry;
|
||||
for(wConditionEntry=0;wConditionEntry<fn_eGetNbCond();wConditionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stConditionTable[wConditionEntry].szConditionScriptName,szCondition))
|
||||
{
|
||||
return((enum tdeCondId_) wConditionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbCond());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineConditionEntry(enum tdeCondId_ eCondId,char *szConditionEditorName,char *szConditionEditorName_En,char *szConditionScriptName,tdp_fn_p_stConditionFunctionPtr p_fn_p_stConditionFunction,char *szConditionTypeInParam)
|
||||
#else
|
||||
void fn_vDefineConditionEntry(enum tdeCondId_ eCondId,char *szConditionScriptName,tdp_fn_p_stConditionFunctionPtr p_fn_p_stConditionFunction,char *szConditionTypeInParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eCondId<fn_eGetNbCond())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szConditionEditorName)<=C_MAX_SIZE_CONDITION_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szConditionScriptName)<=C_MAX_SIZE_CONDITION_SCRIPT_NAME)
|
||||
&&(strlen(szConditionTypeInParam)<=C_MAX_CONDITION_NB_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szConditionTypeInParam))
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stConditionTable[eCondId].szConditionEditorName,szConditionEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stConditionTable[eCondId].szConditionScriptName,szConditionScriptName);
|
||||
a_stConditionTable[eCondId].p_fn_p_stConditionFunction=p_fn_p_stConditionFunction;
|
||||
strcpy(a_stConditionTable[eCondId].szConditionTypeInParam,szConditionTypeInParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s condition in %s\n",szConditionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidCondition,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitConditionTable(tdp_fn_p_stConditionFunctionPtr p_fn_p_stDefaultConditionFunctionPointer)
|
||||
{
|
||||
short wConditionEntry;
|
||||
for(wConditionEntry=0;wConditionEntry<fn_eGetNbCond();wConditionEntry++)
|
||||
{
|
||||
fn_vDefineConditionEntry(M_CONDITION_ENTRY((enum tdeCondId_) wConditionEntry,"","","",p_fn_p_stDefaultConditionFunctionPointer,USE_NO_PARAM));
|
||||
/* ULTRA OPERATOR USAGE : FALSE AS A DEFAULT*/
|
||||
fn_vSetConditionUltraOperator((enum tdeCondId_) wConditionEntry,NOT_ULTRA_ABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckConditionTable(tdp_fn_p_stConditionFunctionPtr p_fn_p_stDefaultConditionFunctionPointer)
|
||||
{
|
||||
short wConditionEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
size_t lMaxLengthInParam=0;
|
||||
for(wConditionEntry=0;wConditionEntry<fn_eGetNbCond();wConditionEntry++)
|
||||
{
|
||||
if (fn_p_fn_pGetConditionFunctionPtr((enum tdeCondId_) wConditionEntry)==p_fn_p_stDefaultConditionFunctionPointer)
|
||||
{
|
||||
sprintf(str,"Error while defining %s condition in %s\n",a_stConditionTable[wConditionEntry].szConditionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidCondition,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stConditionTable[wConditionEntry].szConditionScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stConditionTable[wConditionEntry].szConditionEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if ((lLen=strlen(a_stConditionTable[wConditionEntry].szConditionTypeInParam))>lMaxLengthInParam)
|
||||
{
|
||||
lMaxLengthInParam=lLen;
|
||||
}
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_CONDITION_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_CONDITION_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_CONDITION_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_CONDITION_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if (lMaxLengthInParam<C_MAX_CONDITION_NB_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_CONDITION_NB_PARAM in %s to %d\n",__FILE__,lMaxLengthInParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
280
Rayman_X/cpa/tempgrp/AI/AIGame/ConvFild.c
Normal file
280
Rayman_X/cpa/tempgrp/AI/AIGame/ConvFild.c
Normal file
@@ -0,0 +1,280 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumFild.h"
|
||||
#include "VarType.h"
|
||||
|
||||
#include "ProtFild.h"
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumFild.h"
|
||||
#include "VarType.h"
|
||||
#include "ConvFild.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#define C_MAX_SIZE_FIELD_SCRIPT_NAME 19
|
||||
#define C_MAX_SIZE_FIELD_EDITOR_NAME 30
|
||||
typedef struct tdstFieldEntry_
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char szFieldEditorName[C_MAX_SIZE_FIELD_EDITOR_NAME+1];
|
||||
char szFieldEditorName_En[C_MAX_SIZE_FIELD_EDITOR_NAME+1];
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char szFieldScriptName[C_MAX_SIZE_FIELD_SCRIPT_NAME+1];
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
enum tdeFieldTypeId_ eType;
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_cGetFunctionPtr p_fn_cGetFieldFunction;
|
||||
tdp_fn_cSetFunctionPtr p_fn_cSetFieldFunction;
|
||||
#endif /* _AI_LIB_*/
|
||||
} tdstFieldEntry;
|
||||
|
||||
tdstFieldEntry a_stFieldTable[eNbField]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
/* Procedure initialisation */
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { b,english,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { c,d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { b,english,c,d },
|
||||
#else
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { c,d },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { b,english,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { b,english,d },
|
||||
#else
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) { d },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#include "DefFild.h"
|
||||
#undef M_DEFINE_FIELD
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
typedef struct tdstFieldTypeEntry_
|
||||
{
|
||||
enum tdeVariableType_ eType;
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_vGetTypeFunctionPtr fn_p_fn_vGetTypeFunction;
|
||||
tdp_fn_vSetTypeFunctionPtr fn_p_fn_vSetTypeFunction;
|
||||
#endif
|
||||
} tdstFieldTypeEntry;
|
||||
|
||||
tdstFieldTypeEntry a_stFieldTypeTable[eNbFieldType]=
|
||||
{
|
||||
#if defined(_AI_LIB_)
|
||||
#define M_DEFINE_FIELD_TYPE(a,b,c,d) {b,c,d},
|
||||
/*#define M_DEFINE_FIELD_TYPE(a,b,c,d) {b,NULL,NULL},*/
|
||||
#else
|
||||
#define M_DEFINE_FIELD_TYPE(a,b,c,d) {b,},
|
||||
#endif
|
||||
#include "FildType.h"
|
||||
#undef M_DEFINE_FIELD_TYPE
|
||||
};
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_vGetTypeFunctionPtr fn_p_fn_pGetFieldTypeGetFunctionPtr(enum tdeFieldTypeId_ eFieldTypeId)
|
||||
{
|
||||
return(a_stFieldTypeTable[eFieldTypeId].fn_p_fn_vGetTypeFunction);
|
||||
}
|
||||
|
||||
tdp_fn_vSetTypeFunctionPtr fn_p_fn_pGetFieldTypeSetFunctionPtr(enum tdeFieldTypeId_ eFieldTypeId)
|
||||
{
|
||||
return(a_stFieldTypeTable[eFieldTypeId].fn_p_fn_vSetTypeFunction);
|
||||
}
|
||||
#endif
|
||||
|
||||
enum tdeFieldTypeId_ fn_eGetEngineFieldType(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTable[eFieldId].eType);
|
||||
}
|
||||
|
||||
/*tempo //#if defined(ACTIVE_EDITOR)*/
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeVariableType_ fn_eGetFieldType(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTypeTable[a_stFieldTable[eFieldId].eType].eType);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
/*#endif*/
|
||||
/**/
|
||||
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeFieldId_ fn_eGetNbField()
|
||||
{
|
||||
return(eNbField);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeFieldId_ fn_eFindFieldIdFromScriptName(char *szField)
|
||||
{
|
||||
short wFieldEntry;
|
||||
for(wFieldEntry=0;wFieldEntry<fn_eGetNbField();wFieldEntry++)
|
||||
{
|
||||
if (!stricmp(a_stFieldTable[wFieldEntry].szFieldScriptName,szField))
|
||||
{
|
||||
return((enum tdeFieldId_) wFieldEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbField());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
enum tdeFieldId_ fn_eFindFieldIdFromEditorName(char *szField)
|
||||
{
|
||||
short wFieldEntry;
|
||||
for(wFieldEntry=0;wFieldEntry<fn_eGetNbField();wFieldEntry++)
|
||||
{
|
||||
if (!stricmp(a_stFieldTable[wFieldEntry].szFieldEditorName,szField))
|
||||
{
|
||||
return((enum tdeFieldId_) wFieldEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbField());
|
||||
}
|
||||
|
||||
char *szFindFieldScriptNameFromId(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTable[eFieldId].szFieldScriptName);
|
||||
}
|
||||
|
||||
char *szFindFieldEditorNameFromId(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTable[eFieldId].szFieldEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineFieldEntry(enum tdeFieldId_ eFieldId,char *szFieldEditorName,char *szFieldEditorName_En,char *szFieldScriptName,enum tdeFieldTypeId_ eType,tdp_fn_cGetFunctionPtr p_fn_cGetFieldFunction,tdp_fn_cSetFunctionPtr p_fn_cSetFieldFunction)
|
||||
#else
|
||||
void fn_vDefineFieldEntry(enum tdeFieldId_ eFieldId,char *szFieldScriptName,enum tdeFieldTypeId_ eType,tdp_fn_cGetFunctionPtr p_fn_cGetFieldFunction,tdp_fn_cSetFunctionPtr p_fn_cSetFieldFunction)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eFieldId<fn_eGetNbField())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szFieldEditorName)<=C_MAX_SIZE_FIELD_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szFieldScriptName)<=C_MAX_SIZE_FIELD_SCRIPT_NAME)
|
||||
&&(p_fn_cGetFieldFunction!=NULL)
|
||||
&&(p_fn_cSetFieldFunction!=NULL)
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stFieldTable[eFieldId].szFieldEditorName,szFieldEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stFieldTable[eFieldId].szFieldScriptName,szFieldScriptName);
|
||||
a_stFieldTable[eFieldId].p_fn_cSetFieldFunction=p_fn_cSetFieldFunction;
|
||||
a_stFieldTable[eFieldId].p_fn_cGetFieldFunction=p_fn_cGetFieldFunction;
|
||||
a_stFieldTable[eFieldId].eType=eType;
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s field in %s\n",szFieldScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidField,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_cGetFunctionPtr fn_p_fn_pGetFieldGetFunctionPtr(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTable[eFieldId].p_fn_cGetFieldFunction);
|
||||
}
|
||||
|
||||
tdp_fn_cSetFunctionPtr fn_p_fn_pGetFieldSetFunctionPtr(enum tdeFieldId_ eFieldId)
|
||||
{
|
||||
return(a_stFieldTable[eFieldId].p_fn_cSetFieldFunction);
|
||||
}
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitFieldTable(tdp_fn_cGetFunctionPtr fn_cGetFieldDefaultFunctionPointer,tdp_fn_cSetFunctionPtr fn_cSetFieldDefaultFunctionPointer)
|
||||
{
|
||||
short wFieldEntry;
|
||||
for(wFieldEntry=0;wFieldEntry<fn_eGetNbField();wFieldEntry++)
|
||||
{
|
||||
fn_vDefineFieldEntry(M_FIELD_ENTRY((enum tdeFieldId_) wFieldEntry,"","","",eFieldType_Integer,fn_cGetFieldDefaultFunctionPointer,fn_cSetFieldDefaultFunctionPointer));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckFieldTable(tdp_fn_cGetFunctionPtr fn_cGetFieldDefaultFunctionPointer,tdp_fn_cSetFunctionPtr fn_cSetFieldDefaultFunctionPointer)
|
||||
{
|
||||
short wFieldEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
for(wFieldEntry=0;wFieldEntry<fn_eGetNbField();wFieldEntry++)
|
||||
{
|
||||
if ((lLen=strlen(a_stFieldTable[wFieldEntry].szFieldScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stFieldTable[wFieldEntry].szFieldEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_FIELD_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_FIELD_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_FIELD_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_FIELD_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
|
||||
#endif /* __DEBUG_AI__*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
403
Rayman_X/cpa/tempgrp/AI/AIGame/ConvFunc.c
Normal file
403
Rayman_X/cpa/tempgrp/AI/AIGame/ConvFunc.c
Normal file
@@ -0,0 +1,403 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumFunc.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtFunc.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumFunc.h"
|
||||
#include "ConvFunc.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#define C_MAX_SIZE_FUNCTION_EDITOR_NAME 50
|
||||
#define C_MAX_SIZE_FUNCTION_SCRIPT_NAME 41
|
||||
#define C_MAX_FUNCTION_NB_IN_PARAM 7 /*ANNECY BBB 4 -> 7 */
|
||||
#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;
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
extern unsigned long ulIndice;
|
||||
extern unsigned long p_ulTime[255];
|
||||
extern FILE *file;
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
|
||||
|
||||
tdstFunctionEntry a_stFunctionTable[eNbFunc]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
#ifdef U64_AIDEBUG
|
||||
/* function pointers in Function.c, in params, out param ,ultra-able*/
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { d,e,f,g },
|
||||
#include "DefFunc.h"
|
||||
}
|
||||
#else /* U64_AIDEBUG*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
/* Function initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { b,english,c,d,e,f,g },
|
||||
#else
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { c,d,e,f,g },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { b,english,c,e,f,g },
|
||||
#else
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { c,e,f,g },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefFunc.h"
|
||||
#undef M_DEFINE_FUNCTION
|
||||
}
|
||||
#else /* AI_USE_SCRIPT */
|
||||
/* Function initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { b,english,d,g },
|
||||
#else
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { d,g },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { b,english,g },
|
||||
#else
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) { g },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefFunc.h"
|
||||
#undef M_DEFINE_FUNCTION
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* U64_AIDEBUG*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
#if ! defined(OPTIMIZED_COMMAND)
|
||||
void fn_vSetFunctionUltraOperator(enum tdeFuncId_ eFuncId,unsigned char bFlag)
|
||||
{
|
||||
a_stFunctionTable[eFuncId].bUltraFunctionFlag=bFlag;
|
||||
};
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
unsigned char fn_ucGetFunctionUltraOperator(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].bUltraFunctionFlag);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stFunctionFunctionPtr fn_p_fn_pGetFunctionFunctionPtr(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].p_fn_p_stFunctionFunction);
|
||||
}
|
||||
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
void fn_vFuncSaveTime(unsigned long ulTime, enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
/* if level != 0, then stop time count of last function*/
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
p_ulTime[ulIndice - 1] = (ulTime - p_ulTime[ulIndice - 1]);
|
||||
}
|
||||
/* set time for this new function and add indice*/
|
||||
p_ulTime[ulIndice++] = ulTime;
|
||||
}
|
||||
|
||||
|
||||
void fn_vFuncComputeTime(unsigned long ulCurrentTime, unsigned long ulTime, enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
/* compute total time for this function*/
|
||||
a_stFunctionTable[eFuncId].ulCallCtr++;
|
||||
a_stFunctionTable[eFuncId].ulTimeCtr += (ulCurrentTime - ulTime)/5;
|
||||
/* compute own time for this function*/
|
||||
ulIndice--;
|
||||
/* compute the time for this function*/
|
||||
a_stFunctionTable[eFuncId].ulOwnTimeCtr += ((ulCurrentTime - p_ulTime[ulIndice]) / 5);
|
||||
p_ulTime[ulIndice] = 0;
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
/* level != 0, then restart previous function time*/
|
||||
p_ulTime[ulIndice-1] = ulCurrentTime - p_ulTime[ulIndice-1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void dumpFunc()
|
||||
{
|
||||
int i;
|
||||
char string[250];
|
||||
|
||||
strcpy(string,"x:\\cpa\\");
|
||||
strcat(string,fn_p_szGetLevelName());
|
||||
strcat(string,".txt");
|
||||
|
||||
file = fopen(string,"a+");
|
||||
if (file == NULL)
|
||||
return;
|
||||
|
||||
for (i=0;i<(long)eNbFunc;i++)
|
||||
{
|
||||
if (a_stFunctionTable[i].ulCallCtr)
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stFunctionTable[i].szFunctionScriptName,
|
||||
a_stFunctionTable[i].ulCallCtr,
|
||||
a_stFunctionTable[i].ulTimeCtr,
|
||||
a_stFunctionTable[i].ulOwnTimeCtr,
|
||||
a_stFunctionTable[i].ulTimeCtr / a_stFunctionTable[i].ulCallCtr,
|
||||
a_stFunctionTable[i].ulOwnTimeCtr / a_stFunctionTable[i].ulCallCtr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stFunctionTable[i].szFunctionScriptName,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
|
||||
void clearFunc()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<(long)eNbFunc;i++)
|
||||
{
|
||||
a_stFunctionTable[i].ulCallCtr = 0;
|
||||
a_stFunctionTable[i].ulTimeCtr = 0;
|
||||
a_stFunctionTable[i].ulOwnTimeCtr = 0;
|
||||
}
|
||||
}
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeFuncId_ fn_eGetNbFunc()
|
||||
{
|
||||
return(eNbFunc);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG)
|
||||
char *szGetFunctionTypeInParamFromId(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].szFunctionTypeInParam);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if defined(__DEBUG_AI__) || defined(ACTIVE_EDITOR)
|
||||
char *szFindFunctionScriptNameFromId(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].szFunctionScriptName);
|
||||
}
|
||||
#endif /* __DEBUG_AI__ ACTIVE_EDITOR*/
|
||||
|
||||
#if defined(ACTIVE_EDITOR) || defined (U64_AIDEBUG)
|
||||
char *szGetFunctionTypeOutParamFromId(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].szFunctionTypeOutParam);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR */
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szFindFunctionEditorNameFromId(enum tdeFuncId_ eFuncId)
|
||||
{
|
||||
return(a_stFunctionTable[eFuncId].szFunctionEditorName);
|
||||
}
|
||||
|
||||
enum tdeFuncId_ fn_eFindFunctionIdFromEditorName(char *szFunction)
|
||||
{
|
||||
short wFunctionEntry;
|
||||
for(wFunctionEntry=0;wFunctionEntry<fn_eGetNbFunc();wFunctionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stFunctionTable[wFunctionEntry].szFunctionEditorName,szFunction))
|
||||
{
|
||||
return((enum tdeFuncId_) wFunctionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbFunc());
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeFuncId_ fn_eFindFunctionIdFromScriptName(char *szFunction)
|
||||
{
|
||||
short wFunctionEntry;
|
||||
for(wFunctionEntry=0;wFunctionEntry<fn_eGetNbFunc();wFunctionEntry++)
|
||||
{
|
||||
if (!stricmp(a_stFunctionTable[wFunctionEntry].szFunctionScriptName,szFunction))
|
||||
{
|
||||
return((enum tdeFuncId_) wFunctionEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbFunc());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineFunctionEntry(enum tdeFuncId_ eFuncId,char *szFunctionEditorName,char *szFunctionEditorName_En,char *szFunctionScriptName,tdp_fn_p_stFunctionFunctionPtr p_fn_p_stFunctionFunction,char *szFunctionTypeInParam,char *szFunctionTypeOutParam)
|
||||
#else
|
||||
void fn_vDefineFunctionEntry(enum tdeFuncId_ eFuncId,char *szFunctionScriptName,tdp_fn_p_stFunctionFunctionPtr p_fn_p_stFunctionFunction,char *szFunctionTypeInParam,char *szFunctionTypeOutParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eFuncId<fn_eGetNbFunc())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szFunctionEditorName)<=C_MAX_SIZE_FUNCTION_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szFunctionScriptName)<=C_MAX_SIZE_FUNCTION_SCRIPT_NAME)
|
||||
&&(strlen(szFunctionTypeInParam)<=C_MAX_FUNCTION_NB_IN_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szFunctionTypeInParam))
|
||||
&&(strlen(szFunctionTypeOutParam)<=C_MAX_FUNCTION_NB_OUT_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szFunctionTypeOutParam))
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stFunctionTable[eFuncId].szFunctionEditorName,szFunctionEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stFunctionTable[eFuncId].szFunctionScriptName,szFunctionScriptName);
|
||||
a_stFunctionTable[eFuncId].p_fn_p_stFunctionFunction=p_fn_p_stFunctionFunction;
|
||||
strcpy(a_stFunctionTable[eFuncId].szFunctionTypeInParam,szFunctionTypeInParam);
|
||||
strcpy(a_stFunctionTable[eFuncId].szFunctionTypeOutParam,szFunctionTypeOutParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s function in %s\n",szFunctionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidFunction,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitFunctionTable(tdp_fn_p_stFunctionFunctionPtr fn_p_stDefaultFunctionFunctionPointer)
|
||||
{
|
||||
short wFunctionEntry;
|
||||
for(wFunctionEntry=0;wFunctionEntry<fn_eGetNbFunc();wFunctionEntry++)
|
||||
{
|
||||
fn_vDefineFunctionEntry(M_FUNCTION_ENTRY((enum tdeFuncId_) wFunctionEntry,"","","",fn_p_stDefaultFunctionFunctionPointer,USE_NO_PARAM,USE_NO_PARAM));
|
||||
/* ULTRA OPERATOR USAGE : FALSE AS A DEFAULT*/
|
||||
fn_vSetFunctionUltraOperator((enum tdeFuncId_) wFunctionEntry,NOT_ULTRA_ABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckFunctionTable(tdp_fn_p_stFunctionFunctionPtr fn_p_stDefaultFunctionFunctionPointer)
|
||||
{
|
||||
short wFunctionEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
size_t lMaxLengthInParam=0;
|
||||
size_t lMaxLengthOutParam=0;
|
||||
for(wFunctionEntry=0;wFunctionEntry<fn_eGetNbFunc();wFunctionEntry++)
|
||||
{
|
||||
if (fn_p_fn_pGetFunctionFunctionPtr((enum tdeFuncId_) wFunctionEntry)==fn_p_stDefaultFunctionFunctionPointer)
|
||||
{
|
||||
sprintf(str,"Error while defining %s function in %s\n",a_stFunctionTable[wFunctionEntry].szFunctionScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidFunction,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stFunctionTable[wFunctionEntry].szFunctionScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stFunctionTable[wFunctionEntry].szFunctionEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if ((lLen=strlen(a_stFunctionTable[wFunctionEntry].szFunctionTypeInParam))>lMaxLengthInParam)
|
||||
{
|
||||
lMaxLengthInParam=lLen;
|
||||
}
|
||||
if ((lLen=strlen(a_stFunctionTable[wFunctionEntry].szFunctionTypeOutParam))>lMaxLengthOutParam)
|
||||
{
|
||||
lMaxLengthOutParam=lLen;
|
||||
}
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_FUNCTION_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_FUNCTION_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_FUNCTION_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_FUNCTION_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if (lMaxLengthInParam<C_MAX_FUNCTION_NB_IN_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_FUNCTION_NB_IN_PARAM in %s to %d\n",__FILE__,lMaxLengthInParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
if (lMaxLengthOutParam<C_MAX_FUNCTION_NB_OUT_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_FUNCTION_NB_OUT_PARAM in %s to %d\n",__FILE__,lMaxLengthOutParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
288
Rayman_X/cpa/tempgrp/AI/AIGame/ConvKey.c
Normal file
288
Rayman_X/cpa/tempgrp/AI/AIGame/ConvKey.c
Normal file
@@ -0,0 +1,288 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumKey.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtKey.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumKey.h"
|
||||
#include "ConvKey.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
|
||||
#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
|
||||
|
||||
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)
|
||||
/* 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;
|
||||
|
||||
tdstKeyWordEntry a_stKeyWordTable[eNbKeyWord]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
/* KeyWords initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { b,english,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { c,d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { b,english,c,e,f },
|
||||
#else
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { c,e,f },
|
||||
#endif
|
||||
#endif /* _AI_LIB_ */
|
||||
#include "DefKey.h"
|
||||
#undef M_DEFINE_KEYWORD
|
||||
}
|
||||
#else /* AI_USE_SCRIPT */
|
||||
/* KeyWords initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { b,english,d },
|
||||
#else
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { d },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { b,english },
|
||||
#else
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) { },
|
||||
#endif
|
||||
#endif /* _AI_LIB_ */
|
||||
#include "DefKey.h"
|
||||
#undef M_DEFINE_KEYWORD
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stKeyWordFunctionPtr fn_p_fn_pGetKeyWordFunctionPtr(enum tdeKeyWordId_ eKeyWordId)
|
||||
{
|
||||
return(a_stKeyWordTable[eKeyWordId].p_fn_p_stKeyWordFunction);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeKeyWordId_ fn_eGetNbKeyWord()
|
||||
{
|
||||
return(eNbKeyWord);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szGetKeyWordTypeInParamFromId(enum tdeKeyWordId_ eKeyWordId)
|
||||
{
|
||||
return(a_stKeyWordTable[eKeyWordId].szKeyWordTypeInParam);
|
||||
}
|
||||
|
||||
char *szGetKeyWordTypeOutParamFromId(enum tdeKeyWordId_ eKeyWordId)
|
||||
{
|
||||
return(a_stKeyWordTable[eKeyWordId].szKeyWordTypeOutParam);
|
||||
}
|
||||
|
||||
/* modif : enum tdeKeyWordId_ fn_eFindKeyWordIdFromEditorName(char *szKeyWord, int langage)*/
|
||||
enum tdeKeyWordId_ fn_eFindKeyWordIdFromEditorName(char *szKeyWord)
|
||||
{
|
||||
short wKeyWordEntry;
|
||||
for(wKeyWordEntry=0;wKeyWordEntry<fn_eGetNbKeyWord();wKeyWordEntry++)
|
||||
{
|
||||
if (!stricmp(a_stKeyWordTable[wKeyWordEntry].szKeyWordEditorName,szKeyWord))
|
||||
{
|
||||
return((enum tdeKeyWordId_) wKeyWordEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbKeyWord());
|
||||
}
|
||||
|
||||
char *szFindKeyWordScriptNameFromId(enum tdeKeyWordId_ eKeyWordId)
|
||||
{
|
||||
return(a_stKeyWordTable[eKeyWordId].szKeyWordScriptName);
|
||||
}
|
||||
/* modif : char *szFindKeyWordEditorNameFromId(enum tdeKeyWordId_ eKeyWordId, int langage)*/
|
||||
char *szFindKeyWordEditorNameFromId(enum tdeKeyWordId_ eKeyWordId)
|
||||
{
|
||||
return(a_stKeyWordTable[eKeyWordId].szKeyWordEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeKeyWordId_ fn_eFindKeyWordIdFromScriptName(char *szKeyWord)
|
||||
{
|
||||
short wKeyWordEntry;
|
||||
for(wKeyWordEntry=0;wKeyWordEntry<fn_eGetNbKeyWord();wKeyWordEntry++)
|
||||
{
|
||||
if (!stricmp(a_stKeyWordTable[wKeyWordEntry].szKeyWordScriptName,szKeyWord))
|
||||
{
|
||||
return((enum tdeKeyWordId_) wKeyWordEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbKeyWord());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineKeyWordEntry(enum tdeKeyWordId_ eKeyWordId,char *szKeyWordEditorName,char *szKeyWordEditorName_En,char *szKeyWordScriptName,tdp_fn_p_stKeyWordFunctionPtr p_fn_p_stKeyWordFunction,char *szKeyWordTypeInParam,char *szKeyWordTypeOutParam)
|
||||
#else
|
||||
void fn_vDefineKeyWordEntry(enum tdeKeyWordId_ eKeyWordId,char *szKeyWordScriptName,tdp_fn_p_stKeyWordFunctionPtr p_fn_p_stKeyWordFunction,char *szKeyWordTypeInParam,char *szKeyWordTypeOutParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eKeyWordId<fn_eGetNbKeyWord())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szKeyWordEditorName)<=C_MAX_SIZE_KEYWORD_EDITOR_NAME)
|
||||
/* &&(strlen(szKeyWordEditorName_En)<=C_MAX_SIZE_KEYWORD_EDITOR_NAME)*/
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szKeyWordScriptName)<=C_MAX_SIZE_KEYWORD_SCRIPT_NAME)
|
||||
&&(fn_ucCheckTypeParam(szKeyWordTypeInParam))
|
||||
&&(strlen(szKeyWordTypeInParam)<=C_MAX_KEYWORD_NB_IN_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szKeyWordTypeOutParam))
|
||||
&&(strlen(szKeyWordTypeOutParam)<=C_MAX_KEYWORD_NB_OUT_PARAM)
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stKeyWordTable[eKeyWordId].szKeyWordEditorName,szKeyWordEditorName);
|
||||
/* strcpy(a_stKeyWordTable[eKeyWordId].szKeyWordEditorName_En,szKeyWordEditorName_En);*/
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stKeyWordTable[eKeyWordId].szKeyWordScriptName,szKeyWordScriptName);
|
||||
a_stKeyWordTable[eKeyWordId].p_fn_p_stKeyWordFunction=p_fn_p_stKeyWordFunction;
|
||||
strcpy(a_stKeyWordTable[eKeyWordId].szKeyWordTypeInParam,szKeyWordTypeInParam);
|
||||
strcpy(a_stKeyWordTable[eKeyWordId].szKeyWordTypeOutParam,szKeyWordTypeOutParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s keyword in %s\n",szKeyWordScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalUnknownKeyWord,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitKeyWordTable(tdp_fn_p_stKeyWordFunctionPtr fn_p_stDefaultKeyWordFunctionPointer)
|
||||
{
|
||||
short wKeyWordEntry;
|
||||
for(wKeyWordEntry=0;wKeyWordEntry<fn_eGetNbKeyWord();wKeyWordEntry++)
|
||||
{
|
||||
fn_vDefineKeyWordEntry(M_KEYWORD_ENTRY((enum tdeKeyWordId_) wKeyWordEntry,"","","",fn_p_stDefaultKeyWordFunctionPointer,USE_NO_PARAM,USE_NO_PARAM));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckKeyWordTable(tdp_fn_p_stKeyWordFunctionPtr fn_p_stDefaultKeyWordFunctionPointer)
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
short wKeyWordEntry;
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
size_t lMaxLengthInParam=0;
|
||||
size_t lMaxLengthOutParam=0;
|
||||
for(wKeyWordEntry=0;wKeyWordEntry<fn_eGetNbKeyWord();wKeyWordEntry++)
|
||||
{
|
||||
if (fn_p_fn_pGetKeyWordFunctionPtr((enum tdeKeyWordId_) wKeyWordEntry)==fn_p_stDefaultKeyWordFunctionPointer)
|
||||
{
|
||||
sprintf(str,"Error while defining %s keyword in %s\n",a_stKeyWordTable[wKeyWordEntry].szKeyWordScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalUnknownKeyWord,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stKeyWordTable[wKeyWordEntry].szKeyWordScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stKeyWordTable[wKeyWordEntry].szKeyWordEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
/*
|
||||
if ((lLen=strlen(a_stKeyWordTable[wKeyWordEntry].szKeyWordEditorName_En))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
*/
|
||||
|
||||
if ((lLen=strlen(a_stKeyWordTable[wKeyWordEntry].szKeyWordTypeInParam))>lMaxLengthInParam)
|
||||
{
|
||||
lMaxLengthInParam=lLen;
|
||||
}
|
||||
if ((lLen=strlen(a_stKeyWordTable[wKeyWordEntry].szKeyWordTypeOutParam))>lMaxLengthOutParam)
|
||||
{
|
||||
lMaxLengthOutParam=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_KEYWORD_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_KEYWORD_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_KEYWORD_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_KEYWORD_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
if (lMaxLengthInParam<C_MAX_KEYWORD_NB_IN_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_KEYWORD_NB_IN_PARAM in %s to %d\n",__FILE__,lMaxLengthInParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
if (lMaxLengthOutParam<C_MAX_KEYWORD_NB_OUT_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_KEYWORD_NB_OUT_PARAM in %s to %d\n",__FILE__,lMaxLengthOutParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
282
Rayman_X/cpa/tempgrp/AI/AIGame/ConvOper.c
Normal file
282
Rayman_X/cpa/tempgrp/AI/AIGame/ConvOper.c
Normal file
@@ -0,0 +1,282 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumOper.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtOper.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumOper.h"
|
||||
#include "ConvOper.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#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
|
||||
|
||||
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;
|
||||
|
||||
tdstOperatorEntry a_stOperatorTable[eNbOperator]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
/* Conditions initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { b,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { c,d },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { b,c,e,f },
|
||||
#else
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { c },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefOper.h"
|
||||
#undef M_DEFINE_OPERATOR
|
||||
}
|
||||
#else /* AI_USE_SCRIPT */
|
||||
/* Conditions initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { b,d },
|
||||
#else
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { d },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { b },
|
||||
#else
|
||||
#define M_DEFINE_OPERATOR(a,b,c,d,e,f) { },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#include "DefOper.h"
|
||||
#undef M_DEFINE_OPERATOR
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeOperatorId_ fn_eGetNbOperator()
|
||||
{
|
||||
return(eNbOperator);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stOperatorFunctionPtr fn_p_fn_pGetOperatorFunctionPtr(enum tdeOperatorId_ eOperatorId)
|
||||
{
|
||||
return(a_stOperatorTable[eOperatorId].p_fn_p_stOperatorFunction);
|
||||
}
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szGetOperatorTypeInParamFromId(enum tdeOperatorId_ eOperatorId)
|
||||
{
|
||||
return(a_stOperatorTable[eOperatorId].szOperatorTypeInParam);
|
||||
}
|
||||
|
||||
char *szGetOperatorTypeOutParamFromId(enum tdeOperatorId_ eOperatorId)
|
||||
{
|
||||
return(a_stOperatorTable[eOperatorId].szOperatorTypeOutParam);
|
||||
}
|
||||
|
||||
enum tdeOperatorId_ fn_eFindOperatorIdFromEditorName(char *szOperator)
|
||||
{
|
||||
short wOperatorEntry;
|
||||
for(wOperatorEntry=0;wOperatorEntry<fn_eGetNbOperator();wOperatorEntry++)
|
||||
{
|
||||
if (!stricmp(a_stOperatorTable[wOperatorEntry].szOperatorEditorName,szOperator))
|
||||
{
|
||||
return((enum tdeOperatorId_) wOperatorEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbOperator());
|
||||
}
|
||||
|
||||
char *szFindOperatorEditorNameFromId(enum tdeOperatorId_ eOperatorId)
|
||||
{
|
||||
return(a_stOperatorTable[eOperatorId].szOperatorEditorName);
|
||||
}
|
||||
|
||||
char *szFindOperatorScriptNameFromId(enum tdeOperatorId_ eOperatorId)
|
||||
{
|
||||
return(a_stOperatorTable[eOperatorId].szOperatorScriptName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeOperatorId_ fn_eFindOperatorIdFromScriptName(char *szOperator)
|
||||
{
|
||||
short wOperatorEntry;
|
||||
for(wOperatorEntry=0;wOperatorEntry<fn_eGetNbOperator();wOperatorEntry++)
|
||||
{
|
||||
if (!stricmp(a_stOperatorTable[wOperatorEntry].szOperatorScriptName,szOperator))
|
||||
{
|
||||
return((enum tdeOperatorId_) wOperatorEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbOperator());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineOperatorEntry(enum tdeOperatorId_ eOperatorId,char *szOperatorEditorName,char *szOperatorScriptName,tdp_fn_p_stOperatorFunctionPtr p_fn_p_stOperatorFunction,char *szOperatorTypeInParam,char *szOperatorTypeOutParam)
|
||||
#else
|
||||
void fn_vDefineOperatorEntry(enum tdeOperatorId_ eOperatorId,char *szOperatorScriptName,tdp_fn_p_stOperatorFunctionPtr p_fn_p_stOperatorFunction,char *szOperatorTypeInParam,char *szOperatorTypeOutParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eOperatorId<fn_eGetNbOperator())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szOperatorEditorName)<=C_MAX_SIZE_OPERATOR_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szOperatorScriptName)<=C_MAX_SIZE_OPERATOR_SCRIPT_NAME)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szOperatorTypeInParam)<=C_MAX_OPERATOR_NB_IN_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szOperatorTypeInParam))
|
||||
&&(strlen(szOperatorTypeOutParam)<=C_MAX_OPERATOR_NB_OUT_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szOperatorTypeOutParam))
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stOperatorTable[eOperatorId].szOperatorEditorName,szOperatorEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stOperatorTable[eOperatorId].szOperatorScriptName,szOperatorScriptName);
|
||||
a_stOperatorTable[eOperatorId].p_fn_p_stOperatorFunction=p_fn_p_stOperatorFunction;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stOperatorTable[eOperatorId].szOperatorTypeInParam,szOperatorTypeInParam);
|
||||
strcpy(a_stOperatorTable[eOperatorId].szOperatorTypeOutParam,szOperatorTypeOutParam);
|
||||
#else
|
||||
szOperatorTypeInParam=szOperatorTypeInParam;
|
||||
szOperatorTypeOutParam=szOperatorTypeOutParam;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s operator in %s\n",szOperatorScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidOperator,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitOperatorTable(tdp_fn_p_stOperatorFunctionPtr fn_p_stDefaultOperatorFunctionPointer)
|
||||
{
|
||||
short wOperatorEntry;
|
||||
for(wOperatorEntry=0;wOperatorEntry<fn_eGetNbOperator();wOperatorEntry++)
|
||||
{
|
||||
fn_vDefineOperatorEntry(M_OPERATOR_ENTRY((enum tdeOperatorId_) wOperatorEntry,"","",fn_p_stDefaultOperatorFunctionPointer,USE_NO_PARAM,USE_NO_PARAM));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckOperatorTable(tdp_fn_p_stOperatorFunctionPtr fn_p_stDefaultOperatorFunctionPointer)
|
||||
{
|
||||
short wOperatorEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
size_t lMaxLengthInParam=0;
|
||||
size_t lMaxLengthOutParam=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
for(wOperatorEntry=0;wOperatorEntry<fn_eGetNbOperator();wOperatorEntry++)
|
||||
{
|
||||
if (fn_p_fn_pGetOperatorFunctionPtr((enum tdeOperatorId_) wOperatorEntry)==fn_p_stDefaultOperatorFunctionPointer)
|
||||
{
|
||||
sprintf(str,"Error while defining %s operator in %s\n",a_stOperatorTable[wOperatorEntry].szOperatorScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidOperator,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stOperatorTable[wOperatorEntry].szOperatorScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stOperatorTable[wOperatorEntry].szOperatorEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
if ((lLen=strlen(a_stOperatorTable[wOperatorEntry].szOperatorTypeInParam))>lMaxLengthInParam)
|
||||
{
|
||||
lMaxLengthInParam=lLen;
|
||||
}
|
||||
if ((lLen=strlen(a_stOperatorTable[wOperatorEntry].szOperatorTypeOutParam))>lMaxLengthOutParam)
|
||||
{
|
||||
lMaxLengthOutParam=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_OPERATOR_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_OPERATOR_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_OPERATOR_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_OPERATOR_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
if (lMaxLengthInParam<C_MAX_OPERATOR_NB_IN_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_OPERATOR_NB_IN_PARAM in %s to %d\n",__FILE__,lMaxLengthInParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
if (lMaxLengthOutParam<C_MAX_OPERATOR_NB_OUT_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_OPERATOR_NB_OUT_PARAM in %s to %d\n",__FILE__,lMaxLengthOutParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
390
Rayman_X/cpa/tempgrp/AI/AIGame/ConvProc.c
Normal file
390
Rayman_X/cpa/tempgrp/AI/AIGame/ConvProc.c
Normal file
@@ -0,0 +1,390 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#include "EnumProc.h"
|
||||
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
#include "ProtProc.h"
|
||||
#endif
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
#include "EnumProc.h"
|
||||
#include "ConvProc.h"
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
#define C_MAX_SIZE_PROCEDURE_EDITOR_NAME 50
|
||||
#define C_MAX_SIZE_PROCEDURE_SCRIPT_NAME 40
|
||||
|
||||
#define C_MAX_PROCEDURE_NB_PARAM 8/*Ylt passage de 6 <20> 8 arguments*/
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
extern unsigned long ulIndice;
|
||||
extern unsigned long p_ulTime[255];
|
||||
extern FILE *file;
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
|
||||
tdstProcedureEntry a_stProcedureTable[eNbProcedure]
|
||||
#if defined(OPTIMIZED_COMMAND)
|
||||
=
|
||||
{
|
||||
#ifdef U64_AIDEBUG
|
||||
/* function pointers in Procedure.c, in params,ultra-able*/
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { d,e,f },
|
||||
#include "DefProc.h"
|
||||
}
|
||||
#else /* U64_AIDEBUG*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
/* Procedure initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,c,d,e,f },
|
||||
#else
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { c,d,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,c,e,f },
|
||||
#else
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { c,e,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* _AI_LIB_*/
|
||||
#include "DefProc.h"
|
||||
#undef M_DEFINE_PROCEDURE
|
||||
}
|
||||
#else /* AI_USE_SCRIPT */
|
||||
/* Procedure initialisation*/
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,d,f },
|
||||
#else
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { d,f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,f },
|
||||
#else
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { f },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* _AI_LIB_*/
|
||||
#include "DefProc.h"
|
||||
#undef M_DEFINE_PROCEDURE
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* U64_AIDEBUG*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
;
|
||||
|
||||
#if ! defined(OPTIMIZED_COMMAND)
|
||||
void fn_vSetProcedureUltraOperator(enum tdeProcedureId_ eProcId,unsigned char bFlag)
|
||||
{
|
||||
a_stProcedureTable[eProcId].bUltraProcedureFlag=bFlag;
|
||||
};
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
unsigned char fn_ucGetProcedureUltraOperator(enum tdeProcedureId_ eProcId)
|
||||
{
|
||||
return(a_stProcedureTable[eProcId].bUltraProcedureFlag);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_p_stProcedureFunctionPtr fn_p_fn_pGetProcedureFunctionPtr(enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
return(a_stProcedureTable[eProcedureId].p_fn_p_stProcedureFunction);
|
||||
}
|
||||
|
||||
|
||||
#ifdef PROFILE_IA
|
||||
|
||||
void fn_vProcSaveTime(unsigned long ulTime, enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
/* if level != 0, then stop time count of last function*/
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
p_ulTime[ulIndice - 1] = (ulTime - p_ulTime[ulIndice - 1]);
|
||||
}
|
||||
/* set time for this new function and add indice*/
|
||||
p_ulTime[ulIndice++] = ulTime;
|
||||
}
|
||||
|
||||
|
||||
void fn_vProcComputeTime(unsigned long ulCurrentTime, unsigned long ulTime, enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
/* compute total time for this function*/
|
||||
a_stProcedureTable[eProcedureId].ulCallCtr++;
|
||||
a_stProcedureTable[eProcedureId].ulTimeCtr += (ulCurrentTime - ulTime)/5;
|
||||
/* compute own time for this function*/
|
||||
ulIndice--;
|
||||
/* compute the time for this function*/
|
||||
a_stProcedureTable[eProcedureId].ulOwnTimeCtr += ((ulCurrentTime - p_ulTime[ulIndice]) / 5);
|
||||
p_ulTime[ulIndice] = 0;
|
||||
if (ulIndice != 0)
|
||||
{
|
||||
/* level != 0, then restart previous function time*/
|
||||
p_ulTime[ulIndice-1] = ulCurrentTime - p_ulTime[ulIndice-1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void dumpProc()
|
||||
{
|
||||
int i;
|
||||
char string[250];
|
||||
|
||||
strcpy(string,"x:\\cpa\\");
|
||||
strcat(string,fn_p_szGetLevelName());
|
||||
strcat(string,".txt");
|
||||
|
||||
file = fopen(string,"a+");
|
||||
if (file == NULL)
|
||||
return;
|
||||
|
||||
for (i=0;i<(long)eNbProcedure;i++)
|
||||
{
|
||||
if (a_stProcedureTable[i].ulCallCtr)
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stProcedureTable[i].szProcedureScriptName,
|
||||
a_stProcedureTable[i].ulCallCtr,
|
||||
a_stProcedureTable[i].ulTimeCtr,
|
||||
a_stProcedureTable[i].ulOwnTimeCtr,
|
||||
a_stProcedureTable[i].ulTimeCtr / a_stProcedureTable[i].ulCallCtr,
|
||||
a_stProcedureTable[i].ulOwnTimeCtr / a_stProcedureTable[i].ulCallCtr);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(file,"%s %i %i %i %i %i\n",
|
||||
a_stProcedureTable[i].szProcedureScriptName,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
|
||||
void clearProc()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<(long)eNbProcedure;i++)
|
||||
{
|
||||
a_stProcedureTable[i].ulCallCtr = 0;
|
||||
a_stProcedureTable[i].ulTimeCtr = 0;
|
||||
a_stProcedureTable[i].ulOwnTimeCtr = 0;
|
||||
}
|
||||
}
|
||||
#endif /* PROFILE_IA*/
|
||||
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeProcedureId_ fn_eGetNbProcedure()
|
||||
{
|
||||
return(eNbProcedure);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined(__DEBUG_AI__) || defined(ACTIVE_EDITOR) || defined(U64_AIDEBUG)
|
||||
char *szGetProcedureTypeInParamFromId(enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
return(a_stProcedureTable[eProcedureId].szProcedureTypeParam);
|
||||
}
|
||||
#endif /* __DEBUG_AI__ ACTIVE_EDITOR*/
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *szGetProcedureTypeOutParamFromId(enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
eProcedureId=eProcedureId;
|
||||
return(USE_NO_PARAM);
|
||||
}
|
||||
|
||||
enum tdeProcedureId_ fn_eFindProcedureIdFromEditorName(char *szProcedure)
|
||||
{
|
||||
short wProcedureEntry;
|
||||
for(wProcedureEntry=0;wProcedureEntry<fn_eGetNbProcedure();wProcedureEntry++)
|
||||
{
|
||||
if (!stricmp(a_stProcedureTable[wProcedureEntry].szProcedureEditorName,szProcedure))
|
||||
{
|
||||
return((enum tdeProcedureId_) wProcedureEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbProcedure());
|
||||
}
|
||||
|
||||
char *szFindProcedureEditorNameFromId(enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
return(a_stProcedureTable[eProcedureId].szProcedureEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char *szFindProcedureScriptNameFromId(enum tdeProcedureId_ eProcedureId)
|
||||
{
|
||||
return(a_stProcedureTable[eProcedureId].szProcedureScriptName);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeProcedureId_ fn_eFindProcedureIdFromScriptName(char *szProcedure)
|
||||
{
|
||||
short wProcedureEntry;
|
||||
for(wProcedureEntry=0;wProcedureEntry<fn_eGetNbProcedure();wProcedureEntry++)
|
||||
{
|
||||
if (!stricmp(a_stProcedureTable[wProcedureEntry].szProcedureScriptName,szProcedure))
|
||||
{
|
||||
return((enum tdeProcedureId_) wProcedureEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbProcedure());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
void fn_vDefineProcedureEntry(enum tdeProcedureId_ eProcedureId,char *szProcedureEditorName,char *szProcedureEditorName_En,char *szProcedureScriptName,tdp_fn_p_stProcedureFunctionPtr p_fn_p_stProcedureFunction,char *szProcedureTypeParam)
|
||||
#else
|
||||
void fn_vDefineProcedureEntry(enum tdeProcedureId_ eProcedureId,char *szProcedureScriptName,tdp_fn_p_stProcedureFunctionPtr p_fn_p_stProcedureFunction,char *szProcedureTypeParam)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
{
|
||||
if (
|
||||
(eProcedureId<fn_eGetNbProcedure())
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
&&(strlen(szProcedureEditorName)<=C_MAX_SIZE_PROCEDURE_EDITOR_NAME)
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
&&(strlen(szProcedureScriptName)<=C_MAX_SIZE_PROCEDURE_SCRIPT_NAME)
|
||||
&&(strlen(szProcedureTypeParam)<=C_MAX_PROCEDURE_NB_PARAM)
|
||||
&&(fn_ucCheckTypeParam(szProcedureTypeParam))
|
||||
)
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
strcpy(a_stProcedureTable[eProcedureId].szProcedureEditorName,szProcedureEditorName);
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
strcpy(a_stProcedureTable[eProcedureId].szProcedureScriptName,szProcedureScriptName);
|
||||
a_stProcedureTable[eProcedureId].p_fn_p_stProcedureFunction=p_fn_p_stProcedureFunction;
|
||||
strcpy(a_stProcedureTable[eProcedureId].szProcedureTypeParam,szProcedureTypeParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
sprintf(str,"Error while defining %s procedure in %s\n",szProcedureScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidProcedure,str);
|
||||
}
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
void fn_vInitProcedureTable(tdp_fn_p_stProcedureFunctionPtr fn_p_stDefaultProcedureFunctionPointer)
|
||||
{
|
||||
short wProcedureEntry;
|
||||
for(wProcedureEntry=0;wProcedureEntry<fn_eGetNbProcedure();wProcedureEntry++)
|
||||
{
|
||||
fn_vDefineProcedureEntry(M_PROCEDURE_ENTRY((enum tdeProcedureId_) wProcedureEntry,"","","",fn_p_stDefaultProcedureFunctionPointer,USE_NO_PARAM));
|
||||
/* ULTRA OPERATOR USAGE : FALSE AS A DEFAULT*/
|
||||
fn_vSetProcedureUltraOperator((enum tdeProcedureId_) wProcedureEntry,NOT_ULTRA_ABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_vCheckProcedureTable(tdp_fn_p_stProcedureFunctionPtr fn_p_stDefaultProcedureFunctionPointer)
|
||||
{
|
||||
short wProcedureEntry;
|
||||
char str[C_MAX_LENGTH_STRING];
|
||||
size_t lLen;
|
||||
size_t lMaxLengthScriptName=0;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
size_t lMaxLengthEditorName=0;
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
size_t lMaxLengthParam=0;
|
||||
for(wProcedureEntry=0;wProcedureEntry<fn_eGetNbProcedure();wProcedureEntry++)
|
||||
{
|
||||
if (fn_p_fn_pGetProcedureFunctionPtr((enum tdeProcedureId_) wProcedureEntry)==fn_p_stDefaultProcedureFunctionPointer)
|
||||
{
|
||||
sprintf(str,"Error while defining %s procedure in %s\n",a_stProcedureTable[wProcedureEntry].szProcedureScriptName,__FILE__);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalNotValidProcedure,str);
|
||||
}
|
||||
if ((lLen=strlen(a_stProcedureTable[wProcedureEntry].szProcedureScriptName))>lMaxLengthScriptName)
|
||||
{
|
||||
lMaxLengthScriptName=lLen;
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if ((lLen=strlen(a_stProcedureTable[wProcedureEntry].szProcedureEditorName))>lMaxLengthEditorName)
|
||||
{
|
||||
lMaxLengthEditorName=lLen;
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if ((lLen=strlen(a_stProcedureTable[wProcedureEntry].szProcedureTypeParam))>lMaxLengthParam)
|
||||
{
|
||||
lMaxLengthParam=lLen;
|
||||
}
|
||||
}
|
||||
#if !defined(U64)
|
||||
{
|
||||
if (lMaxLengthScriptName<C_MAX_SIZE_PROCEDURE_SCRIPT_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_PROCEDURE_SCRIPT_NAME in %s to %d\n",__FILE__,lMaxLengthScriptName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
if (lMaxLengthEditorName<C_MAX_SIZE_PROCEDURE_EDITOR_NAME)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_SIZE_PROCEDURE_EDITOR_NAME in %s to %d\n",__FILE__,lMaxLengthEditorName);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
if (lMaxLengthParam<C_MAX_PROCEDURE_NB_PARAM)
|
||||
{
|
||||
sprintf(str,"*** AI : You should reduce C_MAX_PROCEDURE_NB_PARAM in %s to %d\n",__FILE__,lMaxLengthParam);
|
||||
OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
#endif /* U64*/
|
||||
}
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
610
Rayman_X/cpa/tempgrp/AI/AIGame/ConvVar.c
Normal file
610
Rayman_X/cpa/tempgrp/AI/AIGame/ConvVar.c
Normal file
@@ -0,0 +1,610 @@
|
||||
#if defined(_AI_LIB_)
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
/* so that exported functions are effectively exported !*/
|
||||
#include "Convert.h"
|
||||
|
||||
#include "ProtVar.h"
|
||||
#include "EnumVar.h"
|
||||
#include "VarType.h"
|
||||
|
||||
#else
|
||||
#include <string.h>
|
||||
#include "specif/AIOption.h"
|
||||
|
||||
#include "EnumVar.h"
|
||||
#include "VarType.h"
|
||||
#include "ConvVar.h"
|
||||
|
||||
#include "ConvCst.h"
|
||||
|
||||
#endif /* _AI_LIB_*/
|
||||
|
||||
/******************************************************************************/
|
||||
/* dsgvar types */
|
||||
/******************************************************************************/
|
||||
#define C_MAX_SIZE_DSGVAR_NAME 20
|
||||
#define NB_MAX_DSGVAR_PARAM 4
|
||||
#define NB_MAX_DSGVAR_DEFAULT_PARAM 12
|
||||
|
||||
typedef struct tdstDsgVarTypeTableEntry_
|
||||
{
|
||||
/* string used in editor*/
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char szEditorName[C_MAX_SIZE_DSGVAR_NAME+1];
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
/* string used in script*/
|
||||
char szScriptName[C_MAX_SIZE_DSGVAR_NAME+1];
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
enum tdeVariableType_ eVariableType;
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char szParamType[2];
|
||||
char szParamSubType[2];
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_ucGetDsgVarFunctionPtr p_fn_ucGetDsgVarFunction;
|
||||
tdp_fn_ucSetDsgVarFunctionPtr p_fn_ucSetDsgVarFunction;
|
||||
#endif /* _AI_LIB_ */
|
||||
} tdstDsgVarTypeTableEntry;
|
||||
|
||||
/*
|
||||
static tdstDsgVarTypeTableEntry a_stDsgVarTypeTable[eNbDsgVarType]=
|
||||
{
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {b,c,d,e,f},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {c,d,e,f},
|
||||
#endif // ACTIVE_EDITOR
|
||||
#else // AI_USE_SCRIPT
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {b,d,e,f},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {d,e,f},
|
||||
#endif // ACTIVE_EDITOR
|
||||
#endif // AI_USE_SCRIPT
|
||||
#else
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {b,c,d},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {c,d},
|
||||
#endif // ACTIVE_EDITOR
|
||||
#else // AI_USE_SCRIPT
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {b,d},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h) {d},
|
||||
#endif // ACTIVE_EDITOR
|
||||
#endif // AI_USE_SCRIPT
|
||||
#endif // _AI_LIB_
|
||||
#include "DefVar.h"
|
||||
#undef M_DEFINE_DSGVAR_TYPE
|
||||
};
|
||||
*/
|
||||
|
||||
static tdstDsgVarTypeTableEntry a_stDsgVarTypeTable[eNbDsgVarType]=
|
||||
{
|
||||
#if defined(_AI_LIB_)
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {b,c,d,e,f,g,h},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {c,d,g,h},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {b,d,e,f,g,h},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {d,g,h},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#else
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {b,c,d,e,f},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {c,d},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {b,d,e,f},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) {d},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#endif /* _AI_LIB_ */
|
||||
#include "DefVar.h"
|
||||
#undef M_DEFINE_DSGVAR_TYPE
|
||||
};
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
enum tdeDsgVarTypeId_ fn_eGetNbDsgVarType()
|
||||
{
|
||||
return(eNbDsgVarType);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
#if defined(__DEBUG_AI__)
|
||||
char *szFindDsgVarTypeScriptNameFromId(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (!M_IsDsgVarTypeIdValid(eDsgVarTypeId))
|
||||
return(NULL);
|
||||
#endif
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].szScriptName);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(_AI_LIB_)
|
||||
tdp_fn_ucGetDsgVarFunctionPtr fn_p_fn_pGetDsgVarGetFunctionPtr(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].p_fn_ucGetDsgVarFunction);
|
||||
}
|
||||
|
||||
tdp_fn_ucSetDsgVarFunctionPtr fn_p_fn_pGetDsgVarSetFunctionPtr(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].p_fn_ucSetDsgVarFunction);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *fn_szFindStringTypeFromVariableType(tdeVariableType eType)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<fn_eGetNbDsgVarType();i++)
|
||||
{
|
||||
if (a_stDsgVarTypeTable[i].eVariableType==eType)
|
||||
{
|
||||
return(a_stDsgVarTypeTable[i].szParamType);
|
||||
}
|
||||
}
|
||||
return(USE_NO_PARAM);
|
||||
}
|
||||
|
||||
char *fn_szFindStringTypeFromDsgVarType(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].szParamType);
|
||||
}
|
||||
|
||||
char *fn_szFindStringSubTypeFromDsgVarType(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].szParamSubType);
|
||||
}
|
||||
|
||||
enum tdeDsgVarTypeId_ fn_eFindDsgVarTypeIdFromEditorName(char *szDsgVarType)
|
||||
{
|
||||
short wDsgVarTypeEntry;
|
||||
for(wDsgVarTypeEntry=0;wDsgVarTypeEntry<fn_eGetNbDsgVarType();wDsgVarTypeEntry++)
|
||||
{
|
||||
if (!stricmp(a_stDsgVarTypeTable[wDsgVarTypeEntry].szEditorName,szDsgVarType))
|
||||
{
|
||||
return((enum tdeDsgVarTypeId_) wDsgVarTypeEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbDsgVarType());
|
||||
}
|
||||
|
||||
char *szFindDsgVarTypeEditorNameFromId(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (!M_IsDsgVarTypeIdValid(eDsgVarTypeId))
|
||||
return(NULL);
|
||||
#endif
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].szEditorName);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
/*#if defined(ACTIVE_EDITOR) */
|
||||
enum tdeVariableType_ fn_GetDsgVarType(enum tdeDsgVarTypeId_ eDsgVarTypeId)
|
||||
{
|
||||
#if defined(__DEBUG_AI__)
|
||||
if (!M_IsDsgVarTypeIdValid(eDsgVarTypeId))
|
||||
return(E_vt_None);
|
||||
#endif
|
||||
return(a_stDsgVarTypeTable[eDsgVarTypeId].eVariableType);
|
||||
}
|
||||
/*#endif*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
enum tdeDsgVarTypeId_ fn_eFindDsgVarTypeIdFromScriptName(char *szDsgVarType)
|
||||
{
|
||||
short wDsgVarTypeEntry;
|
||||
for(wDsgVarTypeEntry=0;wDsgVarTypeEntry<fn_eGetNbDsgVarType();wDsgVarTypeEntry++)
|
||||
{
|
||||
if (!stricmp(a_stDsgVarTypeTable[wDsgVarTypeEntry].szScriptName,szDsgVarType))
|
||||
{
|
||||
return((enum tdeDsgVarTypeId_) wDsgVarTypeEntry);
|
||||
}
|
||||
}
|
||||
return(fn_eGetNbDsgVarType());
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
/******************************************************************************/
|
||||
/* for SAI save types */
|
||||
/******************************************************************************/
|
||||
/******************************************************************************/
|
||||
/* for SAI save types */
|
||||
/******************************************************************************/
|
||||
#if !defined(_AI_LIB_) && defined(__SAI_Enum_h__)
|
||||
#define KNOW_SAI
|
||||
#endif
|
||||
|
||||
#define MAX_LENGTH_SAVE_TYPE_EDITOR_NAME 20
|
||||
#define MAX_LENGTH_SAVE_TYPE_SCRIPT_NAME 20
|
||||
|
||||
typedef struct tdstSaveTypeEntry_
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char szEditorName[MAX_LENGTH_SAVE_TYPE_EDITOR_NAME];
|
||||
#endif
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char szScriptName[MAX_LENGTH_SAVE_TYPE_SCRIPT_NAME];
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_) || defined(KNOW_SAI)
|
||||
SAI_tdeFlags eFlags;
|
||||
#endif /* _AI_LIB_ || KNOW_SAI */
|
||||
} tdstSaveTypeEntry;
|
||||
|
||||
|
||||
tdstSaveTypeEntry a_st_SaveTypeTable[] =
|
||||
{
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(_AI_LIB_) || defined(KNOW_SAI)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {a,b,c},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {b,c},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {a,b},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {b},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_) || defined(KNOW_SAI)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {a,c},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {c},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) {a},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) { },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#include "DefSAI.h"
|
||||
#undef M_DEFINE_DSGVAR_SAVE_TYPE
|
||||
};
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
unsigned char fn_ucGetSaveTypeNumber()
|
||||
{
|
||||
return((unsigned char) (sizeof(a_st_SaveTypeTable)/sizeof(a_st_SaveTypeTable[0])));
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
unsigned char fn_ucDefaultSaveTypeNumber()
|
||||
{
|
||||
return(DEFAULT_DSGVAR_SAVE_TYPE_ENTRY);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_) || defined(KNOW_SAI)
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
|
||||
|
||||
#if defined(WIN32) && defined(_DEBUG) /* on PC, and in debug versions */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
extern ACP_tdxBool g_bIsLoadingAnAlways ;
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* WIN32 && _DEBUG */
|
||||
|
||||
SAI_tdeFlags fn_eFindSaveTypeFromScriptName(char *szSaveType, char *_p_szPersoName, unsigned char _ucVarId )
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetSaveTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_SaveTypeTable[i].szScriptName,szSaveType))
|
||||
{
|
||||
/* it is strictly forbidden for an actor to jave a dsgvar saved in the general save file if it is not in the fix load block */
|
||||
#if !defined ( ACTIVE_EDITOR )
|
||||
if
|
||||
(
|
||||
( a_st_SaveTypeTable[i].eFlags & SAI_ePlayerSaveMask )
|
||||
&& !GAM_fn_bIsEngineInFixMode()
|
||||
)
|
||||
{
|
||||
char szErrorMsg[200];
|
||||
sprintf(
|
||||
szErrorMsg,
|
||||
"Perso %s has dsgvar %d with a Player save type, but it is not loaded with the Fix block.",
|
||||
_p_szPersoName,
|
||||
_ucVarId
|
||||
);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalInvalidDsgvarSaveType,szErrorMsg);
|
||||
}
|
||||
#if defined(WIN32) && defined(_DEBUG) /* on PC, and in debug versions */
|
||||
else if
|
||||
(
|
||||
g_bIsLoadingAnAlways /* if loading an always */
|
||||
&& ( a_st_SaveTypeTable[i].eFlags & SAI_eAllSaveMask ) /* and there is a save type */
|
||||
)
|
||||
{
|
||||
char szErrorMsg[200];
|
||||
sprintf(
|
||||
szErrorMsg,
|
||||
"Perso %s has dsgvar %d with a save type, but it is an always.",
|
||||
_p_szPersoName,
|
||||
_ucVarId
|
||||
);
|
||||
M_AIFatalErrorMsg(E_uwAIFatalInvalidDsgvarSaveType,szErrorMsg);
|
||||
}
|
||||
#endif /* WIN32 && _DEBUG */
|
||||
#endif /* ! ACTIVE_EDITOR */
|
||||
return(a_st_SaveTypeTable[i].eFlags);
|
||||
}
|
||||
}
|
||||
return(a_st_SaveTypeTable[fn_ucDefaultSaveTypeNumber()].eFlags);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
SAI_tdeFlags fn_eFindSaveTypeFromSaveTypeNumber(unsigned char ucSaveTypeNumber)
|
||||
{
|
||||
return(a_st_SaveTypeTable[ucSaveTypeNumber].eFlags);
|
||||
}
|
||||
#endif /* _AI_LIB_ || KNOW_SAI */
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char *fn_szFindScriptNameFromSaveTypeNumber(unsigned char ucSaveTypeNumber)
|
||||
{
|
||||
return(a_st_SaveTypeTable[ucSaveTypeNumber].szScriptName);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *fn_szFindEditorNameFromSaveTypeNumber(unsigned char ucSaveTypeNumber)
|
||||
{
|
||||
return(a_st_SaveTypeTable[ucSaveTypeNumber].szEditorName);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_) || defined(KNOW_SAI)
|
||||
SAI_tdeFlags fn_eFindSaveTypeFromEditorName(char *szSaveType)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetSaveTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_SaveTypeTable[i].szEditorName,szSaveType))
|
||||
{
|
||||
return(a_st_SaveTypeTable[i].eFlags);
|
||||
}
|
||||
}
|
||||
return(a_st_SaveTypeTable[fn_ucDefaultSaveTypeNumber()].eFlags);
|
||||
}
|
||||
|
||||
char *fn_szFindEditorNameFromSaveType(SAI_tdeFlags eFlags)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetSaveTypeNumber();i++)
|
||||
{
|
||||
if (a_st_SaveTypeTable[i].eFlags==eFlags)
|
||||
{
|
||||
return(a_st_SaveTypeTable[i].szEditorName);
|
||||
}
|
||||
}
|
||||
return(a_st_SaveTypeTable[fn_ucDefaultSaveTypeNumber()].szEditorName);
|
||||
}
|
||||
|
||||
char *fn_szFindScriptNameFromSaveType(SAI_tdeFlags eFlags)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetSaveTypeNumber();i++)
|
||||
{
|
||||
if (a_st_SaveTypeTable[i].eFlags==eFlags)
|
||||
{
|
||||
return(a_st_SaveTypeTable[i].szScriptName);
|
||||
}
|
||||
}
|
||||
return(a_st_SaveTypeTable[fn_ucDefaultSaveTypeNumber()].szScriptName);
|
||||
}
|
||||
|
||||
unsigned char fn_ucFindSaveTypeNumberFromScriptName(char *szSaveType)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetSaveTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_SaveTypeTable[i].szScriptName,szSaveType))
|
||||
{
|
||||
return(i);
|
||||
}
|
||||
}
|
||||
return(fn_ucGetSaveTypeNumber());
|
||||
}
|
||||
#endif /* _AI_LIB_ || KNOW_SAI*/
|
||||
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* for OTI init types */
|
||||
/******************************************************************************/
|
||||
#if !defined(_AI_LIB_) && defined(__OBJINIT_h__)
|
||||
#define KNOW_OTI
|
||||
#endif
|
||||
|
||||
#define MAX_LENGTH_INIT_TYPE_EDITOR_NAME 20
|
||||
#define MAX_LENGTH_INIT_TYPE_SCRIPT_NAME 20
|
||||
|
||||
typedef struct tdstInitTypeEntry_
|
||||
{
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char szEditorName[MAX_LENGTH_INIT_TYPE_EDITOR_NAME];
|
||||
#endif
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char szScriptName[MAX_LENGTH_INIT_TYPE_SCRIPT_NAME];
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_) || defined(KNOW_OTI)
|
||||
tdeObjectTreeInit eFlags;
|
||||
#endif /* _AI_LIB_ || KNOW_OTI */
|
||||
} tdstInitTypeEntry;
|
||||
|
||||
|
||||
tdstInitTypeEntry a_st_InitTypeTable[] =
|
||||
{
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
#if defined(_AI_LIB_) || defined(KNOW_OTI)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {a,b,c},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {b,c},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {a,b},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {b},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#else /* AI_USE_SCRIPT */
|
||||
#if defined(_AI_LIB_) || defined(KNOW_OTI)
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {a,c},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {c},
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#else
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) {a},
|
||||
#else
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) { },
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
#endif
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
#include "DefOTI.h"
|
||||
#undef M_DEFINE_DSGVAR_INIT_TYPE
|
||||
};
|
||||
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
unsigned char fn_ucGetInitTypeNumber()
|
||||
{
|
||||
return((unsigned char) (sizeof(a_st_InitTypeTable)/sizeof(a_st_InitTypeTable[0])));
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
unsigned char fn_ucDefaultInitTypeNumber()
|
||||
{
|
||||
return(DEFAULT_DSGVAR_INIT_TYPE_ENTRY);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_) || defined(KNOW_OTI)
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
tdeObjectTreeInit fn_eFindInitTypeFromScriptName(char *szInitType)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetInitTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_InitTypeTable[i].szScriptName,szInitType))
|
||||
{
|
||||
return(a_st_InitTypeTable[i].eFlags);
|
||||
}
|
||||
}
|
||||
return(a_st_InitTypeTable[fn_ucDefaultInitTypeNumber()].eFlags);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
tdeObjectTreeInit fn_eFindInitTypeFromInitTypeNumber(unsigned char ucInitTypeNumber)
|
||||
{
|
||||
return(a_st_InitTypeTable[ucInitTypeNumber].eFlags);
|
||||
}
|
||||
#endif /* _AI_LIB_ || KNOW_OTI*/
|
||||
|
||||
#if defined (AI_USE_SCRIPT)
|
||||
char *fn_szFindScriptNameFromInitTypeNumber(unsigned char ucInitTypeNumber)
|
||||
{
|
||||
return(a_st_InitTypeTable[ucInitTypeNumber].szScriptName);
|
||||
}
|
||||
#endif /* AI_USE_SCRIPT */
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
char *fn_szFindEditorNameFromInitTypeNumber(unsigned char ucInitTypeNumber)
|
||||
{
|
||||
return(a_st_InitTypeTable[ucInitTypeNumber].szEditorName);
|
||||
}
|
||||
|
||||
#if defined(_AI_LIB_) || defined(KNOW_OTI)
|
||||
tdeObjectTreeInit fn_eFindInitTypeFromEditorName(char *szInitType)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetInitTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_InitTypeTable[i].szEditorName,szInitType))
|
||||
{
|
||||
return(a_st_InitTypeTable[i].eFlags);
|
||||
}
|
||||
}
|
||||
return(a_st_InitTypeTable[fn_ucDefaultInitTypeNumber()].eFlags);
|
||||
}
|
||||
|
||||
char *fn_szFindEditorNameFromInitType(tdeObjectTreeInit eFlags)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetInitTypeNumber();i++)
|
||||
{
|
||||
if (a_st_InitTypeTable[i].eFlags==eFlags)
|
||||
{
|
||||
return(a_st_InitTypeTable[i].szEditorName);
|
||||
}
|
||||
}
|
||||
return(a_st_InitTypeTable[fn_ucDefaultInitTypeNumber()].szEditorName);
|
||||
}
|
||||
|
||||
char *fn_szFindScriptNameFromInitType(tdeObjectTreeInit eFlags)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetInitTypeNumber();i++)
|
||||
{
|
||||
if (a_st_InitTypeTable[i].eFlags==eFlags)
|
||||
{
|
||||
return(a_st_InitTypeTable[i].szScriptName);
|
||||
}
|
||||
}
|
||||
return(a_st_InitTypeTable[fn_ucDefaultInitTypeNumber()].szScriptName);
|
||||
}
|
||||
|
||||
unsigned char fn_ucFindInitTypeNumberFromScriptName(char *szInitType)
|
||||
{
|
||||
unsigned char i;
|
||||
for (i=0;i<fn_ucGetInitTypeNumber();i++)
|
||||
{
|
||||
if (!stricmp(a_st_InitTypeTable[i].szScriptName,szInitType))
|
||||
{
|
||||
return(i);
|
||||
}
|
||||
}
|
||||
return(fn_ucGetInitTypeNumber());
|
||||
}
|
||||
#endif /* _AI_LIB_ || KNOW_OTI*/
|
||||
|
||||
#endif /* ACTIVE_EDITOR*/
|
571
Rayman_X/cpa/tempgrp/AI/AIGame/Convert.c
Normal file
571
Rayman_X/cpa/tempgrp/AI/AIGame/Convert.c
Normal file
@@ -0,0 +1,571 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Convert.c : Convert Id <-> string (mainly usefull for editor)*/
|
||||
/* creation : 17/01/1997 (Olivier Couvreur)*/
|
||||
/* modify : 29/01/1997 (Fabien Morales) Vertex param*/
|
||||
/* modify : 31/01/1997 (Olivier Couvreur) lint verification*/
|
||||
/* modify : 12/02/1997 (Fabien Morales) Module & DsgVarId param types*/
|
||||
/* modify : 19/02/1997 (Olivier Couvreur) types checking functions (for editor)*/
|
||||
/* modify : 26/02/1997 (Olivier Couvreur) new functions for editor type checking */
|
||||
/* modify : 11/03/1997 (Olivier Couvreur) functions for editor transfered from several modules*/
|
||||
/* modify : 25/03/1997 (Olivier Couvreur) ACTIVE_EDITOR support*/
|
||||
/* modify : 21/05/1997 (Olivier Couvreur) HitPoints support*/
|
||||
/* modify : 27/05/1997 (Olivier Couvreur) ZDD + ZDE stuff*/
|
||||
/* modify : 27/06/1997 (Olivier Couvreur) Operators,Functions,Procedures,Conditions use functions pointers !*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "GsParam.h"
|
||||
|
||||
/* so that exported functions are effectively exported !*/
|
||||
#include "Convert.h"
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
#include "specif/ActTable.h"
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
/**********************************************************************/
|
||||
/* list of all allowed char for defining types*/
|
||||
char szAutorizedTypeParam[]= \
|
||||
C_LONG_PARAM \
|
||||
C_REAL_PARAM \
|
||||
C_PERSO_PARAM \
|
||||
C_VECTOR_PARAM \
|
||||
C_MODULE_PARAM \
|
||||
C_WAYPOINT_PARAM \
|
||||
C_LIST_PARAM \
|
||||
C_BOOLEAN_PARAM \
|
||||
C_ACTION_PARAM \
|
||||
C_ZDE_PERSO_PARAM \
|
||||
C_ZDD_PERSO_PARAM \
|
||||
C_ZDM_PERSO_PARAM \
|
||||
C_ZDE_MODULE_PARAM \
|
||||
C_ZDD_MODULE_PARAM \
|
||||
C_BUTTON_PARAM \
|
||||
C_STRING_PARAM \
|
||||
C_MAP_PARAM \
|
||||
C_MASK_PARAM \
|
||||
C_MASK_PARAM \
|
||||
C_SURFACE_PARAM \
|
||||
C_LIPSYNCHRO_PARAM \
|
||||
C_OBJECTTABLE_PARAM \
|
||||
C_SECTOR_PARAM \
|
||||
C_ENV_PARAM \
|
||||
C_FAMILY_PARAM \
|
||||
C_COMPORT_PARAM \
|
||||
C_MY_REFLEX_COMPORT_PARAM \
|
||||
C_MY_INTELL_COMPORT_PARAM \
|
||||
C_REFLEX_COMPORT_PARAM \
|
||||
C_INTELL_COMPORT_PARAM \
|
||||
C_SOUNDEVENT_PARAM \
|
||||
C_ALWAYS_PARAM \
|
||||
C_POWER_PARAM \
|
||||
C_PERSO_PARAM_ONLY \
|
||||
C_FONT_PARAM \
|
||||
C_TEXT_PARAM \
|
||||
C_PARTICLEGENERATOR_PARAM \
|
||||
C_GMT_PARAM \
|
||||
C_MODEL_PARAM \
|
||||
C_ARRAY_PARAM \
|
||||
C_SUPEROBJECT_PARAM \
|
||||
/*ANNECY CT 22/01/98 {*/
|
||||
C_LIGHT_PARAM \
|
||||
/*ENANNECY CT}*/
|
||||
/*ANNECY Bart 02/02/98 {*/
|
||||
C_CAPS_PARAM \
|
||||
C_GRAPH_PARAM \
|
||||
/*ENDANNECY Bart }*/
|
||||
C_ZDR_PERSO_PARAM
|
||||
;
|
||||
|
||||
/* return a pointer on a string containing all valid chars to define types*/
|
||||
char *fn_szGetAutorizedTypeParam(void)
|
||||
{
|
||||
return (&szAutorizedTypeParam[0]);
|
||||
}
|
||||
|
||||
/* check if a string contains only valid chars*/
|
||||
unsigned char fn_ucCheckTypeParam(char *szTypeParam)
|
||||
{
|
||||
unsigned char Ok=0;
|
||||
|
||||
if (strlen(szTypeParam)<=C_MAX_NB_PARAM)
|
||||
{
|
||||
unsigned char i;
|
||||
Ok=1;
|
||||
for (i=0;((i<strlen(szTypeParam)) && (Ok==1));i++)
|
||||
{
|
||||
Ok=(unsigned char) (strchr(fn_szGetAutorizedTypeParam(),toupper(szTypeParam[i]))!=NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (!Ok)
|
||||
{
|
||||
M_AIFatalError(E_uwAIFatalWrongParamAction);
|
||||
}
|
||||
return(Ok);
|
||||
}
|
||||
#endif /* !OPTIMIZED_COMMAND*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
/* check if two types are compatible*/
|
||||
/* c1=c2*/
|
||||
/* c1=toupper(c2)*/
|
||||
/* l|l*/
|
||||
/* L|l,L*/
|
||||
/* x|x,l*/
|
||||
/* X|l,L,x,X*/
|
||||
/* Perso_Only=Perso*/
|
||||
/* My_XX=XX (where XX is rul or rfx)*/
|
||||
ACP_tdxBool fn_bIsCompatibleType(char c1,char c2)
|
||||
{
|
||||
if ((c1==c2) || (c1==(char) toupper(c2)) )
|
||||
{
|
||||
return(TRUE);
|
||||
}
|
||||
else if
|
||||
(
|
||||
(toupper(c1)==STRING1_TO_CHAR(C_REAL_PARAM)) &&
|
||||
(toupper(c2)==STRING1_TO_CHAR(C_LONG_PARAM))
|
||||
)
|
||||
{
|
||||
if(
|
||||
(c1==STRING1_TO_CHAR(C_REAL_PARAM)) ||
|
||||
(c2==STRING1_TO_CHAR(C_ADDR_LONG_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if
|
||||
(
|
||||
(c1==STRING1_TO_CHAR(C_PERSO_PARAM_ONLY)) &&
|
||||
(c2==STRING1_TO_CHAR(C_PERSO_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if
|
||||
(
|
||||
(c1==STRING1_TO_CHAR(C_REFLEX_COMPORT_PARAM)) &&
|
||||
(c2==STRING1_TO_CHAR(C_MY_REFLEX_COMPORT_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if
|
||||
(
|
||||
(c1==STRING1_TO_CHAR(C_INTELL_COMPORT_PARAM)) &&
|
||||
(c2==STRING1_TO_CHAR(C_MY_INTELL_COMPORT_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if
|
||||
(
|
||||
(toupper(c2)==STRING1_TO_CHAR(C_COMPORT_PARAM)) &&
|
||||
(
|
||||
(c1==STRING1_TO_CHAR(C_INTELL_COMPORT_PARAM)) ||
|
||||
(c1==STRING1_TO_CHAR(C_MY_INTELL_COMPORT_PARAM)) ||
|
||||
(c1==STRING1_TO_CHAR(C_REFLEX_COMPORT_PARAM)) ||
|
||||
(c1==STRING1_TO_CHAR(C_MY_REFLEX_COMPORT_PARAM))
|
||||
)
|
||||
)
|
||||
{
|
||||
return(TRUE);
|
||||
}
|
||||
else if
|
||||
(
|
||||
(toupper(c1)==STRING1_TO_CHAR(C_STRING_PARAM)) &&
|
||||
(toupper(c2)==STRING1_TO_CHAR(C_TEXT_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if
|
||||
(
|
||||
(toupper(c1)==STRING1_TO_CHAR(C_TEXT_PARAM)) &&
|
||||
(toupper(c2)==STRING1_TO_CHAR(C_STRING_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
/* check if two types are compatible for affectation*/
|
||||
ACP_tdxBool fn_bIsCompatibleTypeForAffect(char c1,char c2)
|
||||
{
|
||||
if (c1==tolower(c2))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if
|
||||
(
|
||||
(c1==STRING1_TO_CHAR(C_ADDR_REAL_PARAM))
|
||||
&&(toupper(c2)==STRING1_TO_CHAR(C_LONG_PARAM))
|
||||
)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* check if two string type are compatible*/
|
||||
ACP_tdxBool fn_bIsCompatibleStringType(char *szType1,char *szType2)
|
||||
{
|
||||
size_t l=strlen(szType1);
|
||||
|
||||
if (l!=strlen(szType2))
|
||||
{
|
||||
return(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t i;
|
||||
for (i=0;i<l;i++)
|
||||
{
|
||||
if (!fn_bIsCompatibleType(szType1[i],szType2[i]))
|
||||
return(FALSE);
|
||||
}
|
||||
}
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
ACP_tdxBool fn_bIsCompatibleStringTypeForAffect(char *szType1,char *szType2)
|
||||
{
|
||||
size_t l=strlen(szType1);
|
||||
|
||||
if (l!=strlen(szType2))
|
||||
{
|
||||
return(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t i;
|
||||
for (i=0;i<l;i++)
|
||||
{
|
||||
if (!fn_bIsCompatibleTypeForAffect(szType1[i],szType2[i]))
|
||||
return(FALSE);
|
||||
}
|
||||
}
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
/*/
|
||||
// get compatible type (c1 left, c2 right)
|
||||
char fn_cGetCompatibleType(char c1,char c2)
|
||||
{
|
||||
if (c1==c2)
|
||||
{
|
||||
return(c1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(
|
||||
(c1==(char) (*((char *) C_REAL_PARAM)) )
|
||||
||(c2==(char) (*((char *) C_REAL_PARAM)) )
|
||||
)
|
||||
{
|
||||
return( (char) (*((char *) C_REAL_PARAM)) );
|
||||
}
|
||||
return(c1);
|
||||
}
|
||||
}
|
||||
|
||||
// idem for a string
|
||||
#define C_MAX_SIZE_INFOPARAM_NAME 50
|
||||
char g_szStringType[C_MAX_SIZE_INFOPARAM_NAME+1];
|
||||
char *fn_szGetCompatibleStringType(char *szType1,char *szType2)
|
||||
{
|
||||
size_t l=strlen(szType1);
|
||||
g_szStringType[0]=0;
|
||||
g_szStringType[l]=0;
|
||||
if (l==strlen(szType2) )
|
||||
{
|
||||
size_t i;
|
||||
for (i=0;i<l;i++)
|
||||
{
|
||||
g_szStringType[i]=fn_cGetCompatibleType(szType1[i],szType2[i]);
|
||||
}
|
||||
}
|
||||
return(&g_szStringType[0]);
|
||||
}
|
||||
*/
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
/**********************************************************************/
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
unsigned char fn_ucGetDefaultActionTableNbEntries()
|
||||
{
|
||||
return(DEFAULT_ACTION_TABLE_NB_ENTRIES);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetMinActionTableNbEntries()
|
||||
{
|
||||
return(MIN_ACTION_TABLE_NB_ENTRIES);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetMaxActionTableNbEntries()
|
||||
{
|
||||
return(MAX_ACTION_TABLE_NB_ENTRIES);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
/**********************************************************************/
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
/*
|
||||
typedef struct tdstTypeConversionTableEntry_
|
||||
{
|
||||
enum tdeVariableType_ eType;
|
||||
char szStringType[2];
|
||||
} tdstTypeConversionTableEntry;
|
||||
|
||||
static tdstTypeConversionTableEntry a_stTypeConversiontable[]=
|
||||
{
|
||||
{E_vt_None, C_NO_PARAM},
|
||||
{E_vt_Boolean, C_ADDR_BOOLEAN_PARAM},
|
||||
{E_vt__128To127, C_ADDR_LONG_PARAM},
|
||||
{E_vt_0To255, C_ADDR_LONG_PARAM},
|
||||
{E_vt__32768To32767, C_ADDR_LONG_PARAM},
|
||||
{E_vt_0To65535, C_ADDR_LONG_PARAM},
|
||||
{E_vt_Integer, C_ADDR_LONG_PARAM},
|
||||
{E_vt_PositiveInteger, C_ADDR_LONG_PARAM},
|
||||
{E_vt_Float, C_ADDR_REAL_PARAM},
|
||||
{E_vt_WayPoint, C_ADDR_WAYPOINT_PARAM},
|
||||
{E_vt_Way, C_ADDR_LONG_PARAM},
|
||||
{E_vt_Perso, C_ADDR_PERSO_PARAM},
|
||||
{E_vt_List, C_ADDR_LIST_PARAM},
|
||||
//{E_vt_1bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_2bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_3bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_4bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_5bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_6bit, C_ADDR_LONG_PARAM},
|
||||
//{E_vt_7bit, C_ADDR_LONG_PARAM},
|
||||
{E_vt_MetaActionReturn, C_ADDR_LONG_PARAM},
|
||||
{E_vt_Vector, C_ADDR_VECTOR_PARAM},
|
||||
{E_vt_Module, C_ADDR_LONG_PARAM},
|
||||
{E_vt_DsgVarId, C_ADDR_LONG_PARAM},
|
||||
{E_vt_Button, C_BUTTON_PARAM},
|
||||
{E_vt_Mask, C_MASK_PARAM},
|
||||
{E_vt_Text, C_ADDR_TEXT_PARAM},
|
||||
{E_vt_GameMaterial, C_ADDR_GMT_PARAM},
|
||||
{E_vt_Action, C_ADDR_ACTION_PARAM},
|
||||
//{E_vt_Comport, C_ADDR_COMPORT_PARAM}
|
||||
{E_vt_Array, C_ADDR_ARRAY_PARAM}
|
||||
|
||||
};
|
||||
|
||||
|
||||
int fn_TypeConversionSize()
|
||||
{
|
||||
return(sizeof(a_stTypeConversiontable)/sizeof(a_stTypeConversiontable[0]));
|
||||
}
|
||||
|
||||
char *fn_szFindStringTypeFromVariableType(tdeVariableType eType)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<fn_TypeConversionSize();i++)
|
||||
{
|
||||
if (a_stTypeConversiontable[i].eType==eType)
|
||||
{
|
||||
return(a_stTypeConversiontable[i].szStringType);
|
||||
}
|
||||
}
|
||||
return(USE_NO_PARAM);
|
||||
}
|
||||
*/
|
||||
|
||||
ACP_tdxBool IsADDRType(char cType)
|
||||
{
|
||||
return((ACP_tdxBool) islower((int) cType) );
|
||||
}
|
||||
|
||||
char fn_cConvertToADDRType(char cType)
|
||||
{
|
||||
return((char) tolower((int) cType) );
|
||||
}
|
||||
|
||||
char fn_cConvertFromADDRType(char cType)
|
||||
{
|
||||
return((char) toupper((int) cType) );
|
||||
}
|
||||
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
/**********************************************************************************************************************/
|
||||
/* for multilanguage support : old aiinfo.c */
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
|
||||
/* C'est pour virer Proc,Cond,Action etc...*/
|
||||
static char *fn_szConvertString(char *str)
|
||||
{
|
||||
char *ptr;
|
||||
if ((ptr=strchr(str,'_'))!=NULL)
|
||||
{
|
||||
ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr=str;
|
||||
}
|
||||
return(ptr);
|
||||
}
|
||||
|
||||
/* C'est pour Xavier qui veut que les noms des conditions <> <= >= etc soit les m<>mes en anglais et en francais !!!*/
|
||||
static char *fn_szConvertConditionString(char *str1,char *str2)
|
||||
{
|
||||
if (!isalpha(str2[0]))
|
||||
{
|
||||
return(fn_szConvertString(str2));
|
||||
}
|
||||
return(fn_szConvertString(str1));
|
||||
}
|
||||
|
||||
/* C'est pour Xavier qui veut qu'il y ait bijection entre les mots cl<63>s et les types des variables designers*/
|
||||
/* C'est pour Xavier qui veut que les noms des types des variables commencent par une lettre !!!*/
|
||||
static char TempChar[200];
|
||||
static char *fn_szConvertDsgVarString(char *str1,char *str2)
|
||||
{
|
||||
if (!strnicmp(str2,"Type",4))
|
||||
{
|
||||
sprintf(&TempChar[0],"%sType",str1);
|
||||
return(fn_szConvertString(&TempChar[0]));
|
||||
}
|
||||
else if ((isdigit(str1[0])) || (str1[0]=='_') )
|
||||
{
|
||||
sprintf(&TempChar[0],"Integer%s",str1);
|
||||
return(&TempChar[0]);
|
||||
}
|
||||
return(str1);
|
||||
}
|
||||
|
||||
void fn_vWriteAILangue()
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
if ((fp=fopen(AI_MULTI_LANGUAGE_SCRIPT,"wt"))!=NULL)
|
||||
{
|
||||
#define M_BAR "------------------------------------------------------------------"
|
||||
|
||||
#define M_WRITE_ALL_COMMAND_START(title,nb) fprintf(fp,";%s\n;%s\n;%s\n{%s:(%d)\n",M_BAR,title,M_BAR,title,nb);
|
||||
#define M_WRITE_ALL_COMMAND_END() fprintf(fp,"}\n\n");
|
||||
|
||||
#define M_WRITE_ONE_COMMAND(title,key,fr,gb) \
|
||||
fprintf(fp,"\t{%s:%s\n",title,key); \
|
||||
fprintf(fp,"\t\t%s(%s)\n",AI_FRENCH,fr); \
|
||||
fprintf(fp,"\t\t%s(%s)\n",AI_ENGLISH,gb); \
|
||||
fprintf(fp,"\t}\n\n");
|
||||
|
||||
/* MetaActions*/
|
||||
#define M_WRITE_ALL_METAACTIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_METAACTIONS,nb)
|
||||
#define M_WRITE_ONE_METAACTION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_METAACTION,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_METAACTIONS(fn_eGetNbMetaAction())
|
||||
/*#define M_DEFINE_METAACTION(a,b,c,d,e,f) M_WRITE_ONE_METAACTION(c,b,fn_szConvertString(c))*/
|
||||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) M_WRITE_ONE_METAACTION(c,b,english)
|
||||
#include "DefAct.h"
|
||||
#undef M_DEFINE_METAACTION
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* Procedures*/
|
||||
#define M_WRITE_ALL_PROCEDURES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_PROCEDURES,nb)
|
||||
#define M_WRITE_ONE_PROCEDURE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_PROCEDURE,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_PROCEDURES(fn_eGetNbProcedure())
|
||||
/*#define M_DEFINE_PROCEDURE(a,b,c,d,e,f) M_WRITE_ONE_PROCEDURE(c,b,fn_szConvertString(c))*/
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) M_WRITE_ONE_PROCEDURE(c,b,english)
|
||||
#include "DefProc.h"
|
||||
#undef M_DEFINE_PROCEDURE
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* Functions*/
|
||||
#define M_WRITE_ALL_FUNCTIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_FUNCTIONS,nb)
|
||||
#define M_WRITE_ONE_FUNCTION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_FUNCTION,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_FUNCTIONS(fn_eGetNbFunc())
|
||||
/*#define M_DEFINE_FUNCTION(a,b,c,d,e,f,g) M_WRITE_ONE_FUNCTION(c,b,fn_szConvertString(c))*/
|
||||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) M_WRITE_ONE_FUNCTION(c,b,english)
|
||||
#include "DefFunc.h"
|
||||
#undef M_DEFINE_FUNCTION
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* Conditions*/
|
||||
#define M_WRITE_ALL_CONDITIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_CONDITIONS,nb)
|
||||
#define M_WRITE_ONE_CONDITION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_CONDITION,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_CONDITIONS(fn_eGetNbCond())
|
||||
/*#define M_DEFINE_CONDITION(a,b,c,d,e,f) M_WRITE_ONE_CONDITION(c,b,fn_szConvertConditionString(c,b))*/
|
||||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) M_WRITE_ONE_CONDITION(c,b,english)
|
||||
#include "DefCond.h"
|
||||
#undef M_DEFINE_CONDITION
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* KeyWords*/
|
||||
#define M_WRITE_ALL_KEYWORDS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_KEYWORDS,nb)
|
||||
#define M_WRITE_ONE_KEYWORD(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_KEYWORD,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_KEYWORDS(fn_eGetNbKeyWord())
|
||||
/*#define M_DEFINE_KEYWORD(a,b,c,d,e,f) M_WRITE_ONE_KEYWORD(c,b,fn_szConvertString(c))*/
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) M_WRITE_ONE_KEYWORD(c,b,english)
|
||||
#include "DefKey.h"
|
||||
#undef M_DEFINE_KEYWORD
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* Fields*/
|
||||
#define M_WRITE_ALL_FIELDS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_FIELDS,nb)
|
||||
#define M_WRITE_ONE_FIELD(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_FIELD,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_FIELDS(fn_eGetNbField())
|
||||
/*#define M_DEFINE_FIELD(a,b,c,d,e,f) M_WRITE_ONE_FIELD(c,b,fn_szConvertString(c))*/
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) M_WRITE_ONE_FIELD(c,b,english)
|
||||
#include "DefFild.h"
|
||||
#undef M_DEFINE_FIELD
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* Designer variables*/
|
||||
#define M_WRITE_ALL_DSGVAR_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_TYPES,nb)
|
||||
#define M_WRITE_ONE_DSGVAR_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_TYPE,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_DSGVAR_TYPES(fn_eGetNbDsgVarType())
|
||||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) M_WRITE_ONE_DSGVAR_TYPE(c,b,fn_szConvertDsgVarString(c,b))
|
||||
#include "DefVar.h"
|
||||
#undef M_DEFINE_DSGVAR_TYPE
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* SAI Type*/
|
||||
#define M_WRITE_ALL_DSGVAR_SAVE_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_SAVE_TYPES,nb)
|
||||
#define M_WRITE_ONE_DSGVAR_SAVE_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_SAVE_TYPE,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_DSGVAR_SAVE_TYPES(fn_ucGetSaveTypeNumber())
|
||||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) M_WRITE_ONE_DSGVAR_SAVE_TYPE(b,a,b)
|
||||
#include "DefSAI.h"
|
||||
#undef M_DEFINE_DSGVAR_SAVE_TYPE
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
/* OTI Type*/
|
||||
#define M_WRITE_ALL_DSGVAR_INIT_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_INIT_TYPES,nb)
|
||||
#define M_WRITE_ONE_DSGVAR_INIT_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_INIT_TYPE,key,fr,gb)
|
||||
|
||||
M_WRITE_ALL_DSGVAR_INIT_TYPES(fn_ucGetInitTypeNumber())
|
||||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) M_WRITE_ONE_DSGVAR_INIT_TYPE(b,a,b)
|
||||
#include "DefOTI.h"
|
||||
#undef M_DEFINE_DSGVAR_INIT_TYPE
|
||||
M_WRITE_ALL_COMMAND_END()
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
16
Rayman_X/cpa/tempgrp/AI/AIGame/DataRay2.c
Normal file
16
Rayman_X/cpa/tempgrp/AI/AIGame/DataRay2.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/************************************************************************************************
|
||||
* Name: DataRay2.c *
|
||||
* Author: Christophe Giraud *
|
||||
* (c) UBI Simulations Annecy *
|
||||
************************************************************************************************/
|
||||
|
||||
|
||||
/* prevent the message : unreferenced inline function has been removed*/
|
||||
#pragma warning (disable : 4514)
|
||||
|
||||
#include "MTH.h"
|
||||
#include "dataray2.h"
|
||||
|
||||
tdstExtendDatas4Ray stExtendDatas4Ray;
|
||||
|
||||
|
31
Rayman_X/cpa/tempgrp/AI/AIGame/DataRay2.h
Normal file
31
Rayman_X/cpa/tempgrp/AI/AIGame/DataRay2.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/************************************************************************************************
|
||||
* Name: DataRay2.h *
|
||||
* Use : Datas structures for Rayman II *
|
||||
* Author: Christophe Giraud *
|
||||
* (c) UBI Simulations Annecy *
|
||||
************************************************************************************************/
|
||||
|
||||
#ifndef _DATARAY2_H
|
||||
#define _DATARAY2_H
|
||||
|
||||
/*ANNECY CG {*/
|
||||
/*ANNECY VL 11/05/98{*/
|
||||
/*#define C_MAXMAGICPOINTS 255*/
|
||||
/*#define C_MAXAIRPOINTS 255*/
|
||||
/*ENDANNECY VL}*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int iMagicPoints4Ray;
|
||||
int iMagicPointsMax4Ray;
|
||||
/*ANNECY VL 11/05/98{*/
|
||||
MTH_tdxReal xAirPoints4Ray;
|
||||
MTH_tdxReal xAirPointsMax4Ray;
|
||||
/*ENDANNECY VL}*/
|
||||
} tdstExtendDatas4Ray;
|
||||
|
||||
extern tdstExtendDatas4Ray stExtendDatas4Ray;
|
||||
|
||||
/*ENDANNECY CG }*/
|
||||
|
||||
#endif /*_DATARAY2_H*/
|
477
Rayman_X/cpa/tempgrp/AI/AIGame/Fields.c
Normal file
477
Rayman_X/cpa/tempgrp/AI/AIGame/Fields.c
Normal file
@@ -0,0 +1,477 @@
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "AI_Struc.h"
|
||||
#include "StrIntel.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#include "EnumFild.h"
|
||||
#include "Convert.h"
|
||||
#endif
|
||||
|
||||
#include "specif/AITools.h"
|
||||
|
||||
/*************************************/
|
||||
/* get set field default functions : */
|
||||
/*************************************/
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
unsigned char fn_ucGetFieldDefaultFunction(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
hSuperObjPerso=hSuperObjPerso;
|
||||
p_stGetSetParam=p_stGetSetParam;
|
||||
return(C_INVALID_GET);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
unsigned char fn_ucSetFieldDefaultFunction(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
hSuperObjPerso=hSuperObjPerso;
|
||||
p_stGetSetParam=p_stGetSetParam;
|
||||
return(C_INVALID_SET);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
/* get set field functions : <20> completer en fonction de la structure perso */
|
||||
/***************************************************************************/
|
||||
|
||||
unsigned char fn_ucGetFieldPrevComportIntell(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
tdstComport *p_stComport;
|
||||
|
||||
p_stComport = M_GetPrevComport(AI_M_p_stGetIntelligence(AI_M_stGetMindOfSuperObj(hSuperObjPerso)));
|
||||
M_Full_GetSetParam_pComport(p_stGetSetParam, p_stComport);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldPrevComportReflex(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
tdstComport *p_stComport;
|
||||
|
||||
p_stComport = M_GetPrevComport(AI_M_p_stGetReflex(AI_M_stGetMindOfSuperObj(hSuperObjPerso)));
|
||||
M_Full_GetSetParam_pComport(p_stGetSetParam, p_stComport);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Field for Shadow Scale.*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
unsigned char fn_ucGetFieldShadowScaleX(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
M_Full_GetSetParam_Float(p_stGetSetParam, fn_x3dDataGetShadowScaleXFromSO(hSuperObjPerso));
|
||||
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucSetFieldShadowScaleX(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
fn_v3dDataSetShadowScaleXInSO(hSuperObjPerso, M_GetSetParam_xValue(p_stGetSetParam));
|
||||
|
||||
return(C_VALID_SET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldShadowScaleY(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
M_Full_GetSetParam_Float(p_stGetSetParam, fn_x3dDataGetShadowScaleYFromSO(hSuperObjPerso));
|
||||
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucSetFieldShadowScaleY(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
fn_v3dDataSetShadowScaleYInSO(hSuperObjPerso, M_GetSetParam_xValue(p_stGetSetParam));
|
||||
|
||||
return(C_VALID_SET);
|
||||
}
|
||||
|
||||
/* eField_Position*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Description: fn_cSetFieldPosition*/
|
||||
/* set the value of the field "Position"*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Creation date: Jan.15, 1997 Author: Fabien MORALES*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||||
unsigned char fn_ucSetFieldPosition(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
hSuperObjPerso = hSuperObjPerso;
|
||||
p_stGetSetParam = p_stGetSetParam;
|
||||
return(C_INVALID_SET);
|
||||
}
|
||||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||||
|
||||
|
||||
/*=====================================================================================================================================
|
||||
Name: fn_cGetFieldPosition( Perso, WP )
|
||||
Author: yann le tensorer
|
||||
Created: October 12,1998 (rewriten for optimisations)
|
||||
Last modified:
|
||||
=====================================================================================================================================*/
|
||||
unsigned char fn_ucGetFieldPosition(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
/* we just return the position*/
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,&(hSuperObjPerso->hGlobalMatrix->stTranslationVector));
|
||||
return(C_VALID_GET);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
//GEO_tdxHandleToMatrix hTempMatrix;
|
||||
MTH3D_tdstVector stVertex;
|
||||
|
||||
// get the vectex of the super object
|
||||
//hTempMatrix= HIE_fn_hGetSuperObjectMatrix(hSuperObjPerso);
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectMatrix(hSuperObjPerso), &stVertex);
|
||||
|
||||
// and affect return value
|
||||
//MTH3D_M_vCopyVector(&M_GetSetParam_stVertexValue(p_stGetSetParam),&stVertex);
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,&stVertex);
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
/* eField_Orientation*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Description: fn_cSetFieldOrientation*/
|
||||
/* Set the value of the field "Orientation"*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Creation date: Jan.28, 1997 Author: Fabien MORALES*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
unsigned char fn_ucSetFieldOrientation(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
/* GEO_tdxHandleToMatrix hPersoMatrix;
|
||||
MTH3D_tdstVector *p_stOrientationVertex;
|
||||
MTH_tdxReal xAngle,xRealX,xRealY;
|
||||
|
||||
// get the new position
|
||||
p_stOrientationVertex= &M_GetSetParam_stVertexValue(p_stGetSetParam);
|
||||
|
||||
// compute the angle
|
||||
xRealX=p_stOrientationVertex->xX;
|
||||
xRealY=p_stOrientationVertex->xY;
|
||||
|
||||
if(xRealX)
|
||||
xAngle=MTH_M_xATan(xRealY / xRealX);
|
||||
else if(MTH_M_bLess(xRealY ,MTH_C_ZERO))
|
||||
xAngle=MTH_M_xNeg(MTH_C_PiBy2);
|
||||
else
|
||||
xAngle=MTH_C_PiBy2;
|
||||
if(MTH_M_bLess(xRealX ,MTH_C_ZERO))
|
||||
xAngle=MTH_M_xAdd(xAngle,MTH_C_Pi);
|
||||
if(MTH_M_bLess(xAngle,MTH_C_ZERO))
|
||||
xAngle=MTH_M_xAdd(xAngle,MTH_C_2Pi);
|
||||
|
||||
// get the matrix of the super object
|
||||
hPersoMatrix= HIE_fn_hGetSuperObjectMatrix(hSuperObjPerso);
|
||||
// affect the matrix (Z-axis rotation)
|
||||
fn_vSetRotationMatrixZ(hPersoMatrix, xAngle);
|
||||
return(C_VALID_SET);
|
||||
|
||||
*/
|
||||
hSuperObjPerso=hSuperObjPerso;
|
||||
p_stGetSetParam=p_stGetSetParam;
|
||||
return(C_INVALID_SET);
|
||||
|
||||
}
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Description: fn_cGetFieldOrientation*/
|
||||
/* Get the value of the field "Orientation"*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Creation date: Jan.28, 1997 Author: Fabien MORALES*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
unsigned char fn_ucGetFieldOrientation(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
|
||||
MTH3D_tdstVector stVertexDirection, stVertex;
|
||||
|
||||
/* Axe -Y in global reference*/
|
||||
MTH3D_M_vSetVectorElements(&stVertexDirection, MTH_C_ZERO, MTH_C_MinusONE, MTH_C_ZERO);
|
||||
POS_fn_vMulMatrixVertex(&stVertexDirection,HIE_fn_hGetSuperObjectGlobalMatrix(hSuperObjPerso),&stVertexDirection);
|
||||
/* position of perso*/
|
||||
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(hSuperObjPerso),&stVertex);
|
||||
/* (stVertexDirection - stVertex1) -> stVertexDirection*/
|
||||
MTH3D_M_vSubVector(&stVertexDirection, &stVertexDirection, &stVertex);
|
||||
MTH3D_M_vNormalizeVector(&stVertexDirection,&stVertexDirection);
|
||||
|
||||
/* and affect return value*/
|
||||
/*MTH3D_M_vCopyVector(&M_GetSetParam_stVertexValue(p_stGetSetParam),&stVertexDirection);*/
|
||||
/*M_GetSetParam_Type(p_stGetSetParam) = E_vt_Vector;*/
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,&stVertexDirection);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Description: fn_cGetFieldSpeed*/
|
||||
/* Get the value of the field "Speed"*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Methods: Get the rotation matrix of the object*/
|
||||
/* and compute the direction of the perso*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
/* Creation date: Jan.28, 1997 Author: Fabien MORALES*/
|
||||
/*/////////////////////////////////////////////////////////////////////////////////*/
|
||||
unsigned char fn_ucGetFieldSpeed(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
MTH3D_tdstVector *p_stDest = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam);
|
||||
|
||||
M_GetSetParam_Type(p_stGetSetParam) = E_vt_Vector;
|
||||
if ( h_Dynam )
|
||||
{
|
||||
struct DNM_stDynamics *p_stDynamic;
|
||||
p_stDynamic = fn_p_stDynamGetDynamics(h_Dynam);
|
||||
if ( p_stDynamic )
|
||||
{
|
||||
/*MTH_tdxReal xReal;*/
|
||||
/*MTH3D_tdstVector *p_stCurrSpeed;*/
|
||||
|
||||
*p_stDest = *DNM_M_pDynamicsGetPreviousSpeed (p_stDynamic);
|
||||
|
||||
/*p_stCurrSpeed = DNM_M_pDynamicsGetPreviousSpeed (pstDynamic);
|
||||
|
||||
xReal=MTH3D_M_xGetXofVector(p_stCurrSpeed);
|
||||
MTH3D_M_vSetXofVector(p_stDest,xReal);
|
||||
|
||||
xReal=MTH3D_M_xGetYofVector(p_stCurrSpeed);
|
||||
MTH3D_M_vSetYofVector(p_stDest,xReal);
|
||||
|
||||
xReal=MTH3D_M_xGetZofVector(p_stCurrSpeed);
|
||||
MTH3D_M_vSetZofVector(p_stDest,xReal);*/
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
}
|
||||
MTH3D_M_vNullVector(p_stDest);
|
||||
// return(C_INVALID_GET);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldNormSpeed(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam);
|
||||
|
||||
M_GetSetParam_Type(p_stGetSetParam) = E_vt_Float;
|
||||
|
||||
if (h_Dynam!=NULL)
|
||||
{
|
||||
struct DNM_stDynamics* pstDynamic;
|
||||
pstDynamic = fn_p_stDynamGetDynamics(h_Dynam);
|
||||
if ( pstDynamic )
|
||||
{
|
||||
MTH3D_tdstVector *p_stCurrSpeed = DNM_M_pDynamicsGetPreviousSpeed (pstDynamic);
|
||||
M_GetSetParam_xValue(p_stGetSetParam) = MTH3D_M_xNormVector(p_stCurrSpeed);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
}
|
||||
|
||||
M_GetSetParam_xValue(p_stGetSetParam) = MTH_C_ZERO;
|
||||
// return(C_INVALID_GET);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
/*
|
||||
unsigned char fn_ucGetFieldSightAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V1,*p_V2;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
M_GetSetParam_Type(p_stGetSetParam) = E_vt_Vector;
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_GET);
|
||||
|
||||
p_V1 = fn_p_DynamGetSightAxis(h_Dynam);
|
||||
p_V2 = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
MTH3D_M_vCopyVector(p_V2,p_V1);
|
||||
return(C_VALID_SET);
|
||||
return(C_INVALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldFirstCompAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V1,*p_V2;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
M_GetSetParam_Type(p_stGetSetParam) = E_vt_Vector;
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_GET);
|
||||
|
||||
p_V1 = fn_p_DynamGetFirstComplementaryAxis(h_Dynam);
|
||||
p_V2 = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
MTH3D_M_vCopyVector(p_V2,p_V1);
|
||||
return(C_VALID_GET);
|
||||
return(C_INVALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldSecondCompAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V1,*p_V2;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
M_GetSetParam_Type(p_stGetSetParam) = E_vt_Vector;
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_GET);
|
||||
|
||||
p_V1 = fn_p_DynamGetSecondComplementaryAxis(h_Dynam);
|
||||
p_V2 = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
MTH3D_M_vCopyVector(p_V2,p_V1);
|
||||
return(C_VALID_GET);
|
||||
return(C_INVALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucSetFieldSightAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_SET);
|
||||
|
||||
p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
fn_vDynamSetSightAxis(h_Dynam,p_V);
|
||||
return(C_VALID_SET);
|
||||
return(C_INVALID_SET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucSetFieldFirstCompAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_SET);
|
||||
|
||||
p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
fn_vDynamSetFirstComplementaryAxis(h_Dynam,p_V);
|
||||
return(C_VALID_SET);
|
||||
return(C_INVALID_SET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucSetFieldSecondCompAxis(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MTH3D_tdstVector *p_V;
|
||||
MS_tdxHandleToDynam h_Dynam;
|
||||
|
||||
if((h_Dynam = M_GetMSHandle(hSuperObjPerso,Dynam)) == NULL )
|
||||
return(C_INVALID_SET);
|
||||
|
||||
p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));
|
||||
fn_vDynamSetSecondComplementaryAxis(h_Dynam,p_V);
|
||||
return(C_VALID_SET);
|
||||
return(C_INVALID_SET);
|
||||
}
|
||||
*/
|
||||
|
||||
unsigned char fn_ucGetFieldAbsoluteAxisX(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
/*MTH3D_tdstVector *p_V;*/
|
||||
|
||||
POS_tdstCompletePosition *p_stAbsolutePosition = NULL;
|
||||
MTH3D_tdstVector *p_stI = NULL,*p_stJ = NULL,*p_stK = NULL;
|
||||
|
||||
p_stAbsolutePosition = HIE_fn_hGetSuperObjectGlobalMatrix(hSuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stAbsolutePosition ,p_stI,p_stJ,p_stK);
|
||||
/*p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));*/
|
||||
/*MTH3D_M_vCopyVector(p_V,p_stI);*/
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,p_stI);
|
||||
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldAbsoluteAxisY(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
/* MTH3D_tdstVector *p_V;*/
|
||||
|
||||
POS_tdstCompletePosition *p_stAbsoluteGliPosition = NULL;
|
||||
MTH3D_tdstVector *p_stI = NULL,*p_stJ = NULL,*p_stK = NULL;
|
||||
|
||||
p_stAbsoluteGliPosition = HIE_fn_hGetSuperObjectGlobalMatrix(hSuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stAbsoluteGliPosition ,p_stI,p_stJ,p_stK);
|
||||
/* p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));*/
|
||||
/* MTH3D_M_vCopyVector(p_V,p_stJ);*/
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,p_stI);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldAbsoluteAxisZ(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
/* MTH3D_tdstVector *p_V;*/
|
||||
|
||||
POS_tdstCompletePosition *p_stAbsoluteGliPosition = NULL;
|
||||
MTH3D_tdstVector *p_stI = NULL,*p_stJ = NULL,*p_stK = NULL;
|
||||
|
||||
p_stAbsoluteGliPosition = HIE_fn_hGetSuperObjectGlobalMatrix(hSuperObjPerso);
|
||||
POS_fn_vGetRotationMatrix(p_stAbsoluteGliPosition ,p_stI,p_stJ,p_stK);
|
||||
/* p_V = &(M_GetSetParam_stVertexValue(p_stGetSetParam));*/
|
||||
/* MTH3D_M_vCopyVector(p_V,p_stK);*/
|
||||
M_Full_GetSetParam_p_stVertex(p_stGetSetParam,p_stI);
|
||||
return(C_VALID_GET);
|
||||
}
|
||||
/* JO 07/11/97*/
|
||||
/* ANNECY AV {*/
|
||||
/* These functions are not used anymore
|
||||
unsigned char fn_ucSetFieldCollisionFlag(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MS_tdxHandleToCollSet hMSCollSet;
|
||||
unsigned char ucCollisionFlag;
|
||||
|
||||
if((hMSCollSet = M_GetMSHandle(hSuperObjPerso,CollSet)) == NULL )
|
||||
return(C_INVALID_SET);
|
||||
|
||||
ucCollisionFlag = M_GetSetParam_cValue(p_stGetSetParam);
|
||||
fn_vCollSetSetCharacterCollisionFlag(hMSCollSet,ucCollisionFlag);
|
||||
return(C_VALID_SET);
|
||||
}
|
||||
|
||||
unsigned char fn_ucGetFieldCollisionFlag(HIE_tdxHandleToSuperObject hSuperObjPerso, tdstGetSetParam *p_stGetSetParam)
|
||||
{
|
||||
MS_tdxHandleToCollSet hMSCollSet;
|
||||
|
||||
// pas bon
|
||||
// if((hMSCollSet = M_GetMSHandle(hSuperObjPerso,CollSet)) == NULL )
|
||||
// return( C_INVALID_GET );
|
||||
|
||||
// M_GetSetParam_xValue(p_stGetSetParam) = fn_ucCollSetGetCharacterCollisionFlag(hMSCollSet);
|
||||
// return(C_VALID_GET);
|
||||
|
||||
long lValue=0;
|
||||
char ret=C_INVALID_GET;
|
||||
if((hMSCollSet = M_GetMSHandle(hSuperObjPerso,CollSet)) != NULL )
|
||||
{
|
||||
lValue=(long) fn_ucCollSetGetCharacterCollisionFlag(hMSCollSet);
|
||||
ret=C_VALID_GET;
|
||||
}
|
||||
M_Full_GetSetParam_Integer(p_stGetSetParam,lValue);
|
||||
return(ret);
|
||||
}
|
||||
*/
|
||||
/* END ANNECY AV }*/
|
||||
|
||||
/***********************************************************************************************/
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitFieldEntries(void)
|
||||
{
|
||||
/* Init*/
|
||||
#if defined(__DEBUG_AI__)
|
||||
fn_vInitFieldTable(fn_ucGetFieldDefaultFunction,fn_ucSetFieldDefaultFunction);
|
||||
#endif
|
||||
|
||||
/* Field definitions*/
|
||||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) fn_vDefineFieldEntry(M_FIELD_ENTRY(a,b,english,c,d,e,f));
|
||||
#include "DefFild.h"
|
||||
#undef M_DEFINE_FIELD
|
||||
|
||||
#if defined(__DEBUG_AI__)
|
||||
fn_vCheckFieldTable(fn_ucGetFieldDefaultFunction,fn_ucSetFieldDefaultFunction);
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
10
Rayman_X/cpa/tempgrp/AI/AIGame/Fields.h
Normal file
10
Rayman_X/cpa/tempgrp/AI/AIGame/Fields.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#if !defined(__FIELDS_H__)
|
||||
#define __FIELDS_H__
|
||||
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitFieldEntries(void);
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#endif /*__FIELDS_H__*/
|
2880
Rayman_X/cpa/tempgrp/AI/AIGame/FuncRay2.cxx
Normal file
2880
Rayman_X/cpa/tempgrp/AI/AIGame/FuncRay2.cxx
Normal file
File diff suppressed because it is too large
Load Diff
3660
Rayman_X/cpa/tempgrp/AI/AIGame/Functio1.cxx
Normal file
3660
Rayman_X/cpa/tempgrp/AI/AIGame/Functio1.cxx
Normal file
File diff suppressed because it is too large
Load Diff
2014
Rayman_X/cpa/tempgrp/AI/AIGame/Function.c
Normal file
2014
Rayman_X/cpa/tempgrp/AI/AIGame/Function.c
Normal file
File diff suppressed because it is too large
Load Diff
17
Rayman_X/cpa/tempgrp/AI/AIGame/Function.h
Normal file
17
Rayman_X/cpa/tempgrp/AI/AIGame/Function.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Function.h : Definition of general Function.*/
|
||||
/* auteur : Olivier Didelot.*/
|
||||
/* date : 05/11/1996*/
|
||||
/* 970120 : AddList (Fabien Morales) */
|
||||
/* 970123 : O.C.*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__FUNCTION_H__)
|
||||
#define __FUNCTION_H__
|
||||
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitFunctionEntries(void);
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#endif /* __FUNCTION_H__*/
|
403
Rayman_X/cpa/tempgrp/AI/AIGame/Keyword.c
Normal file
403
Rayman_X/cpa/tempgrp/AI/AIGame/Keyword.c
Normal file
@@ -0,0 +1,403 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* KeyWord.c : Definition of general keyword.*/
|
||||
/* auteur : Olivier Couvreur.*/
|
||||
/* date : 19/08/1997*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef _DEBUG
|
||||
extern "C" char gcGlobAleat;
|
||||
#else
|
||||
extern char gcGlobAleat;
|
||||
#endif
|
||||
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "AI_Struc.h"
|
||||
#include "StrIntel.h"
|
||||
#include "Intell.h"
|
||||
#include "EnumKey.h"
|
||||
#include "ActConst.h"
|
||||
|
||||
#if defined(ACTIVE_AIDEBUG)
|
||||
#include "specif/AID_Trac.h"
|
||||
#include "AID_Erm.h"
|
||||
#endif
|
||||
|
||||
|
||||
/************************************************************************************/
|
||||
/* HERE IS THE BEGINNING /
|
||||
/************************************************************************************/
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#if defined(__DEBUG_AI__)
|
||||
tdstNodeInterpret *fn_p_stDefaultKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
p_SuperObjPerso=p_SuperObjPerso;
|
||||
p_stValue=p_stValue;
|
||||
#if defined(__DEBUG_AI__)
|
||||
M_AIFatalError(E_uwAIFatalUnknownKeyWord);
|
||||
#endif
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _DEBUG_AI__*/
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#if defined(ACTIVE_EDITOR)
|
||||
tdstNodeInterpret *fn_p_stMiscKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
p_SuperObjPerso=p_SuperObjPerso;
|
||||
p_stValue=p_stValue;
|
||||
p_stTree=p_stTree;
|
||||
#if defined(__DEBUG_AI__)
|
||||
M_AIFatalError(E_uwAIFatalUnknownKeyWord);
|
||||
#endif /* DEBUG_AI*/
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* ACTIVE_EDITOR*/
|
||||
|
||||
|
||||
tdstNodeInterpret *fn_p_stNoActionKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_Full_GetSetParam_Action(p_stValue, NULL);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stMeKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_GetSetParam_p_stEngineObjValue(p_stValue) = M_GetEngineObject(p_SuperObjPerso);
|
||||
M_GetSetParam_Type(p_stValue) = E_vt_Perso;
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stMainActorKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_GetSetParam_p_stEngineObjValue(p_stValue) = M_GetEngineObject(MC_fn_hGetCharacterInMainCharacterNode(MC_fn_hGetFirstMainCharNode()));
|
||||
M_GetSetParam_Type(p_stValue) = E_vt_Perso;
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*tdstNodeInterpret *fn_p_stWorldKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_GetSetParam_p_stEngineObjValue(p_stValue) = M_GetEngineObject(g_stEngineStructure.h_WorldCaracter);
|
||||
M_GetSetParam_Type(p_stValue) = E_vt_Perso;
|
||||
return(p_stTree);
|
||||
}*/
|
||||
|
||||
/* ANNECY OA - 13/08/99 { */
|
||||
#ifndef U64
|
||||
tdstNodeInterpret *fn_p_stNoSuperObjectKeyWord(HIE_tdxHandleToSuperObject p_SuperObj, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_GetSetParam_p_stEngineObjValue(p_stValue) = NULL;
|
||||
M_GetSetParam_Type(p_stValue) = E_vt_SuperObject;
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif
|
||||
/* END ANNECY OA } */
|
||||
|
||||
tdstNodeInterpret *fn_p_stNobodyKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_GetSetParam_p_stEngineObjValue(p_stValue) = NULL;
|
||||
M_GetSetParam_Type(p_stValue) = E_vt_Perso;
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stNowhereKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_Full_GetSetParam_WayPoint(p_stValue,WP_C_hWayPointInvalid);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stEmptyTextKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_Full_GetSetParam_hText(p_stValue, FON_C_xInvalidTextHandle);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/*ANNECY Bart 06/02/98 {*/
|
||||
tdstNodeInterpret *fn_p_stCapsNullKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_Full_GetSetParam_Caps(p_stValue, 0);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stNoGraphKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
M_Full_GetSetParam_Graph(p_stValue, NULL); /* NULL ?*/
|
||||
return(p_stTree);
|
||||
}
|
||||
/*ENDANNECY Bart }*/
|
||||
|
||||
static tdstNodeInterpret *fn_p_stSkipThenElseParameter(tdstNodeInterpret *p_stTree, tdstNodeInterpret *p_stTreeInit)
|
||||
{
|
||||
#if defined(OPTIMIZE_SWAP_PARAMETER)
|
||||
if(M_NodeToSkip(p_stTreeInit))/*CBOPT p_stTree*/
|
||||
{
|
||||
return (p_stTreeInit+M_NodeToSkip(p_stTreeInit)); /* Swap "then/else" parameter.*/
|
||||
}
|
||||
else
|
||||
{
|
||||
p_stTree = fn_p_stSwapNextParameter(p_stTree + 1); /* Swap "then/else" parameter.*/
|
||||
M_NodeToSkip(p_stTreeInit)=(unsigned short) (p_stTree-p_stTreeInit);
|
||||
}
|
||||
#else
|
||||
p_stTree++; /* Swap Then/Else node.*/
|
||||
p_stTree = fn_p_stSwapNextParameter(p_stTree); /* Swap "then/else" parameter.*/
|
||||
#endif /* OPTIMIZE_SWAP_PARAMETER*/
|
||||
return p_stTree;
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stThenKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
return fn_p_stIntelligenceEvalTreeEngine(p_SuperObjPerso, p_stTree, p_stValue);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stElseKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
p_stTree--; /* Fixe tree on Else Node.*/
|
||||
return fn_p_stSkipThenElseParameter(p_stTree, p_stTree);
|
||||
}
|
||||
|
||||
#ifndef U64 /* AR9809*/
|
||||
extern char gcGlobAleat;
|
||||
|
||||
#ifdef __DEBUG_AI__
|
||||
__declspec(dllexport) char gcSimulateRelease = 0;
|
||||
#else
|
||||
__declspec(dllexport) char gcSimulateRelease = 1;
|
||||
#endif
|
||||
#else
|
||||
char gcSimulateRelease = 1;
|
||||
|
||||
#endif /*U64*/
|
||||
|
||||
#ifndef U64 /* AR9809*/
|
||||
__declspec(dllexport) char gcSimulateNotU64 = 0;
|
||||
#else
|
||||
char gcSimulateNotU64 = 1;
|
||||
#endif /*U64*/
|
||||
|
||||
/************************************************************************************/
|
||||
tdstNodeInterpret *fn_p_stIfDebug(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
enum tdeKeyWordId_ eKeyId=M_eKeyWordIdInterpret(p_stTree-1);
|
||||
|
||||
p_SuperObjPerso=p_SuperObjPerso;
|
||||
p_stValue=p_stValue;
|
||||
|
||||
if((eKeyId == eKeyWord_IfDebug) && (gcSimulateRelease))
|
||||
{
|
||||
p_stTree = fn_p_stSkipThenElseParameter(p_stTree-1, p_stTree-1);
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_ActionReturn(p_stValue, C_ACTION_ENGINE_CONTINUE);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
tdstNodeInterpret *fn_p_stIfNotU64(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
enum tdeKeyWordId_ eKeyId=M_eKeyWordIdInterpret(p_stTree-1);
|
||||
|
||||
p_SuperObjPerso=p_SuperObjPerso;
|
||||
p_stValue=p_stValue;
|
||||
|
||||
if((eKeyId == eKeyWord_IfNotU64) && (gcSimulateNotU64))
|
||||
{
|
||||
p_stTree = fn_p_stSkipThenElseParameter(p_stTree-1, p_stTree-1);
|
||||
}
|
||||
|
||||
M_Full_GetSetParam_ActionReturn(p_stValue, C_ACTION_ENGINE_CONTINUE);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
tdstNodeInterpret *fn_p_stIfKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
tdstNodeInterpret *p_stTreeInit=p_stTree-1; /* p_stTreeInit link to If node.*/
|
||||
char cMax = 0;
|
||||
|
||||
if(M_eKeyWordIdInterpret(p_stTreeInit) == eKeyWord_If)
|
||||
{
|
||||
M_EvalNextParameter(p_stValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(M_eKeyWordIdInterpret(p_stTreeInit))
|
||||
{
|
||||
case eKeyWord_If2:
|
||||
cMax = gcGlobAleat & 0x01;
|
||||
goto ComIf;
|
||||
case eKeyWord_If4:
|
||||
cMax = gcGlobAleat & 0x03;
|
||||
goto ComIf;
|
||||
case eKeyWord_If8:
|
||||
cMax = gcGlobAleat & 0x07;
|
||||
goto ComIf;
|
||||
case eKeyWord_If16:
|
||||
cMax = gcGlobAleat & 0x0F;
|
||||
goto ComIf;
|
||||
|
||||
ComIf:
|
||||
if(cMax)
|
||||
{
|
||||
M_GetSetParam_lValue(p_stValue) = 0;
|
||||
/*
|
||||
* bidouille pour <20>viter les plantages dans le cas d'un if - cond - then avec qu'un seul
|
||||
* noeud au milieu.
|
||||
* p_stTreeInit = If (profondeur n) , p_stTree = Cond (prof n+1)
|
||||
* la ligne suivante recherche le then de m<>me niveau que le if (p_stTree + 2)
|
||||
*/
|
||||
p_stTree = fn_p_stSkipThenElseParameter(p_stTreeInit, p_stTree);
|
||||
}
|
||||
else
|
||||
{
|
||||
M_EvalNextParameter(p_stValue);
|
||||
}
|
||||
break;
|
||||
|
||||
case eKeyWord_IfNot:
|
||||
M_EvalNextParameter(p_stValue);
|
||||
M_GetSetParam_lValue(p_stValue) = M_GetSetParam_lValue(p_stValue) != 0 ? 0 : 1;
|
||||
break;
|
||||
/*XB(07/01/98)*/
|
||||
default:
|
||||
break;
|
||||
/*End XB*/
|
||||
}
|
||||
}
|
||||
|
||||
/* Eval the condition*/
|
||||
/*M_EvalNextParameter(p_stValue);*/
|
||||
|
||||
if (M_GetSetParam_lValue(p_stValue) != 0)
|
||||
{ /* Condition is True.*/
|
||||
#if defined(ACTIVE_AIDEBUG)
|
||||
AIDebug_M_SetKeyWord
|
||||
(
|
||||
AI_M_stGetMindOfSuperObj(p_SuperObjPerso),
|
||||
p_stValue,
|
||||
p_stTree
|
||||
);
|
||||
#endif /*ACTIVE_AIDEBUG*/
|
||||
p_stTree++; /* Swap Then node.*/
|
||||
/*p_stTree = fn_p_stIntelligenceEvalTreeEngine(p_SuperObjPerso, p_stTree, p_stValue); // Eval "then" parameter.
|
||||
if ( (M_GetTypeInterpret(p_stTree) == E_ti_KeyWord)
|
||||
&& (M_eKeyWordIdInterpret(p_stTree) == eKeyWord_Else))
|
||||
{ // There is Else node.
|
||||
return fn_p_stSkipThenElseParameter(p_stTree, p_stTree);
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{ /* Condition is False.*/
|
||||
if (!M_IsTheEndOfTree(p_stTree))
|
||||
p_stTree = fn_p_stSkipThenElseParameter(p_stTree, p_stTreeInit);
|
||||
|
||||
if (M_DepthInterpret(p_stTree) == M_DepthInterpret(p_stTreeInit))
|
||||
{
|
||||
if ( (M_GetTypeInterpret(p_stTree) == E_ti_KeyWord)
|
||||
&& (M_eKeyWordIdInterpret(p_stTree) == eKeyWord_Else))
|
||||
{
|
||||
#if defined(ACTIVE_AIDEBUG)
|
||||
AIDebug_M_SetKeyWord
|
||||
(
|
||||
AI_M_stGetMindOfSuperObj(p_SuperObjPerso),
|
||||
p_stValue,
|
||||
p_stTree
|
||||
);
|
||||
#endif /*ACTIVE_AIDEBUG*/
|
||||
p_stTree++; /* Swap Else node.*/
|
||||
}
|
||||
/* Eval next parameter.*/
|
||||
/*M_EvalNextParameter(p_stValue);*/
|
||||
}
|
||||
}
|
||||
M_Full_GetSetParam_ActionReturn(p_stValue, C_ACTION_ENGINE_CONTINUE);
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
tdstNodeInterpret *fn_p_stEngineGotoKeyWord(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
char szForErrorString[200];
|
||||
tdstNodeInterpret *p_stTempTree;
|
||||
long lValue;
|
||||
|
||||
M_EvalNextParameter(p_stValue);
|
||||
lValue = M_ReturnParam_lValue(p_stValue);
|
||||
|
||||
M_Full_GetSetParam_ActionReturn(p_stValue, C_ACTION_ENGINE_CONTINUE);
|
||||
|
||||
if (lValue == 0)
|
||||
{
|
||||
sprintf(szForErrorString,"parameter zero in %s", AI_M_szGetSuperObjectName(p_SuperObjPerso));
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningEngineGoto,C_ucErmOpenInfoWindow,szForErrorString);
|
||||
}
|
||||
else
|
||||
if (lValue < 0)
|
||||
{
|
||||
tdstNodeInterpret *p_stBeginTree = M_GetNodeInterpret(M_GetRuleN(g_p_stIntelligence, g_ucNRule));
|
||||
p_stTempTree = p_stTree+lValue;
|
||||
if (p_stTempTree < p_stBeginTree)
|
||||
{
|
||||
sprintf(szForErrorString,"out of interpret tree (negative) in %s", AI_M_szGetSuperObjectName(p_SuperObjPerso));
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningEngineGoto,C_ucErmOpenInfoWindow,szForErrorString);
|
||||
}
|
||||
else
|
||||
return p_stTempTree;
|
||||
}
|
||||
else
|
||||
/* lValue > 0*/
|
||||
{
|
||||
long i;
|
||||
p_stTempTree = p_stTree;
|
||||
for (i = 0; i < lValue; i++)
|
||||
{
|
||||
if (M_IsTheEndOfTree(p_stTempTree))
|
||||
{
|
||||
sprintf(szForErrorString,"out of interpret tree (positive) in %s", AI_M_szGetSuperObjectName(p_SuperObjPerso));
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningEngineGoto,C_ucErmOpenInfoWindow,szForErrorString);
|
||||
return p_stTree;
|
||||
}
|
||||
else
|
||||
p_stTempTree++;
|
||||
}
|
||||
return p_stTempTree;
|
||||
|
||||
}
|
||||
return(p_stTree);
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
/* HERE IS THE END */
|
||||
/************************************************************************************/
|
||||
|
||||
/****************************************************************************************/
|
||||
/* to call once before anything else related to KeyWord */
|
||||
/****************************************************************************************/
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
#include "Convert.h"
|
||||
#include "ProtCond.h"
|
||||
|
||||
void fn_vInitKeyWordEntries(void)
|
||||
{
|
||||
/* Init*/
|
||||
#if defined(__DEBUG_AI__)
|
||||
fn_vInitKeyWordTable(fn_p_stDefaultKeyWord);
|
||||
#endif
|
||||
|
||||
/* KeyWord definition*/
|
||||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) fn_vDefineKeyWordEntry(M_KEYWORD_ENTRY(a,b,english,c,d,e,f));
|
||||
#include "DefKey.h"
|
||||
#undef M_DEFINE_KEYWORD
|
||||
|
||||
/* Check*/
|
||||
#if defined(__DEBUG_AI__)
|
||||
fn_vCheckKeyWordTable(fn_p_stDefaultKeyWord);
|
||||
#endif /* __DEBUG_AI__*/
|
||||
|
||||
}
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
15
Rayman_X/cpa/tempgrp/AI/AIGame/Keyword.h
Normal file
15
Rayman_X/cpa/tempgrp/AI/AIGame/Keyword.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Keyword.h : Definition of general Keyword.*/
|
||||
/* auteur : Olivier Couvreur*/
|
||||
/* date : 19/08/1997*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__KEYWORD_H__)
|
||||
#define __KEYWORD_H__
|
||||
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitKeyWordEntries(void);
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#endif /* __CONDITION_H__*/
|
300
Rayman_X/cpa/tempgrp/AI/AIGame/MGT_Proc.c
Normal file
300
Rayman_X/cpa/tempgrp/AI/AIGame/MGT_Proc.c
Normal file
@@ -0,0 +1,300 @@
|
||||
/*
|
||||
*=======================================================================================
|
||||
* Name :MGT_Proc.c
|
||||
*
|
||||
* Author : QiZeYu Date : Dec.18, 1997
|
||||
*
|
||||
* Description : All AI Functions for the magnet
|
||||
*=======================================================================================
|
||||
* Modification -> Author : Date :
|
||||
* Description :
|
||||
*=======================================================================================
|
||||
*/
|
||||
|
||||
#ifndef D_THROW_MGT
|
||||
|
||||
#define D_CineInfo_StructureDefine
|
||||
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Intell.h"
|
||||
#include "StrIntel.h"
|
||||
#include "EnumProc.h"
|
||||
#include "EnumFunc.h"
|
||||
|
||||
#include "Convert.h"
|
||||
|
||||
|
||||
#include "AI_Struc.h"
|
||||
|
||||
#include "DsgMem.h" /* for fn_bFindPersoInList*/
|
||||
#include "specif/AITools.h"
|
||||
#include "EnumCond.h"
|
||||
#include "Operator.h"
|
||||
|
||||
#include "WPWayPt.h"
|
||||
|
||||
#include "GLI.h"
|
||||
#include "GEO.h"
|
||||
#include "PO.h"
|
||||
/*XB980821*/
|
||||
#ifndef D_THROW_IPO
|
||||
#include "IPO.h"
|
||||
#endif /* D_THROW_IPO */
|
||||
/*End XB*/
|
||||
#include "SPO.h"
|
||||
|
||||
|
||||
#include "CAM_Base.h"
|
||||
#include "CAM_Tool.h"
|
||||
#include "CAM_Vis.h"
|
||||
/*XB980429*/
|
||||
/*#include "incGAM.h"*/
|
||||
#include "scr.h"
|
||||
#include "snd.h"
|
||||
#include "pcs.h"
|
||||
#include "geo.h"
|
||||
#include "gld.h"
|
||||
#include "gli.h"
|
||||
#include "mec.h"
|
||||
#include "lst.h"
|
||||
#ifdef USE_IPT_DX5
|
||||
#include "IPT_DX5.h" /* InPuT (absolutely before GAM.h)*/
|
||||
#else /* USE_IPT_WIN */
|
||||
#include "IPT.h" /* InPuT (absolutely before GAM.h)*/
|
||||
#endif /* USE_IPT_WIN */
|
||||
/* Shaitan Clean Env {*/
|
||||
/*#include "srf.h"*/
|
||||
/*#include "env.h"*/
|
||||
/* End Shaitan Clan Env }*/
|
||||
#include "sct.h"
|
||||
#ifndef D_THROW_PRT
|
||||
#include "PRT.h"
|
||||
#endif /* D_THROW_PRT */
|
||||
#include "gam.h"
|
||||
/*End XB*/
|
||||
#include "mgt.h"
|
||||
|
||||
#define _WP_D_DEFINE_WAYPOINTS_
|
||||
#include "WP_Handl.h"
|
||||
#include "WP_Func.h"
|
||||
/*XB980821*/
|
||||
#ifndef D_THROW_IPO
|
||||
#include "ISI.h"
|
||||
#endif /* D_THROW_IPO */
|
||||
/*End XB*/
|
||||
#undef _WP_D_DEFINE_WAYPOINTS_
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Procedure to turn the Magnet on
|
||||
* parameters :
|
||||
* PERSO : magnet reference
|
||||
*
|
||||
* Author : QiZeYu Date : Dec.18, 1997
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *MGT_fn_p_stActiveMagnet(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
MGT_fn_vAddObjectToMagnetList(hNewSuperObjPerso);
|
||||
|
||||
return (p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Procedure to turn the Magnet off
|
||||
* parameters :
|
||||
* PERSO : magnet reference
|
||||
*
|
||||
* Author : QiZeYu Date : Dec.18, 1997
|
||||
*=================================================================================================
|
||||
*/
|
||||
tdstNodeInterpret *MGT_fn_p_stDeactiveMagnet(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
MS_tdxHandleToMSMagnet hMagnet;
|
||||
enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet);
|
||||
|
||||
if( hMagnet )
|
||||
{
|
||||
if( (fn_lMSMagnetGetStatus(hMagnet)==MAGNETGROWING)||(fn_lMSMagnetGetStatus(hMagnet)==MAGNETON) )
|
||||
{
|
||||
fn_vMSMagnetSetStatus(hMagnet, MAGNETRECOVERING);
|
||||
}
|
||||
}
|
||||
|
||||
return (p_stTree);
|
||||
}
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Procedure to set the Magnet parameter
|
||||
* parameters :
|
||||
* PERSO : magnet reference
|
||||
* REAL : Range
|
||||
*
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *MGT_fn_p_stSetParam(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
MS_tdxHandleToMSMagnet hMagnet;
|
||||
MTH_tdxReal xValue;
|
||||
unsigned long ulDuration;
|
||||
enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1);
|
||||
tdstGetSetParam stValue;
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet);
|
||||
|
||||
if( hMagnet )
|
||||
{
|
||||
M_EvalNextParameter( &stValue );
|
||||
|
||||
switch(eProcedureId)
|
||||
{
|
||||
case eProc_Magnet_SetStrength:
|
||||
xValue = M_GetSetParam_xValue(&stValue);
|
||||
fn_vMSMagnetSetStrength(hMagnet,xValue);
|
||||
break;
|
||||
case eProc_Magnet_SetFar:
|
||||
xValue = M_GetSetParam_xValue(&stValue);
|
||||
fn_vMSMagnetSetFar(hMagnet,xValue);
|
||||
break;
|
||||
case eProc_Magnet_SetNear:
|
||||
xValue = M_GetSetParam_xValue(&stValue);
|
||||
fn_vMSMagnetSetNear(hMagnet,xValue);
|
||||
break;
|
||||
case eProc_Magnet_SetDuration:
|
||||
ulDuration = M_GetSetParam_lValue(&stValue);
|
||||
fn_vMSMagnetSetDuration(hMagnet, ulDuration);
|
||||
break;
|
||||
default:
|
||||
M_AIFatalError(E_uwAIFatalNotValidProcedure);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*
|
||||
*=================================================================================================
|
||||
* Get the information of the magnet
|
||||
* Parameter :
|
||||
* Perso : magnet handle
|
||||
*=================================================================================================
|
||||
*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *MGT_fn_p_stGetInfo(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
MS_tdxHandleToMSMagnet hMagnet;
|
||||
MTH_tdxReal xNorm;
|
||||
unsigned long ulDuration;
|
||||
enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1);
|
||||
tdstGetSetParam stValue;
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet);
|
||||
|
||||
/* Get Magnet Handle */
|
||||
if(hMagnet==NULL) return (p_stTree);
|
||||
|
||||
M_EvalNextParameter(&stValue);
|
||||
switch(eFuncId)
|
||||
{
|
||||
case eFunc_GetMagnetStrength :
|
||||
xNorm = fn_xMSMagnetGetStrength(hMagnet);
|
||||
M_Full_GetSetParam_Float(p_stValue,xNorm);
|
||||
break;
|
||||
case eFunc_GetMagnetFar:
|
||||
xNorm = fn_xMSMagnetGetFar(hMagnet);
|
||||
M_Full_GetSetParam_Float(p_stValue,xNorm);
|
||||
break;
|
||||
case eFunc_GetMagnetNear:
|
||||
xNorm = fn_xMSMagnetGetNear(hMagnet);
|
||||
M_Full_GetSetParam_Float(p_stValue,xNorm);
|
||||
break;
|
||||
case eFunc_GetMagnetDuration:
|
||||
ulDuration = fn_ulMSMagnetGetDuration(hMagnet);
|
||||
M_Full_GetSetParam_Time(p_stValue,ulDuration);
|
||||
default :
|
||||
M_AIFatalError(E_uwAIFatalNotValidFunction);
|
||||
break;
|
||||
}
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/**********************************************************************
|
||||
* Condition: Magnet_EstActif ( toto ) *
|
||||
* true if actor's magnet is activated *
|
||||
* Author : Marc Trabucato *
|
||||
* Date of last modification: 13/03/98 *
|
||||
**********************************************************************/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *fn_p_stMagnetActivated (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue)
|
||||
{
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
MS_tdxHandleToMSMagnet hMagnet;
|
||||
enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1);
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
|
||||
hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet);
|
||||
if( hMagnet )
|
||||
{
|
||||
switch( fn_lMSMagnetGetStatus( hMagnet ) )
|
||||
{
|
||||
case MAGNETOFF:
|
||||
case MAGNETRECOVERING:
|
||||
*p_lValue = FALSE;
|
||||
break;
|
||||
case MAGNETON:
|
||||
case MAGNETGROWING:
|
||||
*p_lValue = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
#endif /* D_THROW_MGT */
|
1458
Rayman_X/cpa/tempgrp/AI/AIGame/Operator.c
Normal file
1458
Rayman_X/cpa/tempgrp/AI/AIGame/Operator.c
Normal file
File diff suppressed because it is too large
Load Diff
26
Rayman_X/cpa/tempgrp/AI/AIGame/Operator.h
Normal file
26
Rayman_X/cpa/tempgrp/AI/AIGame/Operator.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Operator.h : Definition of Operators.*/
|
||||
/* auteur : Olivier Didelot.*/
|
||||
/* date : 21/01/1997*/
|
||||
/* modify : 31/01/1997 (O.C) script & editor names + Lint*/
|
||||
/* modify : Olivier Couvreur*/
|
||||
/* date : 18/02/1997 CPA_EXPORT + new functions for editor*/
|
||||
/* modify : Olivier Couvreur*/
|
||||
/* date : 26/06/1997 Now, Operators are function pointers*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__OPERATOR_H__)
|
||||
#define __OPERATOR_H__
|
||||
|
||||
/* PLEASE DON'T USE THESE THREE FUNCTIONS WITHOUT CARE */
|
||||
void fn_vSetUltraOperatorPerso(HIE_tdxHandleToSuperObject hCurrentSuperObjPerso,HIE_tdxHandleToSuperObject hNewCurrentSuperObjPerso);
|
||||
void fn_vGetUltraOperatorPerso(unsigned char bYouHaveRightToUseThisFunction,HIE_tdxHandleToSuperObject hCurrentSuperObjPerso,HIE_tdxHandleToSuperObject *hNewCurrentSuperObjPerso);
|
||||
tdstNodeInterpret *fn_p_stOperatorGetPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, HIE_tdxHandleToSuperObject *hSuperObjPersoFound);
|
||||
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitOperatorEntries(void);
|
||||
#endif
|
||||
|
||||
#endif /* __OPERATOR_H__*/
|
||||
|
2377
Rayman_X/cpa/tempgrp/AI/AIGame/ProcRay2.cxx
Normal file
2377
Rayman_X/cpa/tempgrp/AI/AIGame/ProcRay2.cxx
Normal file
File diff suppressed because it is too large
Load Diff
5947
Rayman_X/cpa/tempgrp/AI/AIGame/Procedu1.cxx
Normal file
5947
Rayman_X/cpa/tempgrp/AI/AIGame/Procedu1.cxx
Normal file
File diff suppressed because it is too large
Load Diff
4123
Rayman_X/cpa/tempgrp/AI/AIGame/Procedur.c
Normal file
4123
Rayman_X/cpa/tempgrp/AI/AIGame/Procedur.c
Normal file
File diff suppressed because it is too large
Load Diff
19
Rayman_X/cpa/tempgrp/AI/AIGame/Procedur.h
Normal file
19
Rayman_X/cpa/tempgrp/AI/AIGame/Procedur.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Procedur.h : Definition of general Procedure.*/
|
||||
/* auteur : Olivier Didelot.*/
|
||||
/* date : 10/04/1997*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__PROCEDUR_H__)
|
||||
#define __PROCEDUR_H__
|
||||
/*
|
||||
void fn_vSetDirectionSpeed(HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stVect);
|
||||
void fn_vAddDirectionSpeed(HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stAddVect);
|
||||
void fn_vSetImpulse(HIE_tdxHandleToSuperObject p_SuperObjPerso, MTH3D_tdstVector *p_stVect);
|
||||
*/
|
||||
#include "specif/AiOption.h"
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
void fn_vInitProcedureEntries(void);
|
||||
#endif /* OPTIMIZED_COMMAND*/
|
||||
|
||||
#endif /* __PROCEDUR_H__*/
|
225
Rayman_X/cpa/tempgrp/AI/AIGame/procMorf.c
Normal file
225
Rayman_X/cpa/tempgrp/AI/AIGame/procMorf.c
Normal file
@@ -0,0 +1,225 @@
|
||||
|
||||
/**********************************************************
|
||||
* *
|
||||
* ProcMorph.c *
|
||||
* *
|
||||
* This file contains all the AI procedures and *
|
||||
* conditions for the morphing *
|
||||
* *
|
||||
* Author : Ubi China - Alexis Vaisse *
|
||||
* *
|
||||
**********************************************************/
|
||||
|
||||
|
||||
#include "AIUseCPA.h"
|
||||
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
|
||||
#include "Intell.h"
|
||||
#include "Action.h"
|
||||
#include "StrIntel.h"
|
||||
#include "DsgMem.h"
|
||||
#include "EnumProc.h"
|
||||
#include "specif/AITools.h"
|
||||
|
||||
#include "Operator.h"
|
||||
|
||||
#include "Convert.h"
|
||||
#define PO_FRIEND
|
||||
#include "PO.h"
|
||||
#include "mor.h"
|
||||
|
||||
|
||||
#if !defined(OPTIMIZED_COMMAND)
|
||||
/* Procedure prototypes*/
|
||||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) struct tdstNodeInterpret_ *##d(HIE_tdxHandleToSuperObject, struct tdstNodeInterpret_ *);
|
||||
#include "DefProc.h"
|
||||
#undef M_DEFINE_PROCEDURE
|
||||
#endif /* !OPTIMIZED_COMMAND*/
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Name : fn_p_stPrepareMorph
|
||||
*-----------------------------------------------------------------------------
|
||||
* Description : the "MOD_PrepareMorph" AI procedure
|
||||
*-----------------------------------------------------------------------------*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret * fn_p_stPrepareMorph (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret * p_stTree)
|
||||
{
|
||||
ACP_tdxIndex xStartIndexInObjectTable;
|
||||
ACP_tdxIndex xEndIndexInObjectTable;
|
||||
int iNbMillisecond;
|
||||
unsigned char ucMorphType;
|
||||
ACP_tdxIndex xChannelIndex;
|
||||
tdstGetSetParam stValue [5];
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
enum tdeProcedureId_ eProcId=M_eProcedureIdInterpret(p_stTree-1);
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
fn_vGetUltraOperatorPerso (fn_ucGetProcedureUltraOperator(eProcId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
/********************************************************************************/
|
||||
|
||||
M_EvalNextParameter(&stValue[0]);
|
||||
M_EvalNextParameter(&stValue[1]);
|
||||
M_EvalNextParameter(&stValue[2]);
|
||||
M_EvalNextParameter(&stValue[3]);
|
||||
M_EvalNextParameter(&stValue[4]);
|
||||
|
||||
xStartIndexInObjectTable = M_GetSetParam_lValue(&stValue[0]); /* First parameter : index of the 'start' object in the object table*/
|
||||
xEndIndexInObjectTable = M_GetSetParam_lValue(&stValue[1]); /* Second parameter : index of the 'end' object in the object table*/
|
||||
iNbMillisecond = M_GetSetParam_lValue(&stValue[2]); /* Third parameter : number of milisecond for the morphing*/
|
||||
ucMorphType = M_GetSetParam_lValue(&stValue[3]); /* Fourth parameter : morphing type (can be 1, 2 or 3)*/
|
||||
xChannelIndex = M_GetSetParam_lModuleValue(&stValue[4]); /* Fifth parameter : the channel number*/
|
||||
|
||||
if (MOR_fn_xPrepareMorph (p_SuperObjPerso, xStartIndexInObjectTable, xEndIndexInObjectTable,
|
||||
iNbMillisecond, 0, iNbMillisecond, ucMorphType, xChannelIndex) == -1)
|
||||
{
|
||||
//XB 10/08/99
|
||||
/* Erm_M_UpdateLastError(AI, C_ucErmDefaultChannel, E_uwAIWarningScriptError , C_lErmNoDebugData,
|
||||
C_ucErmOpenInfoWindow, C_ucNeverStopForDebug,
|
||||
"Morphing requires two objects with the same number of points");
|
||||
Erm_M_ClearLastError(C_ucErmDefaultChannel);*/
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningScriptError, C_ucErmOpenInfoWindow, "Morphing requires two objects with the same number of points")
|
||||
//End XB 10/08/99
|
||||
/*XB*/
|
||||
#if (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG)
|
||||
#if !defined(U64_AIDEBUG) /* Oliv' - 23/11/1998*/
|
||||
fn_vSetStopAIEngineFlag();
|
||||
#endif /* !defined(U64_AIDEBUG)*/
|
||||
#endif /* (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG)*/
|
||||
/*End XB*/
|
||||
}
|
||||
|
||||
return (p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Name : fn_p_stStopMorph
|
||||
*-----------------------------------------------------------------------------
|
||||
* Description : the "MOD_StopMorph" AI procedure
|
||||
*-----------------------------------------------------------------------------*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret * fn_p_stStopMorph (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret * p_stTree)
|
||||
{
|
||||
tdstGetSetParam stValue;
|
||||
ACP_tdxIndex xChannelIndex;
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
enum tdeProcedureId_ eProcId=M_eProcedureIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
fn_vGetUltraOperatorPerso (fn_ucGetProcedureUltraOperator(eProcId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
/********************************************************************************/
|
||||
|
||||
M_EvalNextParameter (& stValue);
|
||||
xChannelIndex = M_GetSetParam_lModuleValue (& stValue); /* Parameter : the channel number*/
|
||||
|
||||
MOR_fn_xStopMorph(p_SuperObjPerso , xChannelIndex);
|
||||
|
||||
return (p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Name : fn_p_stIsMorphing
|
||||
*-----------------------------------------------------------------------------
|
||||
* Description : the "MOD_MorphingEnCours" AI condition
|
||||
*-----------------------------------------------------------------------------*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret *fn_p_stIsMorphing (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret * p_stTree, long * p_lValue)
|
||||
{
|
||||
tdstGetSetParam stValue;
|
||||
ACP_tdxIndex xChannelIndex;
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
enum tdeCondId_ eCondId=M_eCondIdInterpret(p_stTree-1);
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
fn_vGetUltraOperatorPerso (fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
/********************************************************************************/
|
||||
|
||||
M_EvalNextParameter (& stValue);
|
||||
xChannelIndex = M_GetSetParam_lModuleValue (& stValue); /* Parameter : the channel number*/
|
||||
|
||||
/* Ask the morphing module to know if the channel contains an morphed object*/
|
||||
* p_lValue = MOR_fn_bIsChannelMorphed (p_SuperObjPerso, xChannelIndex);
|
||||
|
||||
return(p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Name : fn_p_stMorphiong
|
||||
*-----------------------------------------------------------------------------
|
||||
* Description : the "MOD_Morphing" AI procedure
|
||||
*-----------------------------------------------------------------------------*/
|
||||
#if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/
|
||||
tdstNodeInterpret * fn_p_stMorphing (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret * p_stTree)
|
||||
{
|
||||
ACP_tdxIndex xStartIndexInObjectTable;
|
||||
ACP_tdxIndex xEndIndexInObjectTable;
|
||||
ACP_tdxIndex xRatio; /* between 0 and 100*/
|
||||
ACP_tdxIndex xChannelIndex;
|
||||
tdstGetSetParam stValue [4];
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
enum tdeProcedureId_ eProcId=M_eProcedureIdInterpret(p_stTree-1);
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
|
||||
/********************************************************************************/
|
||||
/* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */
|
||||
/********************************************************************************/
|
||||
HIE_tdxHandleToSuperObject hNewSuperObjPerso;
|
||||
fn_vGetUltraOperatorPerso (fn_ucGetProcedureUltraOperator(eProcId),p_SuperObjPerso,&hNewSuperObjPerso);
|
||||
/********************************************************************************/
|
||||
|
||||
M_EvalNextParameter(&stValue[0]);
|
||||
M_EvalNextParameter(&stValue[1]);
|
||||
M_EvalNextParameter(&stValue[2]);
|
||||
M_EvalNextParameter(&stValue[3]);
|
||||
|
||||
xStartIndexInObjectTable = M_GetSetParam_lValue(&stValue[0]); /* First parameter : index of the 'start' object in the object table*/
|
||||
xEndIndexInObjectTable = M_GetSetParam_lValue(&stValue[1]); /* Second parameter : index of the 'end' object in the object table*/
|
||||
xRatio = M_GetSetParam_lValue(&stValue[2]); /* Third parameter : morphing ratio between 0 and 100*/
|
||||
xChannelIndex = M_GetSetParam_lModuleValue(&stValue[3]); /* Fourth parameter : the channel number*/
|
||||
|
||||
if (MOR_fn_xMorphing (p_SuperObjPerso, (ACP_tdxIndex)(xStartIndexInObjectTable-1), (ACP_tdxIndex)(xEndIndexInObjectTable-1), xRatio, xChannelIndex) == -1)
|
||||
{
|
||||
//XB 10/08/99
|
||||
/* Erm_M_UpdateLastError(AI, C_ucErmDefaultChannel, E_uwAIWarningScriptError , C_lErmNoDebugData,
|
||||
C_ucErmOpenInfoWindow, C_ucNeverStopForDebug,
|
||||
"Morphing requires two objects with the same number of points");
|
||||
Erm_M_ClearLastError(C_ucErmDefaultChannel);*/
|
||||
M_AIWarningErrorAndNeverStopForDebug(E_uwAIWarningScriptError, C_ucErmOpenInfoWindow, "Morphing requires two objects with the same number of points")
|
||||
//End XB 10/08/99
|
||||
|
||||
/*XB*/
|
||||
#if (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG)
|
||||
#if !defined(U64_AIDEBUG) /* Oliv' - 23/11/1998*/
|
||||
fn_vSetStopAIEngineFlag();
|
||||
#endif /* !defined(U64_AIDEBUG)*/
|
||||
#endif /* (defined(ACTIVE_EXEC_CHECKING) && defined(ACTIVE_EDITOR)) || defined(ACTIVE_AIDEBUG)*/
|
||||
/*End XB*/
|
||||
}
|
||||
|
||||
return (p_stTree);
|
||||
}
|
||||
#endif /* _AI_EXCLUDE_NEVER_USED_ }*/
|
92
Rayman_X/cpa/tempgrp/AI/AIGame/specif/AITools.h
Normal file
92
Rayman_X/cpa/tempgrp/AI/AIGame/specif/AITools.h
Normal file
@@ -0,0 +1,92 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* AITools.h : Some useful functions*/
|
||||
/* author : Olivier Couvreur.*/
|
||||
/* date : 05/05/1996*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if !defined(__AITOOLS_H__)
|
||||
#define __AITOOLS_H__
|
||||
|
||||
/* WARNING constant are bits */
|
||||
#define DISTANCE_TO_ORIGIN 0x00
|
||||
#define DISTANCE_TO_CENTER_OF_BOUNDING_VOLUME 0x80
|
||||
|
||||
#define C_DISTANCE_X 1
|
||||
#define C_DISTANCE_Y 2
|
||||
#define C_DISTANCE_Z 4
|
||||
#define C_DISTANCE_XY 3
|
||||
#define C_DISTANCE_XZ 5
|
||||
#define C_DISTANCE_YZ 6
|
||||
#define C_DISTANCE_XYZ 7
|
||||
|
||||
#define C_DISTANCE_MASK C_DISTANCE_XYZ
|
||||
|
||||
#if defined(U64)
|
||||
#include "AIUseCPA.h"
|
||||
#include "specif/AIOption.h"
|
||||
#include "AIMacros.h"
|
||||
#include "AI_Erm.h"
|
||||
#include "WPWayPt.h"
|
||||
#include "Strintel.h"
|
||||
#endif
|
||||
|
||||
#include "GSParam.h"
|
||||
|
||||
/* CGHT*/
|
||||
#if 0
|
||||
/* MODIF YLG*/
|
||||
ACP_tdxBool fn_bIsEndReached(MTH_tdxReal xStart,MTH_tdxReal xEnd,MTH_tdxReal xSpeed);
|
||||
#endif
|
||||
|
||||
#ifdef ACTIVE_EDITOR
|
||||
void fn_vCheckModuleAccess(HIE_tdxHandleToSuperObject hPerso, ACP_tdxBool _bNextArgIsAChannel, void *_p_vChannelOrModuleHandle);
|
||||
#endif
|
||||
|
||||
char *fn_szGetStringFromTextOrStringParam(tdstGetSetParam *p_stValue);
|
||||
|
||||
MTH_tdxReal fn_xComputeDirectionAngle(struct MTH3D_tdstVector_ *p_stVector);
|
||||
|
||||
MTH_tdxReal fn_xComputeBestEcartDirectionAngle(MTH_tdxReal xAngleFollowed,MTH_tdxReal xAngleToFollow);
|
||||
|
||||
MTH_tdxReal fn_xDistanceBetweenPersoAndWP(HIE_tdxHandleToSuperObject p_SuperObjPerso, WP_tdhWayPoint hWP);
|
||||
MTH_tdxReal fn_xDistanceBetweenPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso1, HIE_tdxHandleToSuperObject p_SuperObjPerso2);
|
||||
|
||||
MTH_tdxReal fn_xExtendedDistanceBetweenPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso1, HIE_tdxHandleToSuperObject p_SuperObjPerso2, unsigned char ucFlags);
|
||||
MTH_tdxReal fn_xExtendedDistanceBetweenVertexAndPerso(MTH3D_tdstVector *p_stVertex1,HIE_tdxHandleToSuperObject p_SuperObjPerso2 , unsigned char ucFlags);
|
||||
|
||||
MTH_tdxReal fn_xRealModuloAround(MTH_tdxReal xFrom,MTH_tdxReal xModulus,MTH_tdxReal xValue);
|
||||
void fn_vVectorModuloAround(MTH_tdxReal xFrom,MTH_tdxReal xModulus,struct MTH3D_tdstVector_ *p_stRotationVector);
|
||||
|
||||
/*void fn_vMakeAngularSpeedVectorPositive(struct MTH3D_tdstVector_ *p_stRotationVector,struct MTH3D_tdstVector_ *p_stAngleVector,struct MTH3D_tdstVector_ *p_stAimAngleVector);*/
|
||||
|
||||
struct stMACDPID *fn_p_stGetMACDPIDPointer(HIE_tdxHandleToSuperObject p_SuperObjPerso);
|
||||
struct DNM_stReport *fn_pstGetDNMReport(HIE_tdxHandleToSuperObject p_SuperObjPerso);
|
||||
|
||||
unsigned char fn_ucIsThereFloatIfYesConvertItToInteger(struct tdstGetSetParam_ *p_stParam);
|
||||
unsigned char fn_ucAreThereFloatIfYesConvertThem(struct tdstGetSetParam_ *p_stParam1,struct tdstGetSetParam_ *p_stParam2);
|
||||
|
||||
void fn_vGetCenterOfBoundingVolume(HIE_tdxHandleToSuperObject hPerso,struct MTH3D_tdstVector_ *p_stVertex);
|
||||
|
||||
void fn_vSetDontCheckNULLFlag(signed char _cValue);
|
||||
unsigned char fn_ucGetDontCheckNULLFlag(void);
|
||||
|
||||
#if defined(__DEBUG_AI__)
|
||||
char *fn_szGetPersoName(HIE_tdxHandleToSuperObject hPerso);
|
||||
#endif
|
||||
|
||||
ACP_tdxBool fn_bSetPositionWithCollideTest(HIE_tdxHandleToSuperObject p_SuperObjPerso, struct MTH3D_tdstVector_ *p_stVertex);
|
||||
/*ANNECY BBB { parti dans gam\actions\dynam.h*/
|
||||
/*ACP_tdxBool fn_bSetPositionWithoutCollideTest(HIE_tdxHandleToSuperObject p_SuperObjPerso, struct MTH3D_tdstVector_ *p_stVertex);*/
|
||||
/*ANNECY BBB } parti dans gam\actions\dynam.h*/
|
||||
|
||||
#if 0
|
||||
/* YLG modif*/
|
||||
void fn_vBoolAddRequest(HIE_tdxHandleToSuperObject p_SuperObjPerso,enum LRM_eKindOfRequest_ eRequest);
|
||||
#endif
|
||||
unsigned char fn_bGethDynamAndMACDPIDPointers(HIE_tdxHandleToSuperObject p_SuperObjPerso, MS_tdxHandleToDynam *p_h_Dynam, tdstMACDPID **p_p_stMACDPID);
|
||||
|
||||
unsigned char fn_ucInternalTurn(HIE_tdxHandleToSuperObject p_SuperObjPerso,MTH_tdxReal xAngle);
|
||||
|
||||
void fn_vConvertParamToColor(struct tdstGetSetParam_ *p_stParam,struct GEO_tdstColor_ *p_stColor);
|
||||
void fn_vConvertColorToParam(struct GEO_tdstColor_ *p_stColor,struct tdstGetSetParam_ *p_stParam);
|
||||
|
||||
#endif /* __AITOOLS_H__*/
|
Reference in New Issue
Block a user