[Scummvm-cvs-logs] CVS: scummvm/scumm dialogs.cpp,1.61,1.62 script_v6.cpp,1.170,1.171 script_v8.cpp,2.185,2.186 scumm.h,1.268,1.269 string.cpp,1.147,1.148 verbs.cpp,1.68,1.69

Max Horn fingolfin at users.sourceforge.net
Tue Jul 15 14:31:21 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv10819

Modified Files:
	dialogs.cpp script_v6.cpp script_v8.cpp scumm.h string.cpp 
	verbs.cpp 
Log Message:
factored out some duplicate code into a new method translateTextAndPlaySpeech; removed some completely useless code (why compute 'pointer' when we then throw away the result?)

Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- dialogs.cpp	15 Jul 2003 02:16:33 -0000	1.61
+++ dialogs.cpp	15 Jul 2003 21:30:53 -0000	1.62
@@ -194,6 +194,8 @@
 	if (result && *result == '/') {
 		byte tmp[256];
 		_scumm->translateText(result, tmp);
+		
+		// FIXME: AARGH! We shouldn't just strcpy into the data we got from getStringAddress
 		strcpy((char *)result, (char *)tmp);
 	}
 

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -d -r1.170 -r1.171
--- script_v6.cpp	14 Jul 2003 21:37:45 -0000	1.170
+++ script_v6.cpp	15 Jul 2003 21:30:53 -0000	1.171
@@ -2237,26 +2237,9 @@
 void Scumm_v6::o6_talkActor() {
 	_actorToPrintStrFor = pop();
 
-	_messagePtr = _scriptPointer;
+	_messagePtr = translateTextAndPlaySpeech(_scriptPointer);
 	_scriptPointer += resStrLen(_scriptPointer) + 1;
 
-	if ((_gameId == GID_DIG || _gameId == GID_CMI) && (_messagePtr[0] == '/')) {
-		char pointer[20];
-		int i, j;
-
-		translateText(_messagePtr, _transText);
-		for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
-			if (_messagePtr[i] != '/')
-				pointer[j++] = _messagePtr[i];
-		}
-		pointer[j] = 0;
-
-		// Play speech
-		_sound->playBundleSound(pointer, &_sound->_talkChannelHandle);
-
-		_messagePtr = _transText;
-	}
-
 	setStringVars(0);
 	actorTalk();
 }
@@ -3092,25 +3075,8 @@
 		_string[m].no_talk_anim = true;
 		break;
 	case 75:
