[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