296 lines
11 KiB
C
296 lines
11 KiB
C
/*=========================================================================
|
|
* ObjsTbls.c : This module contain all models functions
|
|
* This is a part of the Game project.
|
|
*
|
|
* Version 1.0
|
|
* Creation date 01/04/97
|
|
* Revision date
|
|
*
|
|
* That file needs to be compatible for all platforms.
|
|
*
|
|
* (c) Ubi Studios 1997
|
|
*=======================================================================*/
|
|
|
|
/*******************************************************/
|
|
/**** For the structures and variables declarations ****/
|
|
/*******************************************************/
|
|
#define D_ObjsTbls_Define
|
|
#include "ToolsCPA.h"
|
|
|
|
#include "Options/Options.h"
|
|
#include "Macros.h"
|
|
|
|
#include "Actions/AllActs.h"
|
|
|
|
#include "Family.h"
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/ErrGame.h"
|
|
#include "Structur/Objects.h"
|
|
#include "Structur/GameScpt.h"
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/StdObjSt.h"
|
|
#include "Structur/EngMode.h"
|
|
|
|
#include "Structur/ObjsTbls.h"
|
|
|
|
#include "ZeMem.h"
|
|
|
|
/* ************* ObjectsTablesList *************/
|
|
tdxHandleToObjectsTablesList fn_hObjectsTablesListAlloc(void)
|
|
{
|
|
tdxHandleToObjectsTablesList h_ObjectsTablesListElement;
|
|
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLList , 0 );
|
|
h_ObjectsTablesListElement = (tdxHandleToObjectsTablesList)M_p_GameMallocInHLM(sizeof(struct tdstObjectsTablesList_));
|
|
|
|
h_ObjectsTablesListElement->wNumberOfElement = 0;
|
|
h_ObjectsTablesListElement->d_stObjectsTable = NULL;
|
|
#ifndef U64 //AR9904 Useless !
|
|
h_ObjectsTablesListElement->d_stInitObjectsTable = NULL;
|
|
#endif
|
|
/* ANNECY AV {*/
|
|
h_ObjectsTablesListElement->wZDxUsed = 0;
|
|
/* END ANNECY AV }*/
|
|
|
|
return(h_ObjectsTablesListElement);
|
|
}
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_hObjectsTablesListFree(tdxHandleToObjectsTablesList h_ObjectsTableElement)
|
|
{
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLList , 0 );
|
|
M_GameFreeInHLM(h_ObjectsTableElement);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
|
|
void fn_vInitObjectsTablesList(struct tdstFamilyList_ *p_stFamily)
|
|
{
|
|
/* Init the List structure*/
|
|
LST2_M_StaticInitAnchor(&(p_stFamily->hForObjectsTablesList));
|
|
}
|
|
|
|
#ifndef LST2_StaticIsOptimised
|
|
void fn_vAddAnObjectsTablesInList( struct tdstFamilyList_ *p_stFamily
|
|
, tdxHandleToObjectsTablesList h_ObjectsTablesListElement)
|
|
{
|
|
LST2_M_StaticAddTail(&(p_stFamily->hForObjectsTablesList),h_ObjectsTablesListElement);
|
|
}
|
|
#else
|
|
void fn_vAddAnObjectsTablesInList( struct tdstFamilyList_ *p_stFamily, tdxHandleToObjectsTablesList h_ObjectsTablesListElement)
|
|
{
|
|
LST2_M_StaticSetNumberOfElements(&(p_stFamily->hForObjectsTablesList), 1);
|
|
LST2_M_StaticSetFirstElement(&(p_stFamily->hForObjectsTablesList),h_ObjectsTablesListElement);
|
|
}
|
|
#endif /*AR9808*/
|
|
|
|
/* ************************************************************************************************* */
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vChangeObjectsTableForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject, long l_Number)
|
|
{
|
|
long i;
|
|
tdxHandleToObjectsTablesList h_ObjectsTablesListElement;
|
|
|
|
if(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))==NULL) return;
|
|
|
|
LST2_M_StaticGetElementNumber(&(fn_h3dDataGetFamily(M_GetMSHandle(p_stSuperObject,3dData))->hForObjectsTablesList)
|
|
,h_ObjectsTablesListElement
|
|
,l_Number,i);
|
|
|
|
fn_v3dDataSetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData),h_ObjectsTablesListElement);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
/* ************************************************************************************************* */
|
|
|
|
/* ************************************************************************************************* */
|
|
void fn_vExchangeTwoObjectsInCurrentObjectsTable(HIE_tdxHandleToSuperObject p_stSuperObject
|
|
,unsigned short w_ObjectA ,unsigned short w_ObjectB)
|
|
{
|
|
struct tdstObjectsTableElement_ stObjectsTableElement;
|
|
|
|
if(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))==NULL) return;
|
|
|
|
memcpy( &stObjectsTableElement
|
|
, &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectB])
|
|
, sizeof(struct tdstObjectsTableElement_));
|
|
|
|
memcpy( &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectB])
|
|
, &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectA])
|
|
, sizeof(struct tdstObjectsTableElement_));
|
|
|
|
memcpy( &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectA])
|
|
, &stObjectsTableElement
|
|
, sizeof(struct tdstObjectsTableElement_));
|
|
|
|
}
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vCopyObjectDestFromSourceOfObjectsTable(HIE_tdxHandleToSuperObject p_stSuperObject
|
|
,unsigned short w_ObjectDest ,unsigned short w_ObjectSource)
|
|
{
|
|
if(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))==NULL) return;
|
|
|
|
memcpy( &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectDest])
|
|
, &(fn_h3dDataGetCurrentObjectsTable(M_GetMSHandle(p_stSuperObject,3dData))->d_stObjectsTable[w_ObjectSource])
|
|
, sizeof(struct tdstObjectsTableElement_));
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
void fn_vCopyObjectFromObjectTabletoAnother(
|
|
tdxHandleToObjectsTablesList _hTargetTable,
|
|
tdxHandleToObjectsTablesList _hSourceTable,
|
|
unsigned short _uwTargetObject,
|
|
unsigned short _uwSourceObject
|
|
)
|
|
{
|
|
if ( _hTargetTable == NULL || _hSourceTable == NULL ) return;
|
|
|
|
_hTargetTable->d_stObjectsTable[_uwTargetObject] = _hSourceTable->d_stObjectsTable[_uwSourceObject];
|
|
}
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
unsigned short fn_uwGetObjectTableNumberOfelements(tdxHandleToObjectsTablesList _hTargetTable)
|
|
{
|
|
if ( _hTargetTable )
|
|
return _hTargetTable->wNumberOfElement;
|
|
else
|
|
return 0;
|
|
}
|
|
/* ************************************************************************************************* */
|
|
/* ************************************************************************************************* */
|
|
|
|
/* ************* ObjectsTables *************/
|
|
void fn_vObjectsTablesAlloc(tdxHandleToObjectsTablesList h_ObjectsTablesListElement,unsigned short wNumberOfElement)
|
|
{
|
|
unsigned long i;
|
|
|
|
h_ObjectsTablesListElement->wNumberOfElement = wNumberOfElement;
|
|
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLElement , 0 );
|
|
h_ObjectsTablesListElement->d_stObjectsTable
|
|
= (struct tdstObjectsTableElement_ *)M_p_GameMallocInHLM(wNumberOfElement*sizeof(struct tdstObjectsTableElement_));
|
|
|
|
#ifndef U64 //AR9904 Useless !
|
|
h_ObjectsTablesListElement->d_stInitObjectsTable = NULL;
|
|
#endif
|
|
|
|
for ( i = 0; i < wNumberOfElement; i ++ )
|
|
h_ObjectsTablesListElement->d_stObjectsTable[i].wTypeOfTarget = C_wTdO_Undefined;
|
|
}
|
|
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vDuplicateObjectTable(tdxHandleToObjectsTablesList hObjTableList)
|
|
{
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLElement , 0 );
|
|
hObjTableList->d_stInitObjectsTable
|
|
= (struct tdstObjectsTableElement_ *)M_p_GameMallocInHLM(hObjTableList->wNumberOfElement*sizeof(struct tdstObjectsTableElement_));
|
|
memcpy(hObjTableList->d_stInitObjectsTable,hObjTableList->d_stObjectsTable,sizeof(struct tdstObjectsTableElement_)*hObjTableList->wNumberOfElement);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vReInitObjectTable(tdxHandleToObjectsTablesList hObjTableList)
|
|
{
|
|
memcpy(hObjTableList->d_stObjectsTable,hObjTableList->d_stInitObjectsTable,sizeof(struct tdstObjectsTableElement_)*hObjTableList->wNumberOfElement);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/* ***** ACCESS FUNCTIONS BY HANDLES ***** */
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
tdxHandleToObjectsTableElement fn_d_hGetObjectsTable(tdxHandleToObjectsTablesList h_ObjectsTablesListElement)
|
|
{
|
|
return(h_ObjectsTablesListElement->d_stObjectsTable);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
tdxHandleToObjectsTableElement fn_d_hGetInitObjectsTable(tdxHandleToObjectsTablesList h_ObjectsTablesListElement)
|
|
{
|
|
return(h_ObjectsTablesListElement->d_stInitObjectsTable);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
tdxHandleToObjectsTableElement fn_d_hGetElementByNumberInObjectsTable(tdxHandleToObjectsTablesList h_ObjectsTablesListElement
|
|
,unsigned short wNumberInTable)
|
|
{
|
|
return(&(h_ObjectsTablesListElement->d_stObjectsTable[wNumberInTable]));
|
|
}
|
|
|
|
|
|
/* *** TypeOfTarget*/
|
|
unsigned short fn_wObjectsTableGetTypeOfTarget(tdxHandleToObjectsTableElement h_ObjectsTablesElement)
|
|
{
|
|
return(h_ObjectsTablesElement->wTypeOfTarget);
|
|
}
|
|
|
|
void fn_vObjectsTableSetTypeOfTarget(tdxHandleToObjectsTableElement h_ObjectsTablesElement
|
|
,unsigned short wTypeOfTarget)
|
|
{
|
|
h_ObjectsTablesElement->wTypeOfTarget = wTypeOfTarget;
|
|
}
|
|
|
|
/* *** h_Target*/
|
|
tdxHandleToVoid fn_hObjectsTableGetTarget(tdxHandleToObjectsTableElement h_ObjectsTablesElement)
|
|
{
|
|
return(h_ObjectsTablesElement->h_Target);
|
|
}
|
|
|
|
void fn_vObjectsTableSetTarget(tdxHandleToObjectsTableElement h_ObjectsTablesElement
|
|
,tdxHandleToVoid h_Target)
|
|
{
|
|
h_ObjectsTablesElement->h_Target = h_Target;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/*
|
|
// MR0707
|
|
void fn_vSetObjectTableListDuplicate(tdxHandleToObjectsTablesList hObjTableList,BOOL bDuplicate)
|
|
{
|
|
hObjTableList->bDuplicateTable=bDuplicate;
|
|
}
|
|
|
|
BOOL fn_bGetObjectTableListDuplicate(tdxHandleToObjectsTablesList hObjTableList)
|
|
{
|
|
return hObjTableList->bDuplicateTable;
|
|
}
|
|
// End MR0707
|
|
*/
|
|
|
|
/* ANNECY AV {*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
ACP_tdxBool fn_bObjectTableHasZdd (tdxHandleToObjectsTablesList _hObjectTableList)
|
|
{
|
|
return (ACP_tdxBool) ((_hObjectTableList -> wZDxUsed & C_wObjectTableHasZdd) != 0);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
ACP_tdxBool fn_bObjectTableHasZde (tdxHandleToObjectsTablesList _hObjectTableList)
|
|
{
|
|
return (ACP_tdxBool) ((_hObjectTableList -> wZDxUsed & C_wObjectTableHasZde) != 0);
|
|
}
|
|
/* END ANNECY AV }*/
|