832 lines
30 KiB
C
832 lines
30 KiB
C
|
|
#include "ToolsCPA.h"
|
|
|
|
#include "Options/Options.h"
|
|
#include "macros.h"
|
|
|
|
#include "Main.h"
|
|
|
|
#include "Actions/AllActs.h"
|
|
|
|
#include "Structur/GameScpt.h"
|
|
#include "Structur/ErrGame.h"
|
|
#include "Structur/Objects.h"
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/EngMode.h"
|
|
#include "Structur/Input_s.h"
|
|
|
|
#include "Engine.h"
|
|
#include "ZeMem.h"
|
|
#include "LoadGame.h"
|
|
#include "Input.h"
|
|
#include "Basic.h"
|
|
#include "GamOpt.h"
|
|
#include "LoadBin.h"
|
|
|
|
#include "sna.h"
|
|
|
|
#ifndef U64
|
|
extern char g_cCDROM;
|
|
extern int g_iComplete;
|
|
#endif
|
|
extern char g_sLanguage[255];
|
|
|
|
|
|
#define LDT_SCR_HYBRID_VERSION /* this is for script/ldt interfacing*/
|
|
|
|
/* MLT CC BEGIN 9/23/98 */
|
|
#ifdef CPA_USES_LDT
|
|
#include "ldt.h"
|
|
|
|
/*BEGIN FS 8/27/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: Callback for DirectoriesDescription section from .dsc sript file
|
|
* This section describs the directories scripts
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:8/27/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadDirectoriesDescription( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char szFileName[_MAX_PATH];
|
|
char szPath[_MAX_PATH];
|
|
static char szInventorDirectory[_MAX_PATH];
|
|
char a256_cDataDirectory[_MAX_PATH];
|
|
char *szEntryName;
|
|
|
|
/*Working for BeginSection*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_DirectoryDescTitle );
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName+ 11 /*"DirectoryOf"*/))
|
|
{
|
|
case 'ignE': /*"EngineDLL"*/
|
|
fn_vSetEngineDLLPath(LDT_szGetParam(1));
|
|
if (SNA_M_bTestSaveGameDesc())
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfEngineDLL,LDT_szGetParam(1));
|
|
break;
|
|
case 'emaG': /*"GameData"*/
|
|
/* MLT CC BEGIN 10/6/98 */
|
|
/* if(g_iComplete)*/
|
|
/* {*/
|
|
LDT_AddBaseDirectory(LDT_szGetParam(1));
|
|
LDT_AddBaseDirectory(gsz_Version);
|
|
LDT_AddBaseDirectory(gsz_Version1);
|
|
/* }*/
|
|
if(!g_iComplete)
|
|
{
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,LDT_szGetParam(1));
|
|
LDT_AddBaseDirectory(szPath);
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,gsz_Version);
|
|
LDT_AddBaseDirectory(szPath);
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,gsz_Version1);
|
|
LDT_AddBaseDirectory(szPath);
|
|
}
|
|
LDT_RegisterPath("", "DSC FIX PGB MEM TXT RND");
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(LDT_szGetParam(1));
|
|
#endif
|
|
/* MLT CC END 10/6/98 */
|
|
if (SNA_M_bTestSaveGameDesc())
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfGameData,LDT_szGetParam(1));
|
|
break;
|
|
case 'txeT':
|
|
if ((*(long*)(szEntryName+12 /*"DirectoryOfT"*/))=='stxe')
|
|
{ /*"Texts"*/
|
|
/* MLT CC BEGIN 10/6/98 */
|
|
LDT_RegisterPath(LDT_szGetParam(1), "TXT");
|
|
sprintf(szPath,"%s\\%s",LDT_szGetParam(1),g_sLanguage);
|
|
LDT_RegisterPath(szPath, "TXT");
|
|
/* MLT CC END 10/6/98 */
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetTextsDataPath(a256_cDataDirectory);
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
|
|
sprintf(szPath,"%s\\%s",a256_cDataDirectory,g_sLanguage);
|
|
/*SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);*/
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfTexts,LDT_szGetParam(1));
|
|
}
|
|
else
|
|
{ /*"Texture"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetTexturesDataPath(a256_cDataDirectory);
|
|
GLI_vSetPathOfTexture(fn_szGetTexturesDataPath());
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfTexture,LDT_szGetParam(1));
|
|
}
|
|
break;
|
|
case 'lroW': /*"World"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetWorldDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfWorld,LDT_szGetParam(1));
|
|
break;
|
|
case 'eveL': /*"Levels"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"ALW CAR DSC GMT IPO LGT LVL MDF MEM MOD PGB PHY RLI SCT SPO SRF TEX VMT VSE WAY WP ZDX ZOO MDT");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetLevelsDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfLevels,LDT_szGetParam(1));
|
|
break;
|
|
case 'imaF': /*"Families"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"ACE ACZ AI BDV CAR CHL DEC EDE EMA EMC ENL ERF ERU ESB GMT LGT MAC MOD PHY RFX RUL STA TEX TBL VMT VSE ZDX ZOO");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetFamiliesDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfFamilies,LDT_szGetParam(1));
|
|
break;
|
|
case 'rahC': /*"Characters"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"CAR");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetCharactersDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfCharacters,LDT_szGetParam(1));
|
|
break;
|
|
case 'minA': /*"Animations"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"A3D A3B");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetAnimDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfAnimations,LDT_szGetParam(1));
|
|
break;
|
|
case 'parG':
|
|
if ((*(long*)(szEntryName+19/*"DirectoryOfGraphics"*/))=='salC')
|
|
{ /*"GraphicsClasses"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"GMT MOD PHY TBL TEX VMT VSE ZOO");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetGraphicsClassesDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfGraphicsClasses,LDT_szGetParam(1));
|
|
}
|
|
else
|
|
{ /*"GraphicsBanks"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"AI ACE ACZ BDV CHL DEC EDE EMA EMO EMC ENL ERF ERU ESB GMT MAC MOD PHY RFX RLI RUL SPO STA TBL TEX VMT VSE ZDX ZOO");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetGraphicsBanksDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfGraphicsBanks,LDT_szGetParam(1));
|
|
}
|
|
break;
|
|
case 'hceM': /*"Mechanics"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"MEC");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetMechanicsDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfMechanics,LDT_szGetParam(1));
|
|
break;
|
|
case 'nuoS': /*"Sound"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"CSB LCB SIF");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetGraphicsClassesDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
|
|
strcpy(szFileName, g_a64_cGameDataDirectory);
|
|
strcat(szFileName,LDT_szGetParam(1));
|
|
fn_vSetSoundDataPath(szFileName);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(szFileName);
|
|
#endif
|
|
strcat(szFileName,"\\");
|
|
SND_fn_vAddDataDirectory(szFileName);
|
|
sprintf(szPath,"%s%s\\",szFileName,g_sLanguage);
|
|
SND_fn_vAddDataDirectory(szPath);
|
|
if(!g_iComplete)
|
|
{
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
strcpy( szFileName, szPath);
|
|
SND_fn_vAddDataDirectory(szFileName);
|
|
sprintf(szPath,"%s%s\\",szFileName,g_sLanguage);
|
|
SND_fn_vAddDataDirectory(szPath);
|
|
}
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfSound,LDT_szGetParam(1));
|
|
break;
|
|
case 'usiV': /*"Visuals"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"VMT VSE TEX");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetVisualMaterialDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfVisuals,LDT_szGetParam(1));
|
|
break;
|
|
case 'ivnE': /*"Environment"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"GEV MEV VEV");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetEnvironmentDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfEnvironment,LDT_szGetParam(1));
|
|
break;
|
|
case 'etaM': /*"Materials"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"CMT EMC GMT MMT VMT");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetCollideMaterialDataPath(a256_cDataDirectory);
|
|
fn_vSetSoundMaterialDataPath(a256_cDataDirectory);
|
|
fn_vSetMechanicsMaterialDataPath(a256_cDataDirectory);
|
|
fn_vSetGameMaterialDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfMaterials,LDT_szGetParam(1));
|
|
break;
|
|
case 'evaS': /*"SaveGame"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetSaveGameDataPath(a256_cDataDirectory);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfSaveGame,LDT_szGetParam(1));
|
|
break;
|
|
case 'rtxE': /*"Extras"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetExtrasDataPath(a256_cDataDirectory);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfExtras,LDT_szGetParam(1));
|
|
break;
|
|
case 'ngiV': /*"Vignettes"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetVignettesDataPath(a256_cDataDirectory);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfVignettes,LDT_szGetParam(1));
|
|
break;
|
|
case 'itpO': /*"Options"*/
|
|
LDT_RegisterPath(LDT_szGetParam(1),"IPT");
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetOptionsDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfOptions,LDT_szGetParam(1));
|
|
break;
|
|
case 'spiL': /*"LipsSync"*/
|
|
/* LDT_RegisterPath(LDT_szGetParam(1),"");*/
|
|
/* sprintf(szPath,"%s\\%s",,LDT_szGetParam(1),g_sLanguage);*/
|
|
/* LDT_RegisterPath(szPath,"");*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
sprintf(szPath,"%s\\%s",a256_cDataDirectory,g_sLanguage);
|
|
fn_vSetSyncLipsDataPath(szPath);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfLipsSync,LDT_szGetParam(1));
|
|
break;
|
|
case 'xdZ': /*"Zdx"*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetZdxDataPath(a256_cDataDirectory);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfZdx,LDT_szGetParam(1));
|
|
break;
|
|
case 'effE': /*"Effects"*/
|
|
/* LDT_RegisterPath(LDT_szGetParam(1),"");*/
|
|
strcpy(a256_cDataDirectory, g_a64_cGameDataDirectory);
|
|
strcat(a256_cDataDirectory,LDT_szGetParam(1));
|
|
fn_vSetEffectsDataPath(a256_cDataDirectory);
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
SCR_fn_v_RdL0_RegisterPath(a256_cDataDirectory);
|
|
#endif
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_DirectoryOfEffects,LDT_szGetParam(1));
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
|
|
|
|
/* Working for EndSection*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ulEndOfDescSection );
|
|
|
|
#ifndef U64
|
|
#ifdef LDT_SCR_HYBRID_VERSION
|
|
if (!g_iComplete)
|
|
{
|
|
strcpy( szFileName, fn_szGetGameDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetWorldDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
|
|
strcpy( szFileName, fn_szGetTextsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
sprintf(szFileName,"%s\\%s",szPath,g_sLanguage);
|
|
SCR_fn_v_RdL0_RegisterPath(szFileName);
|
|
|
|
strcpy( szFileName, fn_szGetFamiliesDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetCharactersDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetLevelsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetAnimDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetGameMaterialDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetVisualMaterialDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetSoundDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcat(szPath,"\\");
|
|
SND_fn_vAddDataDirectory(szPath);
|
|
sprintf(szFileName,"%s%s",szPath,g_sLanguage);
|
|
SCR_fn_v_RdL0_RegisterPath(szFileName);
|
|
strcat(szFileName,"\\");
|
|
SND_fn_vAddDataDirectory(szFileName);
|
|
|
|
strcpy( szFileName, fn_szGetGraphicsClassesDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetGraphicsBanksDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetMechanicsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetEnvironmentDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetOptionsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetSyncLipsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
strcpy( szFileName, fn_szGetEffectsDataPath() );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
|
|
strcpy( szFileName, szInventorDirectory );
|
|
sprintf(szPath,"%c:\\%s",g_cCDROM,szFileName);
|
|
SCR_fn_v_RdL0_RegisterPath(szPath);
|
|
sprintf(szFileName,"%s\\%s",szPath,g_sLanguage);
|
|
SCR_fn_v_RdL0_RegisterPath(szFileName);
|
|
}
|
|
#endif
|
|
#endif
|
|
return 0;
|
|
}
|
|
/*END FS 8/27/98*/
|
|
|
|
/*BEGIN FS 9/2/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: Callback InputDeviceManager section from .dsc sript file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:9/2/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadInputDeviceManagerDescription( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
case 'tinI': /*"InitInputDeviceManager"*/
|
|
IPT_fn_vInitInput((short)fn_lAToI(LDT_szGetParam(1)),fn_hGetApplicationInstance(),fn_hGetApplicationWindow());
|
|
break;
|
|
case 'IddA': /*"AddInputDeviceFile"*/
|
|
/* IPT_fn_vReadInputScript(LDT_szGetParam(1));*/
|
|
/*!!! functia de sus nu face decat instr. urmatoare*/
|
|
/* SCR_fnp_st_RdL0_AnalyseSection(LDT_szGetParam(1), SCR_CDF_uw_Anl_ForceAnalyse);*/
|
|
/*!!! introduc LDT_LoadSection doar dupa implementare .IPT-uri*/
|
|
LDT_LoadSection(LDT_szGetParam(1));
|
|
break;
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
|
|
return 0;
|
|
}
|
|
/*END FS 9/2/98*/
|
|
|
|
/*BEGIN FS 9/2/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: callback for RandomManagerDescription section from .dsc script file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:9/2/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadRandomManagerDescription( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
case 'tinI': /*"InitRandomManager"*/
|
|
RND_fn_vInitRandom();
|
|
/*!!! aici se va lucra pe LDT cand se va implementa si .RND*/
|
|
/*urmatoarea functie face un AnalyseSection la sectiunea al carui callback */
|
|
/* s-a inregistrat incarcat RND_fn_vInitRandom()*/
|
|
RND_fn_vReadRandomScript(LDT_szGetParam(1));
|
|
break;
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
|
|
return 0;
|
|
}
|
|
/*END FS 9/2/98*/
|
|
|
|
/*BEGIN FS 9/2/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: callback for GameOptionsFile section from .dsc sript file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:9/2/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadGameOptionsFileDescription( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
|
|
/* Working for BeginSection*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_GameOptionDescTitle );
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_GameOptionDescTitle );
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
/* case 'dreC': //"CreditsLevelName"*/
|
|
/* strcpy(g_stEngineStructure.szCreditsLevelName,LDT_szGetParam(1));*/
|
|
/* break;*/
|
|
/* case 'pikS': //"SkipMainMenu"*/
|
|
/* g_stEngineStructure.bSkipMainMenu = TRUE;*/
|
|
/* break;*/
|
|
case 'afeD': /*"DefaultFile"*/
|
|
fn_vSetDefaultGameOptionsFileName(LDT_szGetParam(1));
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_BigFileTextures,LDT_szGetParam(1));
|
|
break;
|
|
case 'rruC': /*"CurrentFile"*/
|
|
fn_vSetCurrentGameOptionsFileName(LDT_szGetParam(1));
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_BigFileTextures,LDT_szGetParam(1));
|
|
break;
|
|
case 'marF': /*"FrameSynchro"*/
|
|
/* ON/OFF, NbFrame (0 for hysteresis) and %limit for hysteresis*/
|
|
{
|
|
char a[50], b[100], c[100];
|
|
strcpy(a, LDT_szGetParam(1));
|
|
strcpy(b, LDT_szGetParam(2));
|
|
strcpy(c, LDT_szGetParam(3));
|
|
GLD_vSetFrameSynchro( a,b,c);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWrite3StringsEntryToCurrentDscFile(SNA_C_ul_FrameSynchro, a,b,c);
|
|
}
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ulEndOfDescSection );
|
|
|
|
return 0;
|
|
}
|
|
/*END FS 9/2/98*/
|
|
|
|
|
|
/*BEGIN FS 9/2/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: callback for FirstLevelDescription from .dsc sript file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:9/2/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadFirstLevelDescription( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
|
|
/* Working for BeginSection*/
|
|
g_cChooseLevel = -1;
|
|
g_stEngineStructure.ucNumberOfLevels = 0;
|
|
g_stEngineStructure.ucCurrentLevel = (unsigned char) ((LDT_szGetParam(1)!=NULL ) ? atoi(LDT_szGetParam(1)) : 0);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteLongEntryToCurrentDscFile(SNA_C_ul_LevelNameTitle,
|
|
g_stEngineStructure.ucCurrentLevel);
|
|
result=LDT_GetNextEntry();
|
|
/* Working for Entries*/
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
case 'eveL': /*"LevelName"*/
|
|
if (LDT_iGetNbParams()-1!=1)
|
|
M_GameFatalError(E_uwGameScriptBadNumberOfArg);
|
|
/* CGHT Bin*/
|
|
/*ANNECY TQ 09/04/98{*/
|
|
/*if(SNA_fn_ucGetLoadType()!=SNA_SAVE_SNAPSHOT)*/
|
|
/*ENDANNECY TQ}*/
|
|
if ( !g_cIsLevelOk )
|
|
{
|
|
if ( (g_stEngineStructure.ucNumberOfLevels == g_stEngineStructure.ucCurrentLevel) || (g_stEngineStructure.ucNumberOfLevels == 0) )
|
|
fn_vSetFirstLevelName(LDT_szGetParam(1));
|
|
}
|
|
strcpy( g_stEngineStructure.a_szLevelName[g_stEngineStructure.ucNumberOfLevels++],LDT_szGetParam(1));
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile (SNA_C_ul_LevelName,LDT_szGetParam(1));
|
|
break;
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile ( SNA_C_ulEndOfDescSection );
|
|
|
|
return 0;
|
|
}
|
|
/*END FS 9/2/98*/
|
|
|
|
/*BEGIN FS 9/2/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: Callback for Texts section from .dsc sript file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:9/2/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadAddStringsFiles( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
/* unsigned char ucOldACPModeMalloc;*/
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
case 'SddA': /*"AddStringsFile"*/
|
|
if (LDT_iGetNbParams()-1!=1)
|
|
M_GameFatalError(E_uwGameScriptBadNumberOfArg);
|
|
/* ucOldACPModeMalloc = GEO_M_ucGetMemMallocMode();*/
|
|
/* GEO_xSelectMemoryChannel(ACP_TextMemoryChannel);*/
|
|
|
|
/*!!! introduc LDT_LoadSection dupa introducere .TXT*/
|
|
LDT_LoadSection(LDT_szGetParam(1));
|
|
|
|
/* SCR_fnp_st_RdL0_AnalyseSection(LDT_szGetParam(1), SCR_CDF_uw_Anl_Normal);*/
|
|
/* GEO_xSelectMemoryChannel(ucOldACPModeMalloc);*/
|
|
|
|
fn_vGameTestMemory();
|
|
break;
|
|
case 'FddA': /*"AddFontFile"*/
|
|
/* if (LDT_iGetNbParams()-1!=1)
|
|
M_GameFatalError(E_uwGameScriptBadNumberOfArg);
|
|
if(SNA_fn_ucGetLoadType()!=SNA_LOAD_SNAPSHOT)
|
|
LDT_LoadSection(LDT_szGetParam(1));
|
|
fn_vGameTestMemory();*/
|
|
break;
|
|
} /* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
} /*end while for entries*/
|
|
|
|
return 0;
|
|
|
|
}
|
|
/*END FS 9/2/98*/
|
|
|
|
/*BEGIN FS 8/27/98*/
|
|
/*----------------------------------------------------------------------
|
|
* Description: Callback for BigFiles section from .dsc sript file
|
|
*----------------------------------------------------------------------
|
|
* Input:
|
|
* Output:
|
|
*----------------------------------------------------------------------
|
|
* Author: FS
|
|
* Creation date:8/27/98
|
|
* Modif date:
|
|
*----------------------------------------------------------------------*/
|
|
int LoadBigFile( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
char *szEntryName;
|
|
char a256_cGameMemoryFile[256];
|
|
|
|
/* Working for BeginSection*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_BigFileDescTitle );
|
|
|
|
/* Working for Entries*/
|
|
result=LDT_GetNextEntry();
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
szEntryName=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntryName))
|
|
{
|
|
case 'txeT': /*"Textures"*/
|
|
if (LDT_iGetNbParams()-1!=1)
|
|
M_GameFatalError(E_uwGameScriptBadNumberOfArg);
|
|
GLI_fn_vCloseBigFileTextures();
|
|
strcpy(a256_cGameMemoryFile,g_a64_cGameDataDirectory);
|
|
strcat(a256_cGameMemoryFile,LDT_szGetParam(1));
|
|
GLI_fn_vOpenBigFileTextures(a256_cGameMemoryFile);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_BigFileTextures,LDT_szGetParam(1));
|
|
break;
|
|
case 'ngiV': /*"Vignettes"*/
|
|
if (LDT_iGetNbParams()-1!=1)
|
|
M_GameFatalError(E_uwGameScriptBadNumberOfArg);
|
|
VIG_fn_vCloseBigFileVignette();
|
|
strcpy(a256_cGameMemoryFile,g_a64_cGameDataDirectory);
|
|
strcat(a256_cGameMemoryFile,LDT_szGetParam(1));
|
|
VIG_fn_vOpenBigFileVignette(a256_cGameMemoryFile);
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteStringEntryToCurrentDscFile(SNA_C_ul_BigFileVignettes,LDT_szGetParam(1));
|
|
}/* end switch*/
|
|
result=LDT_GetNextEntry();
|
|
}/*end while for entries*/
|
|
if ( SNA_M_bTestSaveGameDesc() )
|
|
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ulEndOfDescSection );
|
|
return 0;
|
|
}
|
|
/*END FS 8/27/98*/
|
|
|
|
|
|
|
|
/*****************************************************************
|
|
Function name : fn_iCreateLanguage
|
|
Description :
|
|
Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM
|
|
Creation Date : 13-Oct-98
|
|
Modified :
|
|
Return type : int
|
|
Argument : LDT_tdst_Link *pLink
|
|
*****************************************************************/
|
|
int fn_iCreateLanguage( LDT_tdst_Link *pLink )
|
|
{
|
|
|
|
g_stEngineStructure.ucNbLanguages =(unsigned char) ((LDT_szGetParam(1) != NULL ) ? atoi( LDT_szGetParam(1) ) : 0);
|
|
g_stEngineStructure.p_stLanguageTable = M_p_GameMallocInHLM( g_stEngineStructure.ucNbLanguages * sizeof(tdstLanguageStructure));
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/*****************************************************************
|
|
Function name : fn_iLoadLanguage
|
|
Description :
|
|
Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM
|
|
Creation Date : 13-Oct-98
|
|
Modified :
|
|
Return type : int
|
|
Argument : LDT_tdst_Link *pLink
|
|
*****************************************************************/
|
|
int fn_iLoadLanguage( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
static ucLanguage;
|
|
|
|
ucLanguage = 0;
|
|
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
result=LDT_GetNextEntry();
|
|
switch( result )
|
|
{
|
|
case ParseResult_Entry: /* an entry */
|
|
{
|
|
char *szEntry=LDT_szGetEntryName();
|
|
switch (*(long*)szEntry)
|
|
{
|
|
|
|
case 'LddA' : /* */
|
|
{
|
|
if (ucLanguage < g_stEngineStructure.ucNbLanguages)
|
|
{
|
|
strcpy( g_stEngineStructure.p_stLanguageTable[ucLanguage].szLanguageCode, LDT_szGetParam(1) );
|
|
strcpy( g_stEngineStructure.p_stLanguageTable[ucLanguage].szLanguageText, LDT_szGetParam(2) );
|
|
ucLanguage ++;
|
|
}
|
|
|
|
}
|
|
break;
|
|
default:
|
|
M_GameFatalError(E_uwGameLanguage);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
#endif /* CPA_USES_LDT */
|
|
/* MLT CC END 9/23/98 */
|