[Scummvm-cvs-logs] CVS: scummvm/scumm script_v2.cpp,1.11,1.12 scumm.h,1.20,1.21 scummvm.cpp,1.22,1.23 string.cpp,1.14,1.15

Pawe? Ko?odziejski aquadran at users.sourceforge.net
Tue Sep 17 08:34:05 CEST 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv30581

Modified Files:
	script_v2.cpp scumm.h scummvm.cpp string.cpp 
Log Message:
added support for nonenglish the dig(dialogs, descriptions, warnings), not gui yet

Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- script_v2.cpp	15 Sep 2002 20:16:25 -0000	1.11
+++ script_v2.cpp	17 Sep 2002 15:33:31 -0000	1.12
@@ -2534,17 +2534,19 @@
 	_actorToPrintStrFor = pop();
 	_messagePtr = _scriptPointer;
 
-	if (_scriptPointer[0] == '/') {
-		char *pointer = strtok((char *)_scriptPointer, "/");
-		int bunsize = strlen(pointer) + 2;
+	if ((_gameId == GID_DIG) && (_messagePtr[0] == '/')) {
+		_scriptPointer += strlen((char*)_scriptPointer) + 1;
+		translateText((char*)_messagePtr, (char*)&transText);
+		char *pointer = strtok((char *)_messagePtr, "/");
 		_sound->playBundleSound(pointer);
-		_scriptPointer += bunsize;
-		_messagePtr = _scriptPointer;
+		_messagePtr = (byte*)&transText;
+		setStringVars(0);
+		actorTalk();
+	} else {
+		setStringVars(0);
+		actorTalk();
+		_scriptPointer = _messagePtr;
 	}
-
-	setStringVars(0);
-	actorTalk();
-	_scriptPointer = _messagePtr;
 }
 
 void Scumm::o6_talkEgo()
@@ -2552,17 +2554,19 @@
 	_actorToPrintStrFor = (unsigned char)_vars[VAR_EGO];
 	_messagePtr = _scriptPointer;
 
-	if (_scriptPointer[0] == '/') {
-		char *pointer = strtok((char *)_scriptPointer, "/");
-		int bunsize = strlen(pointer) + 2;
+	if ((_gameId == GID_DIG) && (_messagePtr[0] == '/')) {
+		_scriptPointer += strlen((char*)_scriptPointer) + 1;
+		translateText((char*)_messagePtr, (char*)&transText);
+		char *pointer = strtok((char *)_messagePtr, "/");
 		_sound->playBundleSound(pointer);
-		_scriptPointer += bunsize;
-		_messagePtr = _scriptPointer;
+		_messagePtr = (byte*)&transText;
+		setStringVars(0);
+		actorTalk();
+	} else {
+		setStringVars(0);
+		actorTalk();
+		_scriptPointer = _messagePtr;
 	}
-
-	setStringVars(0);
-	actorTalk();
-	_scriptPointer = _messagePtr;
 }
 
 void Scumm::o6_dim()
