148 lines
5.7 KiB
C
148 lines
5.7 KiB
C
#define D_MainChar_StructureDefine
|
||
/*----------------------------------------------------------------------
|
||
* Includes
|
||
*--------------------------------------------------------------------*/
|
||
|
||
#include "ToolsCPA.h"
|
||
|
||
#include "macros.h"
|
||
#include "GameEng.h"
|
||
|
||
#include "Actions/AllActs.h"
|
||
|
||
#include "Structur/GameScpt.h"
|
||
#include "Structur/ErrGame.h"
|
||
#include "Structur/MemGame.h"
|
||
#include "Structur/StdObjSt.h"
|
||
#include "Structur/EngMode.h"
|
||
#include "Structur/Objects.h"
|
||
|
||
#include "MainChar.h"
|
||
#include "Zemem.h"
|
||
/*----------------------------------------------------------------------
|
||
* Functions
|
||
*--------------------------------------------------------------------*/
|
||
MC_tdxHandleToMainCharacterNode MC_fn_hCreateMainCharacterNode()
|
||
{
|
||
tdstNodeMainCharacter * p_stMainCharNode;
|
||
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeGAM , MMG_C_lSubTypeMainChar , 0);
|
||
p_stMainCharNode=(tdstNodeMainCharacter *)M_p_GameMallocInHLM(sizeof(tdstNodeMainCharacter));
|
||
LST2_M_DynamicInitElement(p_stMainCharNode);
|
||
|
||
/* O.D.*/
|
||
MC_fn_vSetNewMainCharacter((MC_tdxHandleToMainCharacterNode)p_stMainCharNode, (HIE_tdxHandleToSuperObject)NULL);
|
||
|
||
return( (MC_tdxHandleToMainCharacterNode)p_stMainCharNode );
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
|
||
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
||
void MC_fn_vFreeMainCharacterNode(MC_tdxHandleToMainCharacterNode hMainCharNode)
|
||
{
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeGAM , MMG_C_lSubTypeMainChar , 0);
|
||
M_GameFreeInHLM((tdstNodeMainCharacter *)hMainCharNode);
|
||
}
|
||
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
||
|
||
/*--------------------------------------------------------------------*/
|
||
void MC_fn_vAddCharacterInMainCharacterList(HIE_tdxHandleToSuperObject hCharacter)
|
||
{
|
||
MC_tdxHandleToMainCharacterNode hMainCharNode;
|
||
|
||
hMainCharNode=MC_fn_hCreateMainCharacterNode();
|
||
MC_fn_vSetCharacterInMainCharacterNode(hMainCharNode,hCharacter);
|
||
LST2_M_DynamicAddTail(&g_stEngineStructure.hMainCharacterList,hMainCharNode);
|
||
SAI_fn_bInsertPointerInTable(&hMainCharNode->hCharacter,SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded);
|
||
/**** DFM : Tant que le block ACP merde, il ne faut pas vers de r<>f<EFBFBD>rence dans SAI ****/
|
||
/* SAI_fn_bInsertPointerInTable(&hMainCharNode->hCharacter,SAI_ePlayerSaveCurrentValue);*/
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
|
||
#ifndef _FIRE_DEADCODE_U64_
|
||
|
||
void MC_fn_vRemoveCharacterinMainCharacterList(HIE_tdxHandleToSuperObject hCharacter)
|
||
{
|
||
unsigned short uwI;
|
||
MC_tdxHandleToMainCharacterNode hMainCharNode = NULL,hMainCharGoodNode = NULL;
|
||
|
||
LST2_M_DynamicForEachElementOf(&g_stEngineStructure.hMainCharacterList,hMainCharNode,uwI)
|
||
{
|
||
if( MC_fn_hGetCharacterInMainCharacterNode(hMainCharNode)==hCharacter )
|
||
hMainCharGoodNode=hMainCharNode;
|
||
}
|
||
SAI_fn_bRemoveValueFromTable(&hMainCharNode->hCharacter,SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded);
|
||
/* SAI_fn_bRemoveValueFromTable(&hMainCharNode->hCharacter,SAI_ePlayerSaveCurrentValue);*/
|
||
|
||
LST2_M_DynamicIsolate(hMainCharGoodNode);
|
||
MC_fn_vFreeMainCharacterNode( hMainCharGoodNode );
|
||
}
|
||
|
||
|
||
/*--------------------------------------------------------------------*/
|
||
unsigned char MC_fn_ucIsCharacterInMainCharacterList(HIE_tdxHandleToSuperObject hCharacter)
|
||
{
|
||
unsigned short uwI;
|
||
MC_tdxHandleToMainCharacterNode hMainCharNode;
|
||
|
||
LST2_M_DynamicForEachElementOf(&g_stEngineStructure.hMainCharacterList,hMainCharNode,uwI)
|
||
{
|
||
if( MC_fn_hGetCharacterInMainCharacterNode(hMainCharNode)==hCharacter )
|
||
return(TRUE);
|
||
}
|
||
return(FALSE);
|
||
}
|
||
|
||
#endif /* _FIRE_DEADCODE_U64_ */
|
||
|
||
/*--------------------------------------------------------------------*/
|
||
void MC_fn_vSetCharacterInMainCharacterNode(MC_tdxHandleToMainCharacterNode hMainCharNode,HIE_tdxHandleToSuperObject hCharacter)
|
||
{
|
||
((tdstNodeMainCharacter *)hMainCharNode)->hCharacter=hCharacter;
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
HIE_tdxHandleToSuperObject MC_fn_hGetCharacterInMainCharacterNode(MC_tdxHandleToMainCharacterNode hMainCharNode)
|
||
{
|
||
return( ((tdstNodeMainCharacter *)hMainCharNode)->hCharacter );
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
MC_tdxHandleToMainCharacterNode MC_fn_hGetFirstMainCharNode()
|
||
{
|
||
return( LST2_M_DynamicGetFirstElement(&g_stEngineStructure.hMainCharacterList) );
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
|
||
|
||
|
||
MC_tdxHandleToMainCharacterNode MC_fn_hGetNextMainCharNode(MC_tdxHandleToMainCharacterNode hMainCharNode)
|
||
{
|
||
return( LST2_M_DynamicGetNextElement(hMainCharNode) );
|
||
}
|
||
/*--------------------------------------------------------------------*/
|
||
#ifndef _FIRE_DEADCODE_U64_
|
||
void MC_fn_vCopyStruct_MainCharNode(MC_tdxHandleToMainCharacterNode hDest,MC_tdxHandleToMainCharacterNode hSrc)
|
||
{
|
||
MC_fn_vSetCharacterInMainCharacterNode(hDest,MC_fn_hGetCharacterInMainCharacterNode(hSrc));
|
||
}
|
||
|
||
#endif /* _FIRE_DEADCODE_U64_ */
|
||
|
||
/*--------------------------------------------------------------------*/
|
||
|
||
/* O.D. 15/8/97*/
|
||
/*--------------------------------------------------------------------------
|
||
* Functions to modify the MainCharacter.
|
||
* The Engine can modify the MainCharacter only on the beginning of a frame.
|
||
*--------------------------------------------------------------------------*/
|
||
void MC_fn_vSetNewMainCharacter(MC_tdxHandleToMainCharacterNode hMainCharNode,HIE_tdxHandleToSuperObject hCharacter)
|
||
{
|
||
((tdstNodeMainCharacter *)hMainCharNode)->hNewCharacterForTheNextFrame = hCharacter;
|
||
}
|
||
|
||
HIE_tdxHandleToSuperObject MC_fn_hGetNewMainCharacter(MC_tdxHandleToMainCharacterNode hMainCharNode)
|
||
{
|
||
return (((tdstNodeMainCharacter *)hMainCharNode)->hNewCharacterForTheNextFrame);
|
||
}
|
||
|
||
#undef D_MainChar_StructureDefine
|