/*========================================================================= * TBLLoad.c : Loading TBL Files * * Version 1.0 * Creation date 29/05/97 * Revision date * * That file needs to be compatible for all platforms. * * (c) Ubi Studios 1997 *=======================================================================*/ #if defined (WIN32) #include #endif /* WIN32 */ /* to be Friend*/ #define D_ObjsTbls_Define #define D_State_Define #include "ToolsCPA.h" #include "Sna.h" #include "Options/Options.h" #include "Macros.h" #include "Actions/AllActs.h" #include "Structur/3DOSLkTb.h" #include "Structur/Objects.h" #include "Structur/ErrGame.h" #include "Structur/GameScpt.h" #include "Structur/MemGame.h" #include "Structur/StdObjSt.h" #include "Structur/EngMode.h" #include "ObjType.h" #include "Basic.h" #include "Family.h" #include "ZeMem.h" #include "Structur/ObjsTbls.h" #include "TBLLoad.h" #include "Structur/anim_s.h" extern SCR_tdst_Link_Table CHL_g_stLinkTable; /* global for TBL Link Table*/ SCR_tdst_Link_Table TBL_g_stLinkTable; #define MAX_TBL_SIZE 64*1024 /*----------------------------------------------------------------------------- * Description : initialize and close link table for TBL *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * Creation date : 29/05/97 Author : Sebastien DAVID (Gïzmo) *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ SCR_tdst_Link_Table *TBL_fn_p_stGetLinkTable(void) { return(&TBL_g_stLinkTable); } void TBL_fn_vInitLinkTable(void) { SCR_fn_v_Link_InitTable(&TBL_g_stLinkTable); } void TBL_fn_vCloseLinkTable(void) { SCR_fn_v_Link_CloseTable(&TBL_g_stLinkTable); } /* void TBL_fn_vDeleteLinkTable(unsigned char ucMin,unsigned char ucMax) { SCR_fn_v_Link_DeleteEntryWithPriority(&TBL_g_stLinkTable,ucMin,ucMax); } */ /*----------------------------------------------------------------------------- * Description : Used to register all script callback functions *----------------------------------------------------------------------------- * Creation date : 29/05/97 Author : Sebastien DAVID (Gïzmo) *-----------------------------------------------------------------------------*/ void TBL_fn_vRegisterAllScriptSections(void) { SCR_fn_v_RdL0_RegisterCallback(C_Section_TBLHeader, TBL_fn_eScriptCallBackHeader,SCR_CRC_c_RdL0_ForSection); SCR_fn_v_RdL0_RegisterCallback(C_Section_TBLGeneral, TBL_fn_eScriptCallBackGeneral,SCR_CRC_c_RdL0_ForSection); SCR_fn_v_RdL0_RegisterCallback(C_Section_EVTGeneral,TBL_fn_eScriptCallBackEvent,SCR_CRC_c_RdL0_ForSection); /*BEGIN OS 23-Mar-98*/ /* SCR_fn_v_RdL0_RegisterCallback(C_Section_TBLHeader, TBL_fn_eScriptCallBackBinHeader,SCR_CRC_c_RdL0_ForBinSection); SCR_fn_v_RdL0_RegisterCallback(C_Section_TBLGeneral, TBL_fn_eScriptCallBackBinGeneral,SCR_CRC_c_RdL0_ForBinSection); */ /*END OS 23-Mar-98*/ } /*----------------------------------------------------------------------------- * Description : call-back for header section of TBL script file *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * Creation date : 29/05/97 Author : Sebastien DAVID (Gïzmo) *-----------------------------------------------------------------------------*/ SCR_tde_Anl_ReturnValue TBL_fn_eScriptCallBackHeader(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; /*char sz_LongPathForLinkTable[MAX_PATH];*/ tdxHandleToObjectsTablesList h_ObjectsTablesListElement; if ( M_IsEntry ) { if ( M_ActionIs( C_Entry_FileVersion ) ) { /* not used yet*/ /*gs_wTBLFileVersion = (short)fn_lAToI( _ap_szParams[0] );*/ } else if ( M_ActionIs( C_Entry_MaximumIndex ) ) { MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLList , 0 ); h_ObjectsTablesListElement = fn_hObjectsTablesListAlloc(); SCR_M_RdL0_SetSectionLong(C_ThisSection,0,h_ObjectsTablesListElement); SCR_M_RdL0_SetSectionLong(C_ParentSection,0,h_ObjectsTablesListElement); SCR_M_RdL0_SetContextLong(C_ParentContext,1,0); /* flag Duplicate*/ MMG_fn_vBeginMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLElement , h_ObjectsTablesListElement ); fn_vObjectsTablesAlloc(h_ObjectsTablesListElement,(unsigned short)fn_lAToI(_ap_szParams[0])); MMG_fn_vEndMemoryInfo(); SCR_fnp_st_Link_SetValue(&TBL_g_stLinkTable, SCR_M_RdL0_GetOpenFileNameR(0), (unsigned long)h_ObjectsTablesListElement); /* ANNECY AV {*/ h_ObjectsTablesListElement -> wZDxUsed = 0; /* For the moment, no Zdd and no Zde*/ /* END ANNECY AV }*/ } /* MR0707*/ else if ( M_ActionIs( C_Entry_Duplicate ) ) { SCR_M_RdL0_SetContextLong(C_ParentContext,1,1); /* flag Duplicate*/ } } return ( eReturnValue ); } /*----------------------------------------------------------------------------- * Description : call-back for general section of TBL script file *----------------------------------------------------------------------------- *----------------------------------------------------------------------------- * Creation date : 29/05/97 Author : Sebastien DAVID (Gïzmo) *-----------------------------------------------------------------------------*/ SCR_tde_Anl_ReturnValue TBL_fn_eScriptCallBackGeneral(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; /*SCR_tdst_Cxt_Values *p_stVal;*/ tdxHandleToObjectsTablesList h_ObjectsTablesListElement; long l_NumberInTable; /*char s[80];*/ if ( M_IsTitle ) { // Shaitan => module list in the level tdxHandleToFamilyList hFamily; SCR_M_RdL0_GetContextLong(C_ThisContext,1,tdxHandleToFamilyList,hFamily); if (!hFamily) { char szFamilyName[SCR_CV_ui_Cfg_MaxLenName]; char *p_szFamilyName; tdObjectType otFamily; strcpy(szFamilyName,SCR_M_RdL0_GetFileNameR(0)); p_szFamilyName = strchr(szFamilyName, '\\'); strcpy(p_szFamilyName, ""); p_szFamilyName = strchr(szFamilyName, '\\'); if (p_szFamilyName) strcpy(szFamilyName, p_szFamilyName); otFamily = fn_otFindOrAddFamilyTypeOfFamilyTypeName(szFamilyName); hFamily = fn_hFindOrAddFAmily(otFamily); SCR_M_RdL0_SetContextLong(C_ThisContext,1,hFamily); } // End Shaitan => module list in the level SCR_M_RdL0_SetContextLong(C_ThisContext,0,fn_lAToI(_p_szName)); /* strcpy(s,SCR_M_RdL0_GetCompleteSectionNameR(0)); strcat(s,"\n"); OutputDebugString(s); */ } else if ( M_IsEntry ) { // Shaitan => module list in the level tdxHandleToFamilyList hFamily; SCR_M_RdL0_GetContextLong(C_ThisContext,1,tdxHandleToFamilyList,hFamily); // End Shaitan => module list in the level SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); SCR_M_RdL0_GetContextLong(C_ThisContext,0,long,l_NumberInTable); if ( M_ActionIs( C_Entry_PHY ) ) { /* ANNECY AV {*/ PO_tdxHandleToPhysicalObject hPO; // Shaitan => module list in the level if (hFamily && hFamily->ucOptimized) h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = hPO = CS_fn_xFindPhysicalObject(_ap_szParams[0]); else h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = hPO = CS_fn_xLoadPhysicalObject(_ap_szParams[0]); if (hPO) { h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_PhysicalObject; if (PO_fn_hGetCollideSet (hPO)) { if (PCS_fn_hGetGeoObjOfPhysicalCollSet (C_ucTypeZdd , PO_fn_hGetCollideSet (hPO))) h_ObjectsTablesListElement->wZDxUsed |= C_wObjectTableHasZdd; if (PCS_fn_hGetGeoObjOfPhysicalCollSet (C_ucTypeZde , PO_fn_hGetCollideSet (hPO))) h_ObjectsTablesListElement->wZDxUsed |= C_wObjectTableHasZde; } } else h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_Undefined; /* h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_PhysicalObject; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = hPO = CS_fn_xLoadPhysicalObject(_ap_szParams[0]); if (PO_fn_hGetCollideSet (hPO)) { if (PCS_fn_hGetGeoObjOfPhysicalCollSet (C_ucTypeZdd , PO_fn_hGetCollideSet (hPO))) h_ObjectsTablesListElement->wZDxUsed |= C_wObjectTableHasZdd; if (PCS_fn_hGetGeoObjOfPhysicalCollSet (C_ucTypeZde , PO_fn_hGetCollideSet (hPO))) h_ObjectsTablesListElement->wZDxUsed |= C_wObjectTableHasZde; } */ // End Shaitan => module list in the level /* END ANNECY AV }*/ /*AR980820*/ /* p_stVal = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_PhysicalObject; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = (tdxHandleToVoid) SCR_M_ul_RdL0_ExtractLongValue(p_stVal,0); */ /* MR3006*/ h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=255; /* End MR3006*/ h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom=NULL; #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } if ( M_ActionIs( C_Entry_MIRROR ) ) { // Shaitan => module list in the level tdxHandleToFamilyList hFamily; SCR_M_RdL0_GetContextLong(C_ThisContext,1,tdxHandleToFamilyList,hFamily); if (hFamily && hFamily->ucOptimized) h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = CS_fn_xFindPhysicalObject(_ap_szParams[0]); else h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = CS_fn_xLoadPhysicalObject(_ap_szParams[0]); if (h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target) h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_PhysicalObject; else h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_Undefined; /* h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_Mirror; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = CS_fn_xLoadPhysicalObject(_ap_szParams[0]); */ // End Shaitan => module list in the level /* MR3006*/ h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=255; /* End MR3006*/ h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom=NULL; #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } else if ( M_ActionIs( C_Entry_LipsSynchro ) ) { /* MR1508*/ /*h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=(unsigned short)(atoi(_ap_szParams[0])-1);*/ MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLElement , h_ObjectsTablesListElement ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=(unsigned long)TMP_M_p_Malloc(strlen(_ap_szParams[0])+1); strcpy((char *)h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber,_ap_szParams[0]); /* End MR1508*/ h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=(unsigned char)(_ap_szParams[1][0]-'A'); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=(unsigned char)atoi(_ap_szParams[2]); if (!stricmp("Neutral",_ap_szParams[3])) h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=0; /* End MR2706*/ #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } else if ( M_ActionIs( C_Entry_CustomZoom ) ) { float f0,f4,f8; f0 = fn_fAToF(_ap_szParams[0]); f4 = fn_fAToF(_ap_szParams[4]); f8 = fn_fAToF(_ap_szParams[8]); if( f0!=1.0f || f4!=1.0f || f8!=1.0f ) { MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLElement , h_ObjectsTablesListElement ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom = (MTH3D_tdstVector *)M_p_GameMallocInHLM(sizeof(struct MTH3D_tdstVector_)); MTH3D_M_vSetVectorElements(h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom,f0,f4,f8); } } } else if( M_IsEnd ) { long l_FlagDuplicate; SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); SCR_M_RdL0_GetContextLong(C_ParentContext,1,long,l_FlagDuplicate); if(l_FlagDuplicate) fn_vDuplicateObjectTable(h_ObjectsTablesListElement); } return ( eReturnValue ); } /*----------------------------------------------------------------------------- * Description : Create an event pointed in TBL (V6 format) *----------------------------------------------------------------------------- * Input : * Output : pointer to the event *----------------------------------------------------------------------------- * Creation date : Jan 98 Author : Alain Robin *---------------------------------------------------------------------------*/ struct tdstEventInTable_* GAM_fn_p_stCreateEventInTBL() { struct tdstEventInTable_* p_stEvent; p_stEvent=(struct tdstEventInTable_*)M_p_GameMallocInHLM(sizeof(struct tdstEventInTable_)); p_stEvent->p_xEvent=0; /* p_stEvent->ulBinaryEventId=SND_INVALID_BINID;*/ return p_stEvent; } /*----------------------------------------------------------------------------- * Description : Script callback for the V6 events *----------------------------------------------------------------------------- * Input : script inputs * Output : script outputs *----------------------------------------------------------------------------- * Creation date : Jan 98 Author : Alain Robin *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ SCR_tde_Anl_ReturnValue TBL_fn_eScriptCallBackEvent(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; tdxHandleToObjectsTablesList h_ObjectsTablesListElement; long l_NumberInTable; if ( M_IsTitle ) { l_NumberInTable=fn_lAToI(_p_szName); SCR_M_RdL0_SetContextLong(C_ThisContext,0,l_NumberInTable); SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget=C_wTdO_Event; MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeTBLEvent , h_ObjectsTablesListElement ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target=(void*)GAM_fn_p_stCreateEventInTBL(); } else if ( M_IsEntry ) { tdstEventInTable* p_stEvent; SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); SCR_M_RdL0_GetContextLong(C_ThisContext,0,long,l_NumberInTable); p_stEvent=(tdstEventInTable*)h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target; if ( M_ActionIs( C_Entry_ObjectType ) ) /* Type of the event*/ { if (!stricmp("GenericEvent",_ap_szParams[0])) { p_stEvent->ucTypeOfEvent=C_ucGENERIC_EVENT; } else if(!stricmp("MechanicEvent",_ap_szParams[0])) { p_stEvent->ucTypeOfEvent=C_ucMECHANIC_EVENT; } else if(!stricmp("SoundEvent",_ap_szParams[0])) { p_stEvent->ucTypeOfEvent=C_ucSOUND_EVENT; } else if(!stricmp("GenerateEvent",_ap_szParams[0])) { p_stEvent->ucTypeOfEvent=C_ucGENERATE_EVENT; } } else if ( M_ActionIs( C_Entry_GenericEvent ) ) /* Type of generic event*/ { long lEvent; lEvent=(long)p_stEvent->p_xEvent; if (!strcmp(_ap_szParams[0],"TakeObjectEvent")) { lEvent|=C_ucTAKE_OBJECT_EVENT; } else if (!strcmp(_ap_szParams[0],"TakeInObjectEvent")) { lEvent|=C_ucTAKE_IN_OBJECT_EVENT; } else if (!strcmp(_ap_szParams[0],"TakeOutObjectEvent")) { lEvent|=C_ucTAKE_OUT_OBJECT_EVENT; } else if (!strcmp(_ap_szParams[0],"DropObjectEvent")) { lEvent|=C_ucDROP_OBJECT_EVENT; } else if (!strcmp(_ap_szParams[0],"ThrowObjectEvent")) { lEvent|=C_ucTHROW_OBJECT_EVENT; } else if ( (strncmp( _ap_szParams[0],"User", 4 ) == 0) && (_ap_szParams[0][5] == 0) ) { unsigned char ucUserEvent; ucUserEvent = (unsigned char) (_ap_szParams[0][4] - '0'); if (ucUserEvent < 8) lEvent |= (unsigned char) (C_ucEvent_User0 + ucUserEvent); } p_stEvent->p_xEvent=(void*)lEvent; } /* else if ( M_ActionIs( C_Entry_MechanicEvent ) ) // Type of mechanic event { if (!strcmp(_ap_szParams[0],"TurnUp")) p_stEvent->p_xEvent = (void *)LRM_eRequest_TurnUp; else if (!strcmp(_ap_szParams[0],"TurnDown")) p_stEvent->p_xEvent = (void *)LRM_eRequest_TurnDown; else if (!strcmp(_ap_szParams[0],"TurnLeft")) p_stEvent->p_xEvent = (void *)LRM_eRequest_TurnLeft; else if (!strcmp(_ap_szParams[0],"JumpAbsolute")) p_stEvent->p_xEvent = (void *)LRM_eRequest_JumpAbsolute; else if (!strcmp(_ap_szParams[0],"JumpWithoutAddingSpeed")) p_stEvent->p_xEvent = (void *)LRM_eRequest_JumpWithoutAddingSpeed; else if (!strcmp(_ap_szParams[0],"TurnAbsolute")) p_stEvent->p_xEvent = (void *)LRM_eRequest_TurnAbsolute; else if (!strcmp(_ap_szParams[0],"Jump")) p_stEvent->p_xEvent = (void *)LRM_eRequest_Jump; else if (!strcmp(_ap_szParams[0],"Accelerate")) p_stEvent->p_xEvent = (void *)LRM_eRequest_Accelerate; else if (!strcmp(_ap_szParams[0],"Pulse")) p_stEvent->p_xEvent = (void *)LRM_eRequest_Pulse; else if (!strcmp(_ap_szParams[0],"Brake")) p_stEvent->p_xEvent = (void *)LRM_eRequest_Brake; else if (!strcmp(_ap_szParams[0],"GoRelative")) p_stEvent->p_xEvent = (void *)LRM_eRequest_GoRelative; else if (!strcmp(_ap_szParams[0],"GoAbsolute")) p_stEvent->p_xEvent = (void *)LRM_eRequest_GoAbsolute; }*/ else if ( M_ActionIs( C_Entry_SoundEvent ) ) /* Sound event -> analyse the event section*/ { SCR_tdst_Cxt_Values* p_stValue; p_stValue=SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal); p_stEvent->p_xEvent=(void*)SCR_M_ul_RdL0_ExtractLongValue(p_stValue, 0); p_stEvent->ulBinaryEventId=SCR_M_ul_RdL0_ExtractLongValue(p_stValue, 1); /* used for the binarisation only*/ /* we save the id of the sound event and the pointer on the structure that contains the id and the pointer of the sound event */ SNA_fn_vWriteSoundEntryInSoundTableFile(SND_fn_ulGetEventBinIdFromPointer(p_stEvent->p_xEvent),(unsigned long)p_stEvent); p_stEvent->ulBinaryEventId=SND_fn_ulGetEventBinIdFromPointer(p_stEvent->p_xEvent); } else if ( M_ActionIs( C_Entry_FirstCall ) ) { p_stEvent->ucFirstCall=(unsigned char)fn_lAToI(_ap_szParams[0]); } else if ( M_ActionIs( C_Entry_Period ) ) { p_stEvent->ucPeriod=(unsigned char)fn_lAToI(_ap_szParams[0]); } else if ( M_ActionIs( C_Entry_Priority ) ) { p_stEvent->ucPriority=(unsigned char)fn_lAToI(_ap_szParams[0]); } } else if( M_IsEnd ) { } return ( eReturnValue ); } /**************************** Binarisation functions ****************************/ /* BEGIN OS 02.03.98 Callbacks for bin files. */ /*----------------------------------------------------------------------------- * Description : call-back for header section of TBL script file *-----------------------------------------------------------------------------*/ /* SCR_tde_Anl_ReturnValue TBL_fn_eScriptCallBackBinHeader(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; tdxHandleToObjectsTablesList h_ObjectsTablesListElement; char chTag; if( _eAction != SCR_EA_Anl_BeginSection ) { // do whatever ... return SCR_ERV_Anl_NormalReturn; } SCR_fn_v_Bin_BeginSection(_p_stFile); do{ chTag=SCR_fn_ch_Bin_GetCHAR( _p_stFile ); switch (chTag) { case 0: //VersionNumber { SCR_fn_s_Bin_GetSHORT( _p_stFile ); } break; case 1: //MaximumIndex { //MaximumIndex h_ObjectsTablesListElement = fn_hObjectsTablesListAlloc(); SCR_M_RdL0_SetSectionLong(C_ThisSection,0,h_ObjectsTablesListElement); SCR_M_RdL0_SetSectionLong(C_ParentSection,0,h_ObjectsTablesListElement); SCR_M_RdL0_SetContextLong(C_ParentContext,1,0); // flag Duplicate fn_vObjectsTablesAlloc(h_ObjectsTablesListElement, SCR_fn_us_Bin_GetUSHORT( _p_stFile ) ); SCR_fnp_st_Link_SetValue(&TBL_g_stLinkTable, SCR_M_RdL0_GetOpenFileNameR(0), (unsigned long)h_ObjectsTablesListElement); } break; case 2: //Duplicate { SCR_M_RdL0_SetContextLong(C_ParentContext,1,1); // flag Duplicate } break; } }while (chTag!=-1); SCR_fn_v_Bin_EndSection(_p_stFile); return ( eReturnValue ); } */ /*----------------------------------------------------------------------------- * Description : call-back for general section of TBL script file *-----------------------------------------------------------------------------*/ /* SCR_tde_Anl_ReturnValue TBL_fn_eScriptCallBackBinGeneral(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; //SCR_tdst_Cxt_Values *p_stVal; tdxHandleToObjectsTablesList h_ObjectsTablesListElement; long l_NumberInTable; char chTag; if( _eAction != SCR_EA_Anl_BeginSection ) { // do whatever ... return SCR_ERV_Anl_NormalReturn; } SCR_fn_v_Bin_BeginSection(_p_stFile); SCR_M_RdL0_SetContextLong(C_ThisContext,0,fn_lAToI(_p_szName)); do{ SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); SCR_M_RdL0_GetContextLong(C_ThisContext,0,long,l_NumberInTable); chTag=SCR_fn_ch_Bin_GetCHAR( _p_stFile ); switch (chTag) { case 0: //PHY { char szP0[MAX_PATH]; SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_PhysicalObject; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = CS_fn_xLoadBinPhysicalObject(szP0); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom=NULL; #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } break; case 1: //MIRROR { char szP0[MAX_PATH]; SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wTypeOfTarget = C_wTdO_Mirror; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].h_Target = CS_fn_xLoadBinPhysicalObject(szP0); // MR3006 h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=255; h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=255; // End MR3006 h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom=NULL; #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } break; case 2: //LipsSynchro { char szP0[MAX_PATH]; SCR_fn_sz_Bin_GetSTRING2Buffer( _p_stFile, szP0 ); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber=(unsigned long)TMP_M_p_Malloc(strlen(szP0)+1); strcpy((char *)h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].uwChannelNumber, szP0); // End MR1508 h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucPhoneme=(unsigned char)(SCR_fn_uch_Bin_GetUCHAR( _p_stFile )-'A'); h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucIntensity=SCR_fn_uch_Bin_GetUCHAR( _p_stFile ); SCR_fn_sz_Bin_GetSTRING2Buffer( _p_stFile, szP0 ); if (!stricmp("Neutral", szP0)) h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].ucExpression=0; // End MR2706 #ifdef _DEBUG h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].wCounter=0; #endif } break; case 3: //CustomZoom { float f0,f4,f8; f0 = SCR_fn_f_Bin_GetFLOAT( _p_stFile ); f4 = SCR_fn_f_Bin_GetFLOAT( _p_stFile ); f8 = SCR_fn_f_Bin_GetFLOAT( _p_stFile ); if( f0!=1.0f || f4!=1.0f || f8!=1.0f ) { h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom = (MTH3D_tdstVector *)M_p_GameMallocInHLM(sizeof(struct MTH3D_tdstVector_)); MTH3D_M_vSetVectorElements(h_ObjectsTablesListElement->d_stObjectsTable[l_NumberInTable-1].p_stCustomZoom,f0,f4,f8); } } break; } }while (chTag!=-1); // end section { long l_FlagDuplicate; SCR_M_RdL0_GetSectionLong(C_ParentSection,0,tdxHandleToObjectsTablesList,h_ObjectsTablesListElement); SCR_M_RdL0_GetContextLong(C_ParentContext,1,long,l_FlagDuplicate); if(l_FlagDuplicate) fn_vDuplicateObjectTable(h_ObjectsTablesListElement); } SCR_fn_v_Bin_EndSection(_p_stFile); return ( eReturnValue ); } */ /* END OS 02.03.98 Callbacks for bin files. */