diff options
| author | Oystein Eftevaag | 2006-03-08 13:15:13 +0000 | 
|---|---|---|
| committer | Oystein Eftevaag | 2006-03-08 13:15:13 +0000 | 
| commit | 39c9af43ae06814ee8298e7cf91c736a0dafccc8 (patch) | |
| tree | a252d23d7ef7f545844ac124935126c13ef5cfeb | |
| parent | 4c1e4c6987ed6cd511c932195e845a1ee15022aa (diff) | |
| download | scummvm-rg350-39c9af43ae06814ee8298e7cf91c736a0dafccc8.tar.gz scummvm-rg350-39c9af43ae06814ee8298e7cf91c736a0dafccc8.tar.bz2 scummvm-rg350-39c9af43ae06814ee8298e7cf91c736a0dafccc8.zip  | |
Implemented the last menu (the settings screen). Walking speed, text speed,
and speech modes (text only, speech only, speech & text) can now be
configured. Toggling music and sound in general is not enabled yet.
Also formatted the static menu resources a bit differently, made
sure some vars in the menu code always got initalized, and
fixed a slight formatting error :).
svn-id: r21145
| -rw-r--r-- | engines/kyra/gui.cpp | 209 | ||||
| -rw-r--r-- | engines/kyra/kyra.cpp | 7 | ||||
| -rw-r--r-- | engines/kyra/kyra.h | 22 | ||||
| -rw-r--r-- | engines/kyra/saveload.cpp | 16 | ||||
| -rw-r--r-- | engines/kyra/script_v1.cpp | 22 | ||||
| -rw-r--r-- | engines/kyra/staticres.cpp | 67 | ||||
| -rw-r--r-- | engines/kyra/text.cpp | 2 | ||||
| -rw-r--r-- | engines/kyra/timer.cpp | 9 | 
8 files changed, 305 insertions, 49 deletions
diff --git a/engines/kyra/gui.cpp b/engines/kyra/gui.cpp index db9f249485..dd57c26621 100644 --- a/engines/kyra/gui.cpp +++ b/engines/kyra/gui.cpp @@ -414,10 +414,12 @@ int KyraEngine::buttonMenuCallback(Button *caller) {  	_screen->savePageToDisk("SEENPAGE.TMP", 0);  	gui_fadePalette(); -	for ( int i = 0; i < 5; i++) +	for (int i = 0; i < 5; i++)  		calcCoords(_menu[i]);  	_menuRestoreScreen = true; +	_keyboardEvent.pending = 0; +	_keyboardEvent.repeat = 0;  	_toplevelMenu = 0;  	if (_menuDirectlyToLoad) @@ -500,22 +502,24 @@ void KyraEngine::initMenu(Menu menu) {  		_screen->fillRect(x1, y1, x2, y2, menu.item[i].bgcolor);  		_screen->drawShadedBox(x1, y1, x2, y2, menu.item[i].color1, menu.item[i].color2); -		if (menu.item[i].field_12 != -1) -			textX = x1 + menu.item[i].field_12 + 3; -		else -			textX = _text->getCenterStringX(menu.item[i].itemString, x1, x2); +		if (menu.item[i].itemString) { +			if (menu.item[i].field_12 != -1) +				textX = x1 + menu.item[i].field_12 + 3; +			else +				textX = _text->getCenterStringX(menu.item[i].itemString, x1, x2); -		textY = y1 + 2; -		_text->printText(menu.item[i].itemString, textX - 1, textY + 1,  12, 0, 0); +			textY = y1 + 2; +			_text->printText(menu.item[i].itemString, textX - 1, textY + 1,  12, 0, 0); -		if (i == menu.highlightedItem) -			_text->printText(menu.item[i].itemString, textX, textY, menu.item[i].highlightColor, 0, 0); -		else -			_text->printText(menu.item[i].itemString, textX, textY, menu.item[i].textColor, 0, 0); +			if (i == menu.highlightedItem) +				_text->printText(menu.item[i].itemString, textX, textY, menu.item[i].highlightColor, 0, 0); +			else +				_text->printText(menu.item[i].itemString, textX, textY, menu.item[i].textColor, 0, 0); -		if (menu.item[i].labelString) { -			_text->printText(menu.item[i].labelString, menu.x + menu.item[i].field_21 - 1, menu.y + menu.item[i].field_23 + 1, 12, 0, 0); -			_text->printText(menu.item[i].labelString, menu.x + menu.item[i].field_21, menu.y + menu.item[i].field_23, 253, 0, 0); +			if (menu.item[i].labelString) { +				_text->printText(menu.item[i].labelString, menu.x + menu.item[i].labelX - 1, menu.y + menu.item[i].labelY + 1, 12, 0, 0); +				_text->printText(menu.item[i].labelString, menu.x + menu.item[i].labelX, menu.y + menu.item[i].labelY, 253, 0, 0); +			}  		}  	} @@ -799,8 +803,6 @@ int KyraEngine::gui_saveGame(Button *button) {  	}  	gui_redrawTextfield(); -	_keyboardEvent.pending = 0; -	_keyboardEvent.repeat = 0;  	while (_displaySubMenu) {  		gui_getInput();  		gui_updateSavegameString(); @@ -905,6 +907,181 @@ int KyraEngine::gui_quitConfirmNo(Button *button) {  	return 0;  } +int KyraEngine::gui_gameControlsMenu(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_gameControlsMenu()"); + +	_screen->loadPageFromDisk("SEENPAGE.TMP", 0); +	_screen->savePageToDisk("SEENPAGE.TMP", 0); + +	if (_features & GF_TALKIE) { +		_menu[5].width = 230; + +		for (int i = 0; i < 5; i++) { +			_menu[5].item[i].labelX = 24; +			_menu[5].item[i].x = 115; +			_menu[5].item[i].width = 94; +		} + +		_menu[5].item[3].labelString = "Voice / Text "; +		_menu[5].item[3].callback = &KyraEngine::gui_controlsChangeVoice; + +	} else { +		_menu[5].height = 136; +		_menu[5].item[5].y = 110; +		_menu[5].item[4].enabled = 0; +		_menu[5].item[3].labelString = "Text speed "; +		_menu[5].item[3].callback = &KyraEngine::gui_controlsChangeText; +	} + +	calcCoords(_menu[5]); +	gui_setupControls(_menu[5]); + +	processAllMenuButtons(); + +	_displaySubMenu = true; +	_cancelSubMenu = false; + +	while (_displaySubMenu) { +		gui_getInput(); +		gui_processHighlights(_menu[5]); +		processButtonList(_menuButtonList); +	} + +	_screen->loadPageFromDisk("SEENPAGE.TMP", 0); +	_screen->savePageToDisk("SEENPAGE.TMP", 0); + +	if (_cancelSubMenu) { +		initMenu(_menu[_toplevelMenu]); +		processAllMenuButtons(); +	} +	return 0; +} + +void KyraEngine::gui_setupControls(Menu &menu) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_setupControls()"); + +	if (_configMusic) +		menu.item[0].itemString = "On"; +	else +		menu.item[0].itemString = "Off"; + +	if (_configSounds) +		menu.item[1].itemString = "On"; +	else +		menu.item[1].itemString = "Off"; + + +	switch (_configWalkspeed) { +		case 0: +			menu.item[2].itemString = "Slowest"; +			break; +		case 1: +			menu.item[2].itemString = "Slow"; +			break; +		case 2: +			menu.item[2].itemString = "Normal"; +			break; +		case 3: +			menu.item[2].itemString = "Fast"; +			break; +		case 4: +			menu.item[2].itemString = "Fastest"; +			break; +		default: +			menu.item[2].itemString = "ERROR"; +	} + +	int textControl = 3; +	if (_features & GF_TALKIE) { +		textControl = 4; + +		if (_configVoice == 0) +			_menu[5].item[4].enabled = 1; +		else +			_menu[5].item[4].enabled = 0; + +		switch (_configVoice) { +			case 0: +				menu.item[3].itemString = "Text only"; +				break; +			case 1: +				menu.item[3].itemString = "Voice & Text"; +				break; +			case 2: +				menu.item[3].itemString = "Voice only"; +				break; +			default: +				menu.item[3].itemString = "ERROR"; +		} +	} + +	switch (_configTextspeed) { +		case 0: +			menu.item[textControl].itemString = "Slow"; +			break; +		case 1: +			menu.item[textControl].itemString = "Normal"; +			break; +		case 2: +			menu.item[textControl].itemString = "Fast"; +			break; +		case 3: +			menu.item[textControl].itemString = "Clickable"; +			break; +		default: +			menu.item[textControl].itemString = "ERROR"; +	} + + +	initMenu(menu); +} + +int KyraEngine::gui_controlsChangeMusic(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_controlsChangeMusic()"); +	processMenuButton(button); + +	_configMusic = !_configMusic; +	gui_setupControls(_menu[5]); +	return 0; +} + +int KyraEngine::gui_controlsChangeSounds(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_controlsChangeSounds()"); +	processMenuButton(button); + +	_configSounds = !_configSounds; +	gui_setupControls(_menu[5]); +	return 0; +} + +int KyraEngine::gui_controlsChangeWalk(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_controlsChangeWalk()"); +	processMenuButton(button); + +	_configWalkspeed = ++_configWalkspeed % 5; +	setWalkspeed(_configWalkspeed); +	gui_setupControls(_menu[5]); +	return 0; +} + +int KyraEngine::gui_controlsChangeText(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_controlsChangeText()"); +	processMenuButton(button); + +	_configTextspeed = ++_configTextspeed % 4; +	gui_setupControls(_menu[5]); +	return 0; +} + +int KyraEngine::gui_controlsChangeVoice(Button *button) { +	debugC(9, kDebugLevelGUI, "KyraEngine::gui_controlsChangeVoice()"); +	processMenuButton(button); + +	_configVoice = ++_configVoice % 3; +	gui_setupControls(_menu[5]); +	return 0; +} +  int KyraEngine::gui_scrollUp(Button *button) {  	debugC(9, kDebugLevelGUI, "KyraEngine::gui_scrollUp()");  	processMenuButton(button); diff --git a/engines/kyra/kyra.cpp b/engines/kyra/kyra.cpp index 775718e439..292bbab980 100644 --- a/engines/kyra/kyra.cpp +++ b/engines/kyra/kyra.cpp @@ -440,7 +440,12 @@ int KyraEngine::init(GameDetector &detector) {  	assert(_movFacingTable);  	_movFacingTable[0] = 8; -	_configTalkspeed = 1; +	_configTextspeed = 1; +	_configWalkspeed = 2; +	_configMusic = true; +	_configSounds = true; +	_configVoice = 1; +  	_skipFlag = false;  	_marbleVaseItem = -1; diff --git a/engines/kyra/kyra.h b/engines/kyra/kyra.h index 119cfe4c80..833877c95d 100644 --- a/engines/kyra/kyra.h +++ b/engines/kyra/kyra.h @@ -201,8 +201,8 @@ struct MenuItem {  	int (KyraEngine::*callback)(Button*);  	int16 field_1b;  	const char *labelString; -	uint16 field_21; -	uint8 field_23; +	uint16 labelX; +	uint8 labelY;  	uint8 field_24;  	uint32 field_25;  }; @@ -641,7 +641,8 @@ protected:  	void updateAnimFlag2(int timerNum);  	void drawAmulet();  	void setTextFadeTimerCountdown(int16 countdown); -	 +	void setWalkspeed(uint8 newSpeed); +  	int buttonInventoryCallback(Button *caller);  	int buttonAmuletCallback(Button *caller);  	int buttonMenuCallback(Button *caller); @@ -663,6 +664,7 @@ protected:  	int gui_resumeGame(Button *button);  	int gui_loadGameMenu(Button *button);  	int gui_saveGameMenu(Button *button); +	int gui_gameControlsMenu(Button *button);  	int gui_quitPlaying(Button *button);  	int gui_quitConfirmYes(Button *button);  	int gui_quitConfirmNo(Button *button); @@ -672,6 +674,11 @@ protected:  	int gui_cancelSubMenu(Button *button);  	int gui_scrollUp(Button *button);  	int gui_scrollDown(Button *button); +	int gui_controlsChangeMusic(Button *button); +	int gui_controlsChangeSounds(Button *button); +	int gui_controlsChangeWalk(Button *button); +	int gui_controlsChangeText(Button *button); +	int gui_controlsChangeVoice(Button *button);  	bool gui_quitConfirm(const char *str);  	void gui_getInput(); @@ -682,6 +689,7 @@ protected:  	void gui_redrawTextfield();  	void gui_fadePalette();  	void gui_restorePalette(); +	void gui_setupControls(Menu &menu);  	uint8 _game;  	bool _quitFlag; @@ -781,8 +789,12 @@ protected:  	int8 _startSentencePalIndex;  	bool _fadeText; -	uint8 _configTalkspeed; -	 +	uint8 _configTextspeed; +	uint8 _configWalkspeed; +	bool _configMusic; +	bool _configSounds; +	uint8 _configVoice; +  	Common::String _targetName;  	int _curMusicTheme; diff --git a/engines/kyra/saveload.cpp b/engines/kyra/saveload.cpp index 346ef7bf86..4404214ee2 100644 --- a/engines/kyra/saveload.cpp +++ b/engines/kyra/saveload.cpp @@ -28,7 +28,7 @@  #include "common/savefile.h"  #include "common/system.h" -#define CURRENT_VERSION 3 +#define CURRENT_VERSION 4  namespace Kyra {  void KyraEngine::loadGame(const char *fileName) { @@ -178,6 +178,14 @@ void KyraEngine::loadGame(const char *fileName) {  			snd_playWanderScoreViaMap(_lastMusicCommand, 1);  	} +	if (version >= 4) { +		_configTextspeed = in->readByte(); +		_configWalkspeed = in->readByte(); +		_configMusic = in->readByte(); +		_configSounds = in->readByte(); +		_configVoice = in->readByte(); +	} +  	if (queryGameFlag(0x2D)) {  		loadMainScreen(8);  		loadBitmap("AMULET3.CPS", 10, 10, 0); @@ -310,6 +318,12 @@ void KyraEngine::saveGame(const char *fileName, const char *saveName) {  	out->writeSint16BE(_lastMusicCommand); +	out->writeByte(_configTextspeed); +	out->writeByte(_configWalkspeed); +	out->writeByte(_configMusic); +	out->writeByte(_configSounds); +	out->writeByte(_configVoice); +  	out->flush();  	// check for errors diff --git a/engines/kyra/script_v1.cpp b/engines/kyra/script_v1.cpp index a8a8ed6fad..916e328daa 100644 --- a/engines/kyra/script_v1.cpp +++ b/engines/kyra/script_v1.cpp @@ -44,9 +44,12 @@ int KyraEngine::cmd_characterSays(ScriptState *script) {  	_skipFlag = false;  	if (_features & GF_TALKIE) {  		debugC(3, kDebugLevelScriptFuncs, "cmd_characterSays(%p) (%d, '%s', %d, %d)", (const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3)); -		snd_voiceWaitForFinish(); -		snd_playVoiceFile(stackPos(0)); -		characterSays(stackPosString(1), stackPos(2), stackPos(3)); +		if (_configVoice == 1 || _configVoice == 2) { +			snd_voiceWaitForFinish(); +			snd_playVoiceFile(stackPos(0)); +		} +		if (_configVoice == 0 || _configVoice == 1) +			characterSays(stackPosString(1), stackPos(2), stackPos(3));  	} else {  		debugC(3, kDebugLevelScriptFuncs, "cmd_characterSays(%p) ('%s', %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2));  		characterSays(stackPosString(0), stackPos(1), stackPos(2)); @@ -613,10 +616,14 @@ int KyraEngine::cmd_loadPageFromDisk(ScriptState *script) {  int KyraEngine::cmd_customPrintTalkString(ScriptState *script) {  	if (_features & GF_TALKIE) {  		debugC(3, kDebugLevelScriptFuncs, "cmd_customPrintTalkString(%p) (%d, '%s', %d, %d, %d)", (const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF); -		snd_voiceWaitForFinish(); -		snd_playVoiceFile(stackPos(0)); + +		if (_configVoice == 1 || _configVoice == 2) { +			snd_voiceWaitForFinish(); +			snd_playVoiceFile(stackPos(0)); +		}  		_skipFlag = false; -		_text->printTalkTextMessage(stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF, 0, 2); +		if (_configVoice == 0 || _configVoice == 1) +			_text->printTalkTextMessage(stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF, 0, 2);  	} else {  		debugC(3, kDebugLevelScriptFuncs, "cmd_customPrintTalkString(%p) ('%s', %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3) & 0xFF);  		_skipFlag = false; @@ -1447,8 +1454,7 @@ int KyraEngine::cmd_totalItemsInScene(ScriptState *script) {  int KyraEngine::cmd_restoreBrandonsMovementDelay(ScriptState *script) {  	debugC(3, kDebugLevelScriptFuncs, "cmd_restoreBrandonsMovementDelay(%p) ()", (const void *)script); -	//TODO: Use movement set by menu, instead of 5. -	setTimerDelay(5, 5); +	setWalkspeed(_configWalkspeed);	  	return 0;  } diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 63e2cc12ab..26f2165d1f 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -907,55 +907,88 @@ Menu KyraEngine::_menu[] = {  	{ -1, -1, 208, 136, 248, 249, 250, "The Legend of Kyrandia", 251, -1, 8, 0, 5, -1, -1, -1, -1,   		{  			{1, 0, 0, "Load a Game", -1, -1, 30, 148, 15, 252, 253, 24, 0, -				248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Save this Game", -1, -1, 47, 148, 15, 252, 253, 24, 0, -				248, 249, 250, &KyraEngine::gui_saveGameMenu, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_saveGameMenu, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Game Controls", -1, -1, 64, 148, 15, 252, 253, 24, 0, -				248, 249, 250, /*&menu_gameControls*/ 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_gameControlsMenu, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Quit playing", -1, -1, 81, 148, 15, 252, 253, 24, 0, -				248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Resume game", 86, 0, 110, 92, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_resumeGame, -1, 0, 0, 0, 0, 0} +			248, 249, 250, &KyraEngine::gui_resumeGame, -1, 0, 0, 0, 0, 0}  		}  	},  	{ -1, -1, 288, 56, 248, 249, 250, 0, 254,-1, 8, 0, 2, -1, -1, -1, -1,  		{  			{1, 0, 0, "Yes", 24, 0, 30, 72, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_quitConfirmYes, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_quitConfirmYes, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "No", 192, 0, 30, 72, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_quitConfirmNo, -1, 0, 0, 0, 0, 0} +			248, 249, 250, &KyraEngine::gui_quitConfirmNo, -1, 0, 0, 0, 0, 0}  		}  	},  	{ -1, -1, 288, 160, 248, 249, 250, 0, 251, -1, 8, 0, 6, 132, 22, 132, 124,  		{  			{1, 0, 0, 0, -1, 255, 39, 256, 15, 252, 253, 5, 0,  -				248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, 0, -1, 255, 56, 256, 15, 252, 253, 5, 0,  -				248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, 0, -1, 255, 73, 256, 15, 252, 253, 5, 0,  -				248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, 0, -1, 255, 90, 256, 15, 252, 253, 5, 0,  -				248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, 0, -1, 255, 107, 256, 15, 252, 253, 5, 0, -				248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, 0, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Cancel", 184, 0, 134, 88, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0},  		}  	},  	{ -1, -1, 288, 67, 248, 249, 250, "Enter a description of your saved game:", 251, -1, 8, 0, 3, -1, -1, -1, -1,  		{  			{1, 0, 0, "Save", 24, 0, 44, 72, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_savegameConfirm, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_savegameConfirm, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Cancel", 192, 0, 44, 72, 15, 252, 253, -1, 255, -				248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0} +			248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0}  		}  	},  	{ -1, -1, 208, 76, 248, 249, 250, "Rest in peace, Brandon.", 251, -1, 8, 0, 2, -1, -1, -1, -1,   		{  			{1, 0, 0, "Load a game", -1, -1, 30, 148, 15, 252, 253, 24, 0, -				248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0}, +			248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0}, +  			{1, 0, 0, "Quit playing", -1, -1, 47, 148, 15, 252, 253, 24, 0, -				248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0} +			248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0} +		} +	}, +	{ -1, -1, 208, 153, 248, 249, 250, "Game Controls", 251, -1, 8, 0, 6, -1, -1, -1, -1,  +		{ +			{1, 0, 0, 0, 110, 0, 30, 64, 15, 252, 253, 5, 0, +			248, 249, 250, &KyraEngine::gui_controlsChangeMusic, -1, "Music is ", 34, 32, 0, 0}, + + 			{1, 0, 0, 0, 110, 0, 47, 64, 15, 252, 253, 5, 0, +			248, 249, 250, &KyraEngine::gui_controlsChangeSounds, -1, "Sounds are ", 34, 49, 0, 0}, + + 			{1, 0, 0, 0, 110, 0, 64, 64, 15, 252, 253, 5, 0, +			248, 249, 250, &KyraEngine::gui_controlsChangeWalk, -1, "Walk speed ", 34, 66, 0, 0}, + +			{1, 0, 0, 0, 110, 0, 81, 64, 15, 252, 253, 5, 0, +			248, 249, 250, 0, -1, 0, 34, 83, 0, 0 }, + +			{1, 0, 0, 0, 110, 0, 98, 64, 15, 252, 253, 5, 0, +			248, 249, 250, &KyraEngine::gui_controlsChangeText, -1, "Text speed ", 34, 100, 0, 0 }, + +			{1, 0, 0, "Main Menu", 64, 0, 127, 92, 15, 252, 253, -1, 255, +			248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, -0, 0, 0, 0, 0}  		}  	}  }; diff --git a/engines/kyra/text.cpp b/engines/kyra/text.cpp index 1f7284c9c1..f47136ced4 100644 --- a/engines/kyra/text.cpp +++ b/engines/kyra/text.cpp @@ -46,7 +46,7 @@ void KyraEngine::waitForChatToFinish(int16 chatDuration, char *chatStr, uint8 ch  	uint32 timeToEnd = strlen(chatStr) * 8 * _tickLength + _system->getMillis();  	if (chatDuration != -1 ) { -		switch (_configTalkspeed) { +		switch (_configTextspeed) {  			case 0: chatDuration *= 2;  					break;  			case 2: chatDuration /= 4; diff --git a/engines/kyra/timer.cpp b/engines/kyra/timer.cpp index fa16a8b008..10353f97ca 100644 --- a/engines/kyra/timer.cpp +++ b/engines/kyra/timer.cpp @@ -276,5 +276,14 @@ void KyraEngine::drawAmulet() {  	}  	_screen->showMouse();  } + +void KyraEngine::setWalkspeed(uint8 newSpeed) { +	debugC(9, kDebugLevelMain, "KyraEngine::setWalkspeed(%i)", newSpeed); +	static const uint8 speeds[] = {11, 9, 6, 5, 3}; + +	assert(newSpeed < ARRAYSIZE(speeds)); +	setTimerDelay(5, speeds[newSpeed]); +} +  } // end of namespace Kyra  | 