-		_messagePtr = _scriptPointer;
+		_messagePtr = translateTextAndPlaySpeech(_scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer)+ 1;
-
-		if ((_messagePtr[0] == '/') && (_gameId == GID_DIG)) {
-			char pointer[20];
-			int i, j;
-
-			translateText(_messagePtr, _transText);
-			for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
-				if (_messagePtr[i] != '/')
-					pointer[j++] = _messagePtr[i];
-			}
-			pointer[j] = 0;
-
-			// Play speech
-			_sound->playBundleSound(pointer, &_sound->_talkChannelHandle);
-
-			_messagePtr = _transText;
-		}
 
 		switch (m) {
 		case 0:

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.185
retrieving revision 2.186
diff -u -d -r2.185 -r2.186
--- script_v8.cpp	14 Jul 2003 22:21:11 -0000	2.185
+++ script_v8.cpp	15 Jul 2003 21:30:53 -0000	2.186
@@ -499,26 +499,9 @@
 		_string[m].no_talk_anim = true;
 		break;
 	case 0xD1:
-		_messagePtr = _scriptPointer;
+		_messagePtr = translateTextAndPlaySpeech(_scriptPointer);
 		_scriptPointer += resStrLen(_scriptPointer)+ 1;
 
-		if (_messagePtr[0] == '/') {
-			char pointer[20];
-			int i, j;
-
-			translateText(_messagePtr, _transText);
-			for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
-				if (_messagePtr[i] != '/')
-					pointer[j++] = _messagePtr[i];
-			}
-			pointer[j] = 0;
-
-			// Play speech
-			_sound->playBundleSound(pointer, &_sound->_talkChannelHandle);
-
-			_messagePtr = _transText;
-		}
-		
 		switch (m) {
 		case 0:
 			actorTalk();

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.268
retrieving revision 1.269
diff -u -d -r1.268 -r1.269
--- scumm.h	14 Jul 2003 06:44:47 -0000	1.268
+++ scumm.h	15 Jul 2003 21:30:53 -0000	1.269
@@ -1096,6 +1096,7 @@
 	byte _transText[500];
 
 	void loadLanguageBundle();
+	const byte *translateTextAndPlaySpeech(const byte *ptr);
 public:
 	void translateText(const byte *text, byte *trans_buff);	// Used by class ScummDialog
 

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.147
retrieving revision 1.148
diff -u -d -r1.147 -r1.148
--- string.cpp	14 Jul 2003 21:37:45 -0000	1.147
+++ string.cpp	15 Jul 2003 21:30:53 -0000	1.148
@@ -582,26 +582,9 @@
 	if (num) {
 		for (k = 1; k < _maxVerbs; k++) {
 			if (num == _verbs[k].verbid && !_verbs[k].type && !_verbs[k].saveid) {
-				byte *ptr = getResourceAddress(rtVerb, k);
-				if ((_version == 8) && (ptr[0] == '/')) {
-					char pointer[20];
-					int i, j;
-
-					translateText(ptr, _transText);
-
-					for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) {
-							if (ptr[i] != '/')
-							pointer[j++] = ptr[i];
-					}
-					pointer[j] = 0;
-
-					// Play speech
-					_sound->playBundleSound(pointer, &_sound->_talkChannelHandle);
-
-					addMessageToStack(_transText);
-				} else {
-					addMessageToStack(ptr);
-				}
+				const byte *ptr = getResourceAddress(rtVerb, k);
+				ptr = translateTextAndPlaySpeech(ptr);
+				addMessageToStack(ptr);
 				break;
 			}
 		}
@@ -620,16 +603,7 @@
 		ptr = getObjOrActorName(num);
 	if (ptr) {
 		if ((_version == 8) && (ptr[0] == '/')) {
-			char pointer[20];
-			int i, j;
-
 			translateText(ptr, _transText);
-			for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) {
-				if (ptr[i] != '/')
-					pointer[j++] = ptr[i];
-			}
-			pointer[j] = 0;
-
 			addMessageToStack(_transText);
 		} else {
 			addMessageToStack(ptr);
@@ -640,7 +614,7 @@
 }
 
 void Scumm::addStringToStack(int var) {
-	byte *ptr;
+	const byte *ptr;
 
 	if (_version == 3 || _version >= 6)
 		var = readVar(var);
@@ -649,17 +623,7 @@
 		ptr = getStringAddress(var);
 		if (ptr) {
 			if ((_version == 8) && (ptr[0] == '/')) {
-				char pointer[20];
-				int i, j;
-
 				translateText(ptr, _transText);
-
-				for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) {
-						if (ptr[i] != '/')
-								pointer[j++] = ptr[i];
-				}
-				pointer[j] = 0;
-
 				addMessageToStack(_transText);
 			} else {
 				addMessageToStack(ptr);
@@ -906,6 +870,26 @@
 	// Sort the index nodes. We'll later use bsearch on it, which is just as efficient
 	// as using a binary tree, speed wise.
 	qsort(_languageIndex, _languageIndexSize, sizeof(LangIndexNode), indexCompare);
+}
+
+const byte *Scumm::translateTextAndPlaySpeech(const byte *ptr) {
+	if ((_gameId == GID_DIG || _gameId == GID_CMI) && (ptr[0] == '/')) {
+		char pointer[20];
+		int i, j;
+
+		translateText(ptr, _transText);
+		for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) {
+			if (ptr[i] != '/')
+				pointer[j++] = ptr[i];
+		}
+		pointer[j] = 0;
+
+		// Play speech
+		_sound->playBundleSound(pointer, &_sound->_talkChannelHandle);
+
+		ptr = _transText;
+	}
+	return ptr;
 }
 
 void Scumm::translateText(const byte *text, byte *trans_buff) {

Index: verbs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/verbs.cpp,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- verbs.cpp	14 Jul 2003 09:30:29 -0000	1.68
+++ verbs.cpp	15 Jul 2003 21:30:53 -0000	1.69
@@ -437,16 +437,7 @@
 		assert(_messagePtr);
 
 		if ((_version == 8) && (_messagePtr[0] == '/')) {
-			char pointer[20];
-			int i, j;
-
 			translateText(_messagePtr, _transText);
-
-			for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
-				if (_messagePtr[i] != '/')
-					pointer[j++] = _messagePtr[i];
-			}
-			pointer[j] = 0;
 			_messagePtr = _transText;
 		}
 





More information about the Scummvm-git-logs mailing list