reman3/Rayman_X/cpa/tempgrp/GAM/P5/LoadgameCB.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 */