diff options
| author | Johannes Schickel | 2005-11-27 10:02:23 +0000 | 
|---|---|---|
| committer | Johannes Schickel | 2005-11-27 10:02:23 +0000 | 
| commit | ee69f9317d14915816943b3d803a09def2605872 (patch) | |
| tree | b901dd5099f499e871c3b5450c33e4358988af26 | |
| parent | ceb9116ab29b8c3d0a5f7825b7a46bf13793910c (diff) | |
| download | scummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.tar.gz scummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.tar.bz2 scummvm-rg350-ee69f9317d14915816943b3d803a09def2605872.zip | |
Added voices for cd version in the game.
Also increased RESFILE_VERSION for the new kyra.dat for the cd version.
svn-id: r19717
| -rw-r--r-- | kyra/kyra.cpp | 30 | ||||
| -rw-r--r-- | kyra/script_v1.cpp | 16 | ||||
| -rw-r--r-- | kyra/staticres.cpp | 2 | 
3 files changed, 40 insertions, 8 deletions
| diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp index 66348df80d..2110dcf7f0 100644 --- a/kyra/kyra.cpp +++ b/kyra/kyra.cpp @@ -344,6 +344,8 @@ int KyraEngine::init(GameDetector &detector) {  	_marbleVaseItem = -1;  	_mouseState = _itemInHand = -1;  	_handleInput = false; +	 +	_currentRoom = 0xFFFF;  	return 0;  } @@ -1186,18 +1188,36 @@ void KyraEngine::enterNewScene(int sceneId, int facing, int unk1, int unk2, int  	assert(sceneId < _roomTableSize);  	Room *currentRoom = &_roomTable[sceneId]; - +	 +	if (_currentRoom != 0xFFFF && (_features & GF_TALKIE)) { +		char file[32]; +		assert(_currentRoom < _roomTableSize); +		int tableId = _roomTable[_currentRoom].nameIndex; +		assert(tableId < _roomFilenameTableSize); +		strcpy(file, _roomFilenameTable[tableId]); +		strcat(file, ".VRM"); +		_res->unloadPakFile(file); +	} +	 +	_currentRoom = sceneId; +	  	assert(_currentCharacter->sceneId < _roomTableSize);  	int tableId = _roomTable[_currentCharacter->sceneId].nameIndex;  	assert(tableId < _roomFilenameTableSize); -	char datFileNameBuffer[32]; -	strcpy(datFileNameBuffer, _roomFilenameTable[tableId]); -	strcat(datFileNameBuffer, ".DAT"); -	_sprites->loadDAT(datFileNameBuffer, _sceneExits); +	char fileNameBuffer[32]; +	strcpy(fileNameBuffer, _roomFilenameTable[tableId]); +	strcat(fileNameBuffer, ".DAT"); +	_sprites->loadDAT(fileNameBuffer, _sceneExits);  	_sprites->setupSceneAnims();  	_scriptInterpreter->unloadScript(_scriptClickData);  	loadSceneMSC(); +	if ((_features & GF_TALKIE)) { +		strcpy(fileNameBuffer, _roomFilenameTable[tableId]); +		strcat(fileNameBuffer, ".VRM"); +		_res->loadPakFile(fileNameBuffer); +	} +	  	_walkBlockNorth = currentRoom->northExit;  	_walkBlockEast = currentRoom->eastExit;  	_walkBlockSouth = currentRoom->southExit; diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp index 5b26cc5e1e..7d82bc3687 100644 --- a/kyra/script_v1.cpp +++ b/kyra/script_v1.cpp @@ -314,6 +314,12 @@ int KyraEngine::cmd_characterSays(ScriptState *script) {  	if (_features & GF_TALKIE) {  		debug(3, "cmd_characterSays(0x%X) (%d, '%s', %d, %d)", script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3)); +		while (snd_voicePlaying()) { +			_sprites->updateSceneAnims(); +			updateAllObjectShapes(); +			_system->delayMillis(10); +		} +		snd_playVoiceFile(stackPos(0));  		characterSays(stackPosString(1), stackPos(2), stackPos(3));  	} else {  		debug(3, "cmd_characterSays(0x%X) ('%s', %d, %d)", script, stackPosString(0), stackPos(1), stackPos(2)); @@ -773,6 +779,12 @@ int KyraEngine::cmd_loadPageFromDisk(ScriptState *script) {  int KyraEngine::cmd_customPrintTalkString(ScriptState *script) {  	if (_features & GF_TALKIE) {  		debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF); +		while (snd_voicePlaying()) { +			_sprites->updateSceneAnims(); +			updateAllObjectShapes(); +			_system->delayMillis(10); +		} +		snd_playVoiceFile(stackPos(0));  		printTalkTextMessage(stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF, 0, 2);  	} else {  		debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3) & 0xFF); @@ -1428,10 +1440,10 @@ int KyraEngine::cmd_setScaleDepthTableValue(ScriptState *script) {  int KyraEngine::cmd_message(ScriptState *script) {  	if (_features & GF_TALKIE) { -		debug(9, "cmd_message(0x%X)", script); +		debug(3, "cmd_message(0x%X) (%d, '%s', %d)", script, stackPos(0), stackPosString(1), stackPos(2));  		drawSentenceCommand(stackPosString(1), stackPos(2));  	} else { -		debug(9, "cmd_message(0x%X)", script); +		debug(3, "cmd_message(0x%X) ('%s', %d)", script, stackPosString(0), stackPos(1));  		drawSentenceCommand(stackPosString(0), stackPos(1));  	} diff --git a/kyra/staticres.cpp b/kyra/staticres.cpp index 8c7e17faf9..f29b0e4ba1 100644 --- a/kyra/staticres.cpp +++ b/kyra/staticres.cpp @@ -26,7 +26,7 @@  namespace Kyra { -#define RESFILE_VERSION 2 +#define RESFILE_VERSION 3  #define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD)  #define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_LNGUNK) | 
