reman3/Rayman_X/cpa/tempgrp/GAM/Actions/CollSet.c

1347 lines
47 KiB
C

/*=========================================================================
* CollSet.cpp : CollSet's functions
*
*
*
* CollSet MUST BE REPLACE BY THE C FILENAME
*
*
* Version 1.0
* Creation date 01/10/96
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
/*******************************************************/
/**** For the structures and variables declarations ****/
/*******************************************************/
#define D_CollSet_StructureDefine
#define D_CollSet_VariableDefine
#include "ToolsCPA.h"
#include "Options/Options.h"
#include "Macros.h"
#include "Actions/AllActs.h"
#include "GameEng.h"
#include "Structur/Engmode.h"
#include "Structur/MemGame.h"
#include "Structur/ErrGame.h"
#include "Structur/Objects.h"
#include "Structur/GameScpt.h"
#include "Structur/stdobjst.h"
#include "ObjInit.h"
#include "ZeMem.h"
#include "Family.h"
#include "ObjType.h"
#include "ZdxStuff.h"
#include "Structur/3DOSLkTb.h"
#include "basic.h"
/* ANNECY AV {*/
#define C_ucCollSet_NO_COLLISION_WITH_MAP 0x01
#define C_ucCollSet_NO_COLLISION_WITH_PROJECTILE 0x02
#define C_ucCollSet_NO_COLLISION_WITH_SECONDARY_CHARACTER 0x04
#define C_ucCollSet_NO_COLLISION_WITH_MAIN_CHARACTER 0x08
#define C_ucCollSet_FORCE_COLLISION_WHEN_NOT_MOVING 0x10
#define C_ucCollSet_NO_COLLISION_WITH_OTHER_SECTORS 0x20
#define C_ucCollSet_NO_COLLISION_ZDE_WITH_PROJECTILE 0x40
/* END ANNECY AV }*/
/*-----------------------------------------------------------------------------
* Description : CollSet's object action script callback
*-----------------------------------------------------------------------------
* Input : Object pointer
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
#if defined(GAM_USE_SCRIPT)
SCR_tde_Anl_ReturnValue fn_eCollSetScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction)
{
SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn;
MS_tdxHandleToCollSet h_CollSet;
ZDX_tdxHandleToZdxList p_stZdxList = NULL;
ZDX_tdxHandleToCsaList hCsaList = NULL;
char szSectionName[_MAX_PATH+2];
struct tdstEngineObject_ *p_stEngineObject;
SCR_tdst_Cxt_Values *p_stValues ;
#if defined(ACTIVE_EDITOR)
char a255_cLinkKey[255];
#endif /* ACTIVE_EDITOR */
_p_stFile=_p_stFile;
SCR_M_RdL0_GetSectionLong(C_ParentSection,0,struct tdstEngineObject_ *, p_stEngineObject);
if (M_IsTitle)
{
MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeCollSet , p_stEngineObject);
h_CollSet=fn_h_CollSetRealAlloc();
MMG_fn_vEndMemoryInfo ();
p_stEngineObject->h_CollSet=h_CollSet;
fn_vCollSetSetCharacterCollisionFlag(h_CollSet,(unsigned char)1);
SCR_M_RdL0_SetSectionLong(C_ThisSection,0,h_CollSet);
}
else if (M_IsEntry)
{
SCR_M_RdL0_GetSectionLong(C_ThisSection,0,MS_tdxHandleToCollSet,h_CollSet);
if (M_ActionIs(C_EntryZdmTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
p_stZdxList =(ZDX_tdxHandleToZdxList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stZDXList,
a255_cLinkKey,(unsigned long)p_stZdxList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetZdxList(Zdm,h_CollSet,p_stZdxList);
}
else if (M_ActionIs(C_EntryZddTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
p_stZdxList =(ZDX_tdxHandleToZdxList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stZDXList,
a255_cLinkKey,(unsigned long)p_stZdxList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetZdxList(Zdd,h_CollSet,p_stZdxList);
}
else if (M_ActionIs(C_EntryZdeTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
p_stZdxList =(ZDX_tdxHandleToZdxList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stZDXList,
a255_cLinkKey,(unsigned long)p_stZdxList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetZdxList(Zde,h_CollSet,p_stZdxList);
}
else if (M_ActionIs(C_EntryZdrTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
p_stZdxList =(ZDX_tdxHandleToZdxList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stZDXList,
a255_cLinkKey,(unsigned long)p_stZdxList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetZdxList(Zdr,h_CollSet,p_stZdxList);
}
else if (M_ActionIs(C_EntryZddActivationTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
hCsaList =(ZDX_tdxHandleToCsaList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stACZList,
a255_cLinkKey,(unsigned long)hCsaList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetActivationList(Zdd,h_CollSet,hCsaList);
}
else if (M_ActionIs(C_EntryZdeActivationTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
hCsaList =(ZDX_tdxHandleToCsaList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stACZList,
a255_cLinkKey,(unsigned long)hCsaList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetActivationList(Zde,h_CollSet,hCsaList);
}
else if (M_ActionIs(C_EntryZdmActivationTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
hCsaList =(ZDX_tdxHandleToCsaList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stACZList,
a255_cLinkKey,(unsigned long)hCsaList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetActivationList(Zdm,h_CollSet,hCsaList);
}
else if (M_ActionIs(C_EntryZdrActivationTable))
{
M_CheckScriptParamNumber(1);
strcpy(szSectionName,_ap_szParams[0]);
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
if(p_stValues)
{
hCsaList =(ZDX_tdxHandleToCsaList) (p_stValues->a_ulValues[0]);
#if defined(ACTIVE_EDITOR)
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
SCR_M_v_Link_SetAdditionalLong(
SCR_fnp_st_Link_SetValue(&g_st3DOSLinkTable.stACZList,
a255_cLinkKey,(unsigned long)hCsaList),
1,
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
#endif /* ACTIVE_EDITOR */
}
CS_M_SetActivationList(Zdr,h_CollSet,hCsaList);
}
else if (M_ActionIs(C_Entry_CharacterPriority))
{
M_CheckScriptParamNumber(1);
CS_fn_vSetCharacterPriority( h_CollSet,(unsigned char)fn_lAToI(_ap_szParams[0]) );
}
else if ( M_ActionIs(C_EntryCollisionFlag) )
{
M_CheckScriptParamNumber(1);
fn_vCollSetSetCharacterCollisionFlag( h_CollSet,(unsigned char)fn_lAToI(_ap_szParams[0]) );
}
else if ( M_ActionIs(C_EntryCollComputeFrequency) )
{
M_CheckScriptParamNumber(1);
fn_vCollSetSetCollComputeFrequency( h_CollSet,(unsigned char)fn_lAToI(_ap_szParams[0]) );
}
else
{
M_GameInformationError(E_uwGameScriptCallBackDescriptionUnknownAction);
}
SCR_M_RdL0_SetSectionLong(C_ThisSection,0,h_CollSet);
}
return(eReturnValue);
}
#endif /* GAM_USE_SCRIPT */
/*-----------------------------------------------------------------------------
* Description : CollSet's mini-structure sizeof
*-----------------------------------------------------------------------------
* Input : None
* Output : Size of
*-----------------------------------------------------------------------------
* Creation date : 14/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
unsigned long fn_ulCollSetSizeOf()
{
return(sizeof(struct tdstCollSet_));
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object action allocation
*-----------------------------------------------------------------------------
* Input : Object pointer
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
void fn_vCollSetAlloc(struct tdstEngineObject_ *p_stObject)
{
if (p_stObject==NULL)
M_GameFatalError(E_uwGameMiniStructObjectNull);
if (p_stObject->h_CollSet!=NULL)
M_GameFatalError(E_uwGameMiniStructAllocAlreadyAlloc);
MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeCollSet , p_stObject);
p_stObject->h_CollSet = fn_h_CollSetRealAlloc();
MMG_fn_vEndMemoryInfo ();
fn_vCollSetInitValueSAI(p_stObject->h_CollSet);
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object Real Allocation
*-----------------------------------------------------------------------------
* Input :
* Output : Object pointer
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
MS_tdxHandleToCollSet fn_h_CollSetRealAlloc()
{
tdstCollSet *h_CollSet;
h_CollSet = (tdstCollSet*)M_p_GameMallocInHLM(sizeof(tdstCollSet));
h_CollSet->ucCharacterPriority = 0;
h_CollSet->hZddList = NULL;
h_CollSet->hZdeList = NULL;
h_CollSet->hZdmList = NULL;
h_CollSet->hZdrList = NULL;
h_CollSet->hZddActivationList = NULL;
h_CollSet->hZdeActivationList = NULL;
h_CollSet->hZdmActivationList = NULL;
h_CollSet->hZdrActivationList = NULL;
#ifdef MAY_BE_SUPPRESSED
h_CollSet->hInitialZddList = NULL;
h_CollSet->hInitialZdeList = NULL;
h_CollSet->hInitialZdmList = NULL;
h_CollSet->hZddInitialActivationList = NULL;
h_CollSet->hZdeInitialActivationList = NULL;
h_CollSet->hZdmInitialActivationList = NULL;
#endif /* MAY_BE_SUPPRESSED */
/*ANNECY BBB {*/
h_CollSet->stColliderInfo.ucColliderPriority = 0;
/*ANNECY BBB }*/
h_CollSet->ulFBZddPriviligedZones = 0;
h_CollSet->ulFBZdePriviligedZones = 0;
h_CollSet->ulFBZdmPriviligedZones = 0;
h_CollSet->ulFBZdrPriviligedZones = 0;
h_CollSet->ucCollComputeFrequency = 1;
return(h_CollSet);
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object action free
*-----------------------------------------------------------------------------
* Input : Object pointer
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
void fn_vCollSetFree(struct tdstEngineObject_ *p_stObject)
{
if (p_stObject==NULL)
M_GameFatalError(E_uwGameMiniStructObjectNull);
if (p_stObject->h_CollSet==NULL)
M_GameFatalError(E_uwGameMiniStructNull);
fn_vCollSetFreeInitValueSAI(p_stObject->h_CollSet);
MMG_fn_vAddMemoryInfo( MMG_C_lTypeMiniStructure , MMG_C_lSubTypeCollSet , p_stObject );
M_GameFreeInHLM(p_stObject->h_CollSet);
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object action initialisation
*-----------------------------------------------------------------------------
* Input : When this function's called (see ObjInit.h)
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
void fn_vCollSetInit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit)
{
if (p_stObject==NULL)
M_GameFatalError(E_uwGameMiniStructObjectNull);
if (p_stObject->h_CollSet==NULL)
M_GameFatalError(E_uwGameMiniStructNull);
switch(eObjectInit)
{
case OTI_AlwaysCreated:
break;
case OTI_MapLoaded:
fn_vCollSetSavedValueSAI(p_stObject->h_CollSet);
case OTI_LoadSavedGame:
case OTI_WhenGameStart:
fn_vCollSetInitValueSAI(p_stObject->h_CollSet);
p_stObject->h_CollSet->stColliderInfo.ucColliderPriority = 0;
p_stObject->h_CollSet->ulFBZddPriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdePriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdmPriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdrPriviligedZones = 0;
/* Testing integrity of activation lists*/
/* Oliv' - 21/06/1999 - On U64, we assume Editor did its job well ;-) */
#ifndef D_THROW_ZSE_INDEX
fn_vCorrectAllActivationLists(p_stObject);
/*fn_vUpdateAllZoneSetForCharacter(fn_h_StandardGameGetSuperObject(p_stObject->h_StandardGame));*/
#endif /* D_THROW_ZSE_INDEX */
/* EndOfOliv' */
break;
case OTI_PlayerDead:
case OTI_ReinitTheMap:
p_stObject->h_CollSet->stColliderInfo.ucColliderPriority = 0;
p_stObject->h_CollSet->ulFBZddPriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdePriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdmPriviligedZones = 0;
p_stObject->h_CollSet->ulFBZdrPriviligedZones = 0;
break;
}
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object action desinitialisation
*-----------------------------------------------------------------------------
* Input : When this function's called (see ObjInit.h)
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 01/10/96 Author : Francois
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
void fn_vCollSetDesinit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit)
{
if (p_stObject==NULL)
M_GameFatalError(E_uwGameMiniStructObjectNull);
if (p_stObject->h_CollSet==NULL)
M_GameFatalError(E_uwGameMiniStructNull);
switch(eObjectInit)
{
case OTI_ReinitTheMap:
break;
case OTI_MapLoaded:
break;
case OTI_AlwaysCreated:
case OTI_PlayerDead:
break;
default:
break;
}
}
/*-----------------------------------------------------------------------------
* Description : CollSet's object copy clone action
*-----------------------------------------------------------------------------
* Input : Handle to destination, handle to source
* Output : None
*-----------------------------------------------------------------------------
* Creation date : 30/06/97 Author : Olivier Jourdan
*-----------------------------------------------------------------------------
* Modification date : Modification Author :
* Modifications :
*---------------------------------------------------------------------------*/
void fn_vCollSetCopyClone(struct tdstEngineObject_ * _p_stObjectDest,struct tdstEngineObject_ * _p_stObjectSrc)
{
/* If CollSet doesn't contains pointers to structure that may be*/
/* changed during the game, this function must only be a :*/
memcpy(
_p_stObjectDest->h_CollSet,
_p_stObjectSrc->h_CollSet,
fn_ulCollSetSizeOf()
/*ANNECY BBB {*/
/*do not copy the internal datae, because these are only communication handling variables*/
- sizeof(struct stColliderInfo_)
/*ANNECY BBB }*/
);
}
/*ANNECY BBB {*/
unsigned char fn_ucCollSetGetColliderPriority(MS_tdxHandleToCollSet _hCollSet)
{
return _hCollSet->stColliderInfo.ucColliderPriority;
}
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
unsigned char fn_ucCollSetGetColliderPrioritySO (HIE_tdxHandleToSuperObject _hSuperObject)
{
MS_tdxHandleToCollSet h_CollSet = _hSuperObject ? M_GetMSHandle(_hSuperObject,CollSet) : NULL;
return (unsigned char) (h_CollSet ? fn_ucCollSetGetColliderPriority(h_CollSet) : (unsigned char) 0);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
unsigned char fn_ucCollSetGetColliderType(MS_tdxHandleToCollSet _hCollSet)
{
return _hCollSet->stColliderInfo.ucColliderType;
}
MTH3D_tdstVector fn_stCollSetGetColliderVector(MS_tdxHandleToCollSet _hCollSet, short _wIndex)
{
MTH3D_tdstVector stNullVect = { MTH_C_ZERO, MTH_C_ZERO, MTH_C_ZERO };
return ( _wIndex >= 0 && _wIndex < C_wCollsetNbCollisionVectors )
? _hCollSet->stColliderInfo.a_stColliderVectors[_wIndex]
: stNullVect;
}
MTH_tdxReal fn_xCollSetGetColliderReal(MS_tdxHandleToCollSet _hCollSet, short _wIndex)
{
return ( _wIndex >= 0 && _wIndex < C_wCollsetNbCollisionReals )
? _hCollSet->stColliderInfo.a_xColliderReals[_wIndex]
: MTH_C_ZERO;
}
void fn_vCollSetSetColliderPriority(MS_tdxHandleToCollSet _hCollSet, unsigned char _ucPri)
{
_hCollSet->stColliderInfo.ucColliderPriority = _ucPri;
}
void fn_vCollSetSetColliderType(MS_tdxHandleToCollSet _hCollSet, unsigned char _ucType)
{
_hCollSet->stColliderInfo.ucColliderType = _ucType;
}
void fn_vCollSetSetColliderVector(MS_tdxHandleToCollSet _hCollSet, short _wIndex, MTH3D_tdstVector *_p_stVector)
{
if ( _wIndex >= 0 && _wIndex < C_wCollsetNbCollisionVectors )
_hCollSet->stColliderInfo.a_stColliderVectors[_wIndex] = *_p_stVector;
}
void fn_vCollSetSetColliderReal(MS_tdxHandleToCollSet _hCollSet, short _wIndex, MTH_tdxReal _xReal)
{
if ( _wIndex >= 0 && _wIndex < C_wCollsetNbCollisionReals )
_hCollSet->stColliderInfo.a_xColliderReals[_wIndex] = _xReal;
}
/*ANNECY BBB }*/
/*--------------------------------------------------------------------*/
ZDX_tdxHandleToZdxList CS_fn_hGetZdxList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj)
{
if( !M_GetMSHandle(hSuperObj,CollSet) )
return NULL;
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetZdxList(Zdd,M_GetMSHandle(hSuperObj,CollSet)) );
break;
case C_ucTypeZde:
return( CS_M_GetZdxList(Zde,M_GetMSHandle(hSuperObj,CollSet)) );
break;
case C_ucTypeZdm:
return( CS_M_GetZdxList(Zdm,M_GetMSHandle(hSuperObj,CollSet)) );
break;
case C_ucTypeZdr:
return( CS_M_GetZdxList(Zdr,M_GetMSHandle(hSuperObj,CollSet)) );
break;
default:
return NULL;
break;
}
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void CS_fn_vSetZdxList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToZdxList hZdxList)
{
if( !M_GetMSHandle(hSuperObj,CollSet) ) return;
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetZdxList(Zdd,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
case C_ucTypeZde:
CS_M_SetZdxList(Zde,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
case C_ucTypeZdm:
CS_M_SetZdxList(Zdm,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
case C_ucTypeZdr:
CS_M_SetZdxList(Zdr,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
}
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
ZDX_tdxHandleToCsaList CS_fn_hGetActivationList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
return( h_CollSet ? CS_fn_hGetActivationListInCollSet(ucZoneType,h_CollSet) : NULL);
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void CS_fn_vSetActivationList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToCsaList hCsaList)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
if( h_CollSet )
CS_fn_vSetActivationListInCollSet(ucZoneType,h_CollSet,hCsaList);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
ZDX_tdxHandleToCsaList CS_fn_hGetActivationListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetActivationList(Zdd,hCollSet) );
break;
case C_ucTypeZde:
return( CS_M_GetActivationList(Zde,hCollSet) );
break;
case C_ucTypeZdm:
return( CS_M_GetActivationList(Zdm,hCollSet) );
break;
case C_ucTypeZdr:
return( CS_M_GetActivationList(Zdr,hCollSet) );
break;
default:
return NULL;
break;
}
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void CS_fn_vSetActivationListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToCsaList hCsaList)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetActivationList(Zdd,hCollSet,hCsaList);
break;
case C_ucTypeZde:
CS_M_SetActivationList(Zde,hCollSet,hCsaList);
break;
case C_ucTypeZdm:
CS_M_SetActivationList(Zdm,hCollSet,hCsaList);
break;
case C_ucTypeZdr:
CS_M_SetActivationList(Zdr,hCollSet,hCsaList);
break;
}
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
unsigned char CS_fn_ucGetCharacterPriority(MS_tdxHandleToCollSet _hCollSet)
{
return( _hCollSet->ucCharacterPriority );
}
/*--------------------------------------------------------------------*/
void CS_fn_vSetCharacterPriority(MS_tdxHandleToCollSet hCollSet,unsigned char _ucPriority)
{
hCollSet->ucCharacterPriority = _ucPriority;
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
unsigned char fn_ucCollSetGetCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet)
{
return ( _hCollSet->ucCollisionFlag );
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet,unsigned char _ucCollisionFlag)
{
_hCollSet->ucCollisionFlag = _ucCollisionFlag;
}
/*--------------------------------------------------------------------*/
/* ANNECY AV {*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithMap (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_MAP);
}
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithProjectile (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_PROJECTILE);
}
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithSecondaryCharacter (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_SECONDARY_CHARACTER);
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
ACP_tdxBool fn_bCollSetGetCharacterForceCollisionWhenNotMoving (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_FORCE_COLLISION_WHEN_NOT_MOVING);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithMainCharacter (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_MAIN_CHARACTER);
}
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithOtherSectors (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_OTHER_SECTORS);
}
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bCollSetGetCharacterNoCollisionZdeWithProjectile (MS_tdxHandleToCollSet _hCollSet)
{
return (ACP_tdxBool) (_hCollSet->ucCollisionFlag & C_ucCollSet_NO_COLLISION_ZDE_WITH_PROJECTILE);
}
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionWithMap (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_MAP;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_MAP;
}
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionWithProjectile (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_PROJECTILE;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_PROJECTILE;
}
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionWithSecondaryCharacter (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_SECONDARY_CHARACTER;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_SECONDARY_CHARACTER;
}
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionWithMainCharacter (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_MAIN_CHARACTER;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_MAIN_CHARACTER;
}
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionWithOtherSectors (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_OTHER_SECTORS;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_OTHER_SECTORS;
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vCollSetSetCharacterForceCollisionWhenNotMoving (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_FORCE_COLLISION_WHEN_NOT_MOVING;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_FORCE_COLLISION_WHEN_NOT_MOVING;
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCharacterNoCollisionZdeWithProjectile (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue)
{
if (_bValue) _hCollSet->ucCollisionFlag |= C_ucCollSet_NO_COLLISION_ZDE_WITH_PROJECTILE;
else _hCollSet->ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_ZDE_WITH_PROJECTILE;
}
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
ACP_tdxBool fn_bGetCharacterNoCollisionWithMap (HIE_tdxHandleToSuperObject _hSuperObject)
{
MS_tdxHandleToCollSet h_CollSet = _hSuperObject ? M_GetMSHandle(_hSuperObject,CollSet) : NULL;
return (ACP_tdxBool) (h_CollSet ? h_CollSet -> ucCollisionFlag & C_ucCollSet_NO_COLLISION_WITH_MAP : TRUE);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
ACP_tdxBool fn_bGetCharacterForceCollisionWhenNotMoving (HIE_tdxHandleToSuperObject _hSuperObject)
{
MS_tdxHandleToCollSet h_CollSet = _hSuperObject ? M_GetMSHandle(_hSuperObject,CollSet) : NULL;
return (ACP_tdxBool) (h_CollSet ? h_CollSet -> ucCollisionFlag & C_ucCollSet_FORCE_COLLISION_WHEN_NOT_MOVING : FALSE);
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vSetCharacterNoCollisionWithMap (HIE_tdxHandleToSuperObject _hSuperObject, ACP_tdxBool _bValue)
{
MS_tdxHandleToCollSet h_CollSet = _hSuperObject ? M_GetMSHandle(_hSuperObject,CollSet) : NULL;
if (h_CollSet)
{
if (_bValue) M_GetMSHandle (_hSuperObject,CollSet) -> ucCollisionFlag |= C_ucCollSet_NO_COLLISION_WITH_MAP;
else M_GetMSHandle (_hSuperObject,CollSet) -> ucCollisionFlag &= ~ C_ucCollSet_NO_COLLISION_WITH_MAP;
}
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/* END ANNECY AV }*/
/*--------------------------------------------------------------------*/
void fn_vCollSetSetCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet,unsigned char _ucFrequency)
{
_hCollSet -> ucCollComputeFrequency = _ucFrequency;
}
/*--------------------------------------------------------------------*/
unsigned char fn_ucCollSetGetCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet)
{
return (unsigned char)(_hCollSet ? _hCollSet -> ucCollComputeFrequency : 1);
}
/*--------------------------------------------------------------------*/
unsigned char fn_ucCollSetGetCollComputeFrequencySO(HIE_tdxHandleToSuperObject hSuperObj)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
return (unsigned char)( h_CollSet ? fn_ucCollSetGetCollComputeFrequency( h_CollSet ) : 1 );
}
/*--------------------------------------------------------------------*/
#ifndef D_THROW_ZSE_INDEX /* Oliv' - 21/06/1999 */
void fn_vCorrectAllActivationLists(struct tdstEngineObject_ * _p_stObject)
{
if( _p_stObject->h_CollSet )
{
long lNumberOfState;
MS_tdxHandleToCollSet hCollSet;
tdstFamily * hFamily;
hCollSet = _p_stObject->h_CollSet;
hFamily = (tdstFamily *)fn_h3dDataGetFamily(_p_stObject->h_3dData);
lNumberOfState = LST2_M_StaticGetNumberOfElements(&hFamily->hForStateArray);
if( hCollSet->hZddActivationList )
fn_vCorrectActivationList(hCollSet->hZddActivationList,lNumberOfState);
if( hCollSet->hZdeActivationList )
fn_vCorrectActivationList(hCollSet->hZdeActivationList,lNumberOfState);
if( hCollSet->hZdmActivationList )
fn_vCorrectActivationList(hCollSet->hZdmActivationList,lNumberOfState);
if( hCollSet->hZdrActivationList )
fn_vCorrectActivationList(hCollSet->hZdrActivationList,lNumberOfState);
}
}
#endif /* D_THROW_ZSE_INDEX */
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void GAM_fn_vChangeFather(HIE_tdxHandleToSuperObject _hSprObj, HIE_tdxHandleToSuperObject _hNewFather)
{
ACP_tdxIndex iIndex;
HIE_tdxHandleToSuperObject hChild;
HIE_tdxHandleToSuperObject hPrevChild;
long lPriority,lPriorityNfc;
MS_tdxHandleToCollSet hCollSet;
hCollSet=M_GetMSHandle(_hSprObj,CollSet);
if(hCollSet!=NULL)
{
lPriority=CS_fn_ucGetCharacterPriority(hCollSet);
}
else
{
lPriority=0;
}
HIE_fn_vInvalidateSuperObject(&hPrevChild);
HIE_M_ForEachChildOf(_hNewFather, hChild,iIndex)
{
hCollSet=M_GetMSHandle(_hSprObj,CollSet);
if(hCollSet!=NULL)
{
lPriorityNfc=CS_fn_ucGetCharacterPriority(hCollSet);
}
else
{
lPriorityNfc=0;
}
if((HIE_fn_ulGetSuperObjectType(hChild)==HIE_C_ulActor)&&(lPriority>lPriorityNfc)) break;
hPrevChild=hChild;
}
if(HIE_fn_bIsSuperObjectValid(hChild))
{
LST2_M_DynamicInsertBetween(_hSprObj, hPrevChild, hChild);
}
else
{
LST2_M_DynamicAddTail(_hNewFather, _hSprObj);
}
HIE_fn_vComputeNewRelativeMatrix(_hSprObj);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
#ifdef MAY_BE_SUPPRESSED
ZDX_tdxHandleToZdxList CS_fn_hGetZdxInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
if( !h_CollSet ) return NULL;
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetZdxInitialList(Zdd,h_CollSet) );
break;
case C_ucTypeZde:
return( CS_M_GetZdxInitialList(Zde,h_CollSet) );
break;
case C_ucTypeZdm:
return( CS_M_GetZdxInitialList(Zdm,h_CollSet) );
break;
default:
return NULL;
break;
}
}
void CS_fn_vSetZdxInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToZdxList hZdxList)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetZdxInitialList(Zdd,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
case C_ucTypeZde:
CS_M_SetZdxInitialList(Zde,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
case C_ucTypeZdm:
CS_M_SetZdxInitialList(Zdm,M_GetMSHandle(hSuperObj,CollSet),hZdxList);
break;
}
}
ZDX_tdxHandleToCsaList CS_fn_hGetActivationInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
return( h_CollSet ? CS_fn_hGetActivationInitialListInCollSet(ucZoneType,h_CollSet) : NULL );
}
void CS_fn_vSetActivationInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToCsaList hCsaList)
{
MS_tdxHandleToCollSet h_CollSet = hSuperObj ? M_GetMSHandle(hSuperObj,CollSet) : NULL;
if (h_CollSet)
CS_fn_vSetActivationInitialListInCollSet(ucZoneType,h_CollSet,hCsaList);
}
struct tdstZdxList_ * CS_fn_hGetZdxListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetZdxList(Zdd,hCollSet) );
break;
case C_ucTypeZde:
return( CS_M_GetZdxList(Zde,hCollSet) );
break;
case C_ucTypeZdm:
return( CS_M_GetZdxList(Zdm,hCollSet) );
break;
case C_ucTypeZdr:
return( CS_M_GetZdxList(Zdr,hCollSet) );
break;
default:
return NULL;
break;
}
}
struct tdstZdxList_ * CS_fn_hGetZdxInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetZdxInitialList(Zdd,hCollSet) );
break;
case C_ucTypeZde:
return( CS_M_GetZdxInitialList(Zde,hCollSet) );
break;
case C_ucTypeZdm:
return( CS_M_GetZdxInitialList(Zdm,hCollSet) );
break;
default:
return NULL;
break;
}
}
void CS_fn_vSetZdxListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,struct tdstZdxList_ * hZdxList)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetZdxList(Zdd,hCollSet,hZdxList);
break;
case C_ucTypeZde:
CS_M_SetZdxList(Zde,hCollSet,hZdxList);
break;
case C_ucTypeZdm:
CS_M_SetZdxList(Zdm,hCollSet,hZdxList);
break;
case C_ucTypeZdr:
CS_M_SetZdxList(Zdr,hCollSet,hZdxList);
break;
}
}
void CS_fn_vSetZdxInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,struct tdstZdxList_ * hZdxList)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetZdxInitialList(Zdd,hCollSet,hZdxList);
break;
case C_ucTypeZde:
CS_M_SetZdxInitialList(Zde,hCollSet,hZdxList);
break;
case C_ucTypeZdm:
CS_M_SetZdxInitialList(Zdm,hCollSet,hZdxList);
break;
}
}
ZDX_tdxHandleToCsaList CS_fn_hGetActivationInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
return( CS_M_GetActivationInitialList(Zdd,hCollSet) );
break;
case C_ucTypeZde:
return( CS_M_GetActivationInitialList(Zde,hCollSet) );
break;
case C_ucTypeZdm:
return( CS_M_GetActivationInitialList(Zdm,hCollSet) );
break;
default:
return NULL;
break;
}
}
void CS_fn_vSetActivationInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToCsaList hCsaList)
{
switch(ucZoneType)
{
case C_ucTypeZdd:
CS_M_SetActivationInitialList(Zdd,hCollSet,hCsaList);
break;
case C_ucTypeZde:
CS_M_SetActivationInitialList(Zde,hCollSet,hCsaList);
break;
case C_ucTypeZdm:
CS_M_SetActivationInitialList(Zdm,hCollSet,hCsaList);
break;
}
}
#endif /* MAY_BE_SUPPRESSED */
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
* Functions for optimisation
*-------------------------------------------------------------------*/
void fn_vSetCurrentZoneSetOfType(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,ZDX_tdxHandleToZoneSetList _hCurrentZoneSet)
{
switch( _ucZoneType )
{
case C_ucTypeZdd:
_hCollSet->hZddCurrentActivation = _hCurrentZoneSet;
break;
case C_ucTypeZdr:
_hCollSet->hZdrCurrentActivation = _hCurrentZoneSet;
break;
case C_ucTypeZde:
_hCollSet->hZdeCurrentActivation = _hCurrentZoneSet;
break;
case C_ucTypeZdm:
_hCollSet->hZdmCurrentActivation = _hCurrentZoneSet;
break;
}
}
/*--------------------------------------------------------------------*/
ZDX_tdxHandleToZoneSetList fn_hGetCurrentZoneSetOfType(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet)
{
switch( _ucZoneType )
{
case C_ucTypeZdd:
return( _hCollSet->hZddCurrentActivation );
break;
case C_ucTypeZdr:
return( _hCollSet->hZdrCurrentActivation );
break;
case C_ucTypeZde:
return( _hCollSet->hZdeCurrentActivation );
break;
case C_ucTypeZdm:
return( _hCollSet->hZdmCurrentActivation );
break;
}
/* Oliv' - Portage v14 - avoid warnings*/
#ifdef U64
return NULL;
#endif
/* EndOfOliv'*/
}
/*--------------------------------------------------------------------*/
unsigned long CS_fn_ulGetPrivilegedActivationZoneInCollSet(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet)
{
switch( _ucZoneType )
{
case C_ucTypeZdd:
return CS_M_GetPrivilegedZone(Zdd,_hCollSet);
break;
case C_ucTypeZdr:
return CS_M_GetPrivilegedZone(Zdr,_hCollSet);
break;
case C_ucTypeZde:
return CS_M_GetPrivilegedZone(Zde,_hCollSet);
break;
case C_ucTypeZdm:
return CS_M_GetPrivilegedZone(Zdm,_hCollSet);
break;
}
/* Oliv' - Portage v14 - avoid warnings*/
#ifdef U64
return 0L;
#endif
/* EndOfOliv'*/
}
/*--------------------------------------------------------------------*/
void CS_fn_vSetPrivilegedActivationZoneInCollSet(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet, unsigned long _ulFB)
{
switch( _ucZoneType )
{
case C_ucTypeZdd:
CS_M_SetPrivilegedZone(Zdd,_hCollSet,_ulFB);
break;
case C_ucTypeZdr:
CS_M_SetPrivilegedZone(Zdr,_hCollSet,_ulFB);
break;
case C_ucTypeZde:
CS_M_SetPrivilegedZone(Zde,_hCollSet,_ulFB);
break;
case C_ucTypeZdm:
CS_M_SetPrivilegedZone(Zdm,_hCollSet,_ulFB);
break;
}
}
/*--------------------------------------------------------------------*/
void CS_fn_vSetPrivilegedActivationZone(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,short _wIndex, tdeCollSetPrivilegedActivation _ePrivilege)
{
unsigned long ulFB;
short wDecal;
wDecal = (short)(_wIndex<<1); /* 2 bits by zone*/
ulFB = CS_fn_ulGetPrivilegedActivationZoneInCollSet(_ucZoneType,_hCollSet);
switch(_ePrivilege)
{
case edmPriviligedDefault:
ulFB &= ~((long)(3 << wDecal)); /* forces the 2 bits to 00*/
break;
case edmPriviligedActivated:
ulFB &= ~((long)(3 << wDecal)); /* forces the 2 bits to 00*/
ulFB |= (1 << wDecal); /* forces the 2 bits to 01*/
break;
case edmPriviligedDisactivated: /* forces the 2 bits to 00*/
ulFB &= ~((long)(3 << wDecal)); /* forces the 2 bits to 10*/
ulFB |= (2 << wDecal);
break;
default:
break;
}
CS_fn_vSetPrivilegedActivationZoneInCollSet(_ucZoneType,_hCollSet,ulFB);
}
/*--------------------------------------------------------------------*/
tdeCollSetPrivilegedActivation CS_fn_eGetPrivilegedActivationZone(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,short _wIndex)
{
unsigned long ulFB;
unsigned char ucFlags;
short wDecal;
/* ANNECY MT - 18/09/98 {*/
ulFB = CS_fn_ulGetPrivilegedActivationZoneInCollSet(_ucZoneType,_hCollSet);
if(!ulFB) return edmPriviligedDefault;
wDecal = (short)(_wIndex<<1); /* 2 bits by zone*/
ulFB &= (3 << wDecal);
ucFlags = (unsigned char)(ulFB >> wDecal);
/* END ANNECY MT }*/
switch(ucFlags)
{
case 0: /* 00*/
return edmPriviligedDefault;
break;
case 1: /* 01*/
return edmPriviligedActivated;
break;
case 2: /* 10*/
return edmPriviligedDisactivated;
break;
}
return edmNumberOfPrivilegedActivation;
}
/*--------------------------------------------------------------------*/
#define CS_M_SAIInitFlags (SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded|SAI_eInitWhenNewGameStart)
#define CS_M_SAISaveFlags (SAI_eLevelSaveCurrentValue)
/*--------------------------------------------------------------------*/
void fn_vCollSetInitValueSAI(MS_tdxHandleToCollSet _hCollSet)
{
SAI_fn_bInsertCharInTable((void*)&_hCollSet->ucCollisionFlag, CS_M_SAIInitFlags);
SAI_fn_bInsertCharInTable((void*)&_hCollSet->ucCollComputeFrequency,CS_M_SAIInitFlags);
}
/*--------------------------------------------------------------------*/
void fn_vCollSetSavedValueSAI(MS_tdxHandleToCollSet _hCollSet)
{
#if 0
SAI_fn_bInsertCharInTable((void*)&_hCollSet->ucCollisionFlag, CS_M_SAISaveFlags);
SAI_fn_bInsertCharInTable((void*)&_hCollSet->ucCollComputeFrequency,CS_M_SAISaveFlags);
#endif /* 0 */
}
/*--------------------------------------------------------------------*/
void fn_vCollSetFreeInitValueSAI(MS_tdxHandleToCollSet _hCollSet)
{
SAI_fn_bRemoveValueFromTable((void*)&_hCollSet->ucCollisionFlag, CS_M_SAIInitFlags);
SAI_fn_bRemoveValueFromTable((void*)&_hCollSet->ucCollComputeFrequency, CS_M_SAIInitFlags);
#if 0
SAI_fn_bRemoveValueFromTable((void*)&_hCollSet->ucCollisionFlag, CS_M_SAISaveFlags);
SAI_fn_bRemoveValueFromTable((void*)&_hCollSet->ucCollComputeFrequency, CS_M_SAISaveFlags);
#endif /* 0 */
}
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vCollSetReInitCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet)
{
SAI_fn_bInitOneValueWhen((void*)&_hCollSet->ucCollisionFlag, CS_M_SAIInitFlags);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vCollSetReInitCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet)
{
SAI_fn_bInitOneValueWhen((void*)&_hCollSet->ucCollComputeFrequency, CS_M_SAIInitFlags);
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
#ifdef ACTIVE_EDITOR
unsigned char *fn_p_ucCollSetGetCharacterCollisionFlagInit(MS_tdxHandleToCollSet _hCollSet)
{
return (unsigned char*)SAI_fn_p_vGetTableValuePointerOf((void*)&_hCollSet->ucCollisionFlag, CS_M_SAIInitFlags);
}
/*--------------------------------------------------------------------*/
unsigned char *fn_p_ucCollSetGetCollComputeFrequencyInit(MS_tdxHandleToCollSet _hCollSet)
{
return (unsigned char*)SAI_fn_p_vGetTableValuePointerOf((void*)&_hCollSet->ucCollComputeFrequency, CS_M_SAIInitFlags);
}
#endif /* ACTIVE_EDITOR */
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/