@@ -2743,16 +2747,17 @@
 			break;
 		case 16:
 			if (_gameId == GID_DIG) {
-				_msgPtrToAdd = charset._buffer;
+				byte buf[200];
+				_msgPtrToAdd = buf;
+				setStringVars(0);
 				addMessageToStack(getStringAddressVar(VAR_STRING2DRAW));
-				i = 0;
-				while (charset._buffer[i] != 0) {
-					if (charset._buffer[i] == '/') {
-						charset._bufPos = i + 1;
-					}
-					i++;
+				if (strncmp("/SYSTEM.007/ /", (char*)&buf, 14) == 0) {
+					translateText((char*)&buf + 13, (char*)&charset._buffer);
+					description();
+				}	else if (strncmp("/SYSTEM.007/ ", (char*)&buf, 13) == 0) {
+					strcpy((char*)&charset._buffer, (char*)&buf + 13);
+					description();
 				}
-				description();
 			}
 			break;
 		case 17:
@@ -3076,30 +3081,43 @@
 	case 75:{
 			_messagePtr = _scriptPointer;
 
-			if (_scriptPointer[0] == '/') {
-				char *pointer = strtok((char *)_scriptPointer, "/");
-				int bunsize = strlen(pointer) + 2;
-				_sound->playBundleSound(pointer);
-				_scriptPointer += bunsize;
-				_messagePtr = _scriptPointer;
-			}
-
-			switch (m) {
-			case 0:
-				actorTalk();
-				break;
-			case 1:
-				drawString(1);
-				break;
-			case 2:
-				unkMessage1();
-				break;
-			case 3:
-				unkMessage2();
-				break;
+			if ((_messagePtr[0] == '/') && (_gameId == GID_DIG)) {
+				translateText((char*)_messagePtr, (char*)&transText);
+				_messagePtr = (byte*)&transText;
+				_scriptPointer += strlen((char*)_scriptPointer) + 1;
+				switch (m) {
+				case 0:
+					actorTalk();
+					break;
+				case 1:
+					drawString(1);
+					break;
+				case 2:
+					unkMessage1();
+					break;
+				case 3:
+					unkMessage2();
+					break;
+				}
+				return;
+			} else {
+				switch (m) {
+				case 0:
+					actorTalk();
+					break;
+				case 1:
+					drawString(1);
+					break;
+				case 2:
+					unkMessage1();
+					break;
+				case 3:
+					unkMessage2();
+					break;
+				}
+				_scriptPointer = _messagePtr;
+				return;
 			}
-			_scriptPointer = _messagePtr;
-			return;
 		}
 	case 0xFE:
 		setStringVars(m);

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- scumm.h	17 Sep 2002 12:52:53 -0000	1.20
+++ scumm.h	17 Sep 2002 15:33:31 -0000	1.21
@@ -933,6 +933,7 @@
 	char *_languageBuffer;
 	void loadLanguageBundle();
 	void translateText(char * text, char * trans_buff);
+	char transText[200];
 
 	bool checkFixedDisk();
 	int _cdrom;

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- scummvm.cpp	17 Sep 2002 12:52:53 -0000	1.22
+++ scummvm.cpp	17 Sep 2002 15:33:31 -0000	1.23
@@ -150,6 +150,7 @@
 		_saveLoadFlag = 2;
 		_saveLoadCompatible = false;
 	}
+	loadLanguageBundle();
 }
 
 Scumm::~Scumm ()
@@ -300,7 +301,6 @@
 #endif
 
 	_timer->installProcedure(&autosave, 5 * 60 * 1000);
-	loadLanguageBundle();
 }
 
 

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- string.cpp	17 Sep 2002 09:18:47 -0000	1.14
+++ string.cpp	17 Sep 2002 15:33:31 -0000	1.15
@@ -474,7 +474,8 @@
 	int c;
 	byte *buffer;
 
-	buffer = charset._buffer + charset._bufPos;
+	buffer = charset._buffer;
+	charset._bufPos = 0;
 	string[0].ypos = camera._cur.y + 88;
 	string[0].xpos = (_realWidth / 2) - (charset.getStringWidth(0, buffer, 0) >> 1);
 	if (string[0].xpos < 0)
@@ -1096,7 +1097,7 @@
 }
 
 void Scumm::translateText(char * text, char * trans_buff) {
-	if ((_existLanguageFile == true) && (text[0] == '/')) {
+	if ((_existLanguageFile == true) && (text[0] == '/') && (text[1] != ' ')) {
 		char name[20], tmp[20], tmp2[20], num_s[20];
 		int32 num, l, j, k, r, pos;
 		char enc;
@@ -1176,10 +1177,14 @@
 	}
 
 	if (text[0] == '/') {
-		char *pointer = strtok((char*)text, "/");
-		int offset = strlen(pointer) + 2;
-		strcpy (trans_buff, text + offset);
+		char *pointer = strchr((char*)text + 1, '/');
+		if (pointer != NULL)
+			strcpy(trans_buff, pointer + 1);
+		else
+			strcpy(trans_buff, "");
+
+		return;
 	}
-	strcpy (trans_buff, text);
+	strcpy(trans_buff, text);
 }
 





More information about the Scummvm-git-logs mailing list