[Scummvm-cvs-logs] CVS: scummvm/queen talk.h,1.1,1.2 talk.cpp,1.1,1.2

David Eriksson twogood at users.sourceforge.net
Mon Oct 6 23:57:02 CEST 2003


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv663

Modified Files:
	talk.h talk.cpp 
Log Message:
- Added a debug stub for the selectSentence method
- Added final talk for person Joe is talking to


Index: talk.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/talk.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- talk.h	7 Oct 2003 03:58:44 -0000	1.1
+++ talk.h	7 Oct 2003 06:56:29 -0000	1.2
@@ -115,6 +115,7 @@
 		int _oldSelectedSentenceIndex;
 		int _oldSelectedSentenceValue;
 
+		char _talkString[5][MAX_STRING_SIZE];
 
 		Talk(Logic *logic, Resource *resource);
 		~Talk();
@@ -140,6 +141,8 @@
 		//! The sentence will not be displayed again
 		void disableSentence(int oldLevel, int selectedSentence);
 
+		//! Select what to say
+		int16 selectSentence();
 
 };
 

Index: talk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/talk.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- talk.cpp	7 Oct 2003 03:58:44 -0000	1.1
+++ talk.cpp	7 Oct 2003 06:56:29 -0000	1.2
@@ -68,7 +68,7 @@
 
 	char personName[MAX_STRING_SIZE];
 	// XXX SET_PERSON_DATA(N,NAMEstr,0);
-	int bobNum = 0; // XXX P_BNUM;
+	int bobNum = 1; // XXX P_BNUM;
 	// XXX strcpy(PERstr,P_NAMEstr);
 	personName[0] = '\0';
 
@@ -100,39 +100,39 @@
 	int16 level=1, retval=0, type=1;
 	int16 head = _dialogueTree[level][0].head;
 
+	// TODO: split this loop in several functions
 	while(retval != -1) {
 		debug(0, "retval = %i", retval);
 		
 		char otherVoiceFilePrefix    [MAX_STRING_SIZE];
 		char joeVoiceFilePrefix   [5][MAX_STRING_SIZE];
-		char talkString           [5][MAX_STRING_SIZE];
 
-		talkString[0][0] = '\0';
+		_talkString[0][0] = '\0';
 
 		if(talkSelected()->hasTalkedTo == 1 && head == 1)
-			strcpy(talkString[0], _person2String);
+			strcpy(_talkString[0], _person2String);
 		else
-			findDialogueString(_person1Ptr, head, talkString[0]);
+			findDialogueString(_person1Ptr, head, _talkString[0]);
 
 		if(talkSelected()->hasTalkedTo == 1 && head == 1)
 			sprintf(otherVoiceFilePrefix, "%2dXXXXP", _talkKey);
 		else
 			sprintf(otherVoiceFilePrefix, "%2d%4xP", _talkKey, head);
 
-		if (talkString[0][0] == '\0' && retval > 1) {
-			findDialogueString(_person1Ptr, retval, talkString[0]);
+		if (_talkString[0][0] == '\0' && retval > 1) {
+			findDialogueString(_person1Ptr, retval, _talkString[0]);
 			sprintf(otherVoiceFilePrefix,"%2d%4xP", _talkKey, retval);
 		}
 
 		// Joe dialogue
 
 		for (int i = 1; i <= 4; i++) {
-			findDialogueString(_joePtr, _dialogueTree[level][i].head, talkString[i]);
+			findDialogueString(_joePtr, _dialogueTree[level][i].head, _talkString[i]);
 
 			int16 index = _dialogueTree[level][i].gameStateIndex;
 
 			if (index < 0 && _logic->gameState(abs(index)) != _dialogueTree[level][i].gameStateValue)
-				talkString[i][0] = '\0';
+				_talkString[i][0] = '\0';
 
 			sprintf(joeVoiceFilePrefix[i], "%2d%4xJ", _talkKey, _dialogueTree[level][i].head);
 		}
@@ -145,7 +145,7 @@
 		int selectedSentence = 0;
 
 		for (int i = 1; i <= 4; i++) {
-			if (talkString[i][0] != '\0') {
+			if (_talkString[i][0] != '\0') {
 				choicesLeft++;
 				selectedSentence = i;
 			}
@@ -155,24 +155,23 @@
 
 		if (1 == choicesLeft) {
 			// Automatically run the final dialogue option
-			if (speak(talkString[0], personName, otherVoiceFilePrefix))
+			if (speak(_talkString[0], personName, otherVoiceFilePrefix))
 				personWalking = true;
 
 			if (_quit)
 				break;
 
-			speak(talkString[selectedSentence], personName, joeVoiceFilePrefix[selectedSentence]);
-
+			speak(_talkString[selectedSentence], personName, joeVoiceFilePrefix[selectedSentence]);
 		}
 		else {
-			// XXX if (bobNum > 0)
-			// XXX 	selectedSentence = bobTalk(personName);
-			for (int i = 1; i <= 4; i++) {
-				if (talkString[i][0] != '\0') {
-					selectedSentence = i;
-					break;
+			if (bobNum > 0) {
+				speak(_talkString[0], personName, otherVoiceFilePrefix);
+				selectedSentence = selectSentence();
+			}
+			else {
+				warning("bobBum is %i", bobNum);
+				selectedSentence = 0;
 			}
-		}
 		}
 
 		if (_quit)
@@ -237,9 +236,14 @@
 		// if(RETVAL = -1, then before we exit, check to see if(person
 		// has something final to say!
 
-
-		// XXX debug
-		//break;
+		if (-1 == retval) {
+			findDialogueString(_person1Ptr, head, _talkString[0]);
+			if (_talkString[0][0] != '\0') {
+				sprintf(otherVoiceFilePrefix, "%2d%4xP", _talkKey, head);
+				if (speak(_talkString[0], personName, otherVoiceFilePrefix))
+					personWalking = true;
+			}
+		}
 	}
 }
 		
@@ -269,7 +273,7 @@
 		int16 currentId = (int16)READ_BE_UINT16(ptr); ptr += 2;
 		if (id == currentId) {
 			ptr = getString(ptr, str, MAX_STRING_LENGTH, 4);
-			debug(0, "Found string with ID %i: '%s'", id, str);
+			//debug(0, "Found string with ID %i: '%s'", id, str);
 			break;
 		}
 		else
@@ -294,7 +298,7 @@
 
 	_levelMax = (int16)READ_BE_UINT16(ptr); ptr += 2;
 
-	debug(0, "levelMax = %i", _levelMax);
+	//debug(0, "levelMax = %i", _levelMax);
 
 	if (_levelMax < 0) {
 		_levelMax = -_levelMax;
@@ -314,8 +318,8 @@
 	int16 testValue2      = (int16)READ_BE_UINT16(ptr); ptr += 2;
 	int16 itemToInsert2   = (int16)READ_BE_UINT16(ptr); ptr += 2;
 
-	debug(0, "uniqueKey = %i", _uniqueKey);
-	debug(0, "talkKey   = %i", _talkKey);
+	//debug(0, "uniqueKey = %i", _uniqueKey);
+	//debug(0, "talkKey   = %i", _talkKey);
 
 	_person1Ptr      = _fileData + READ_BE_UINT16(ptr); ptr += 2;
 	byte *cutawayPtr = _fileData + READ_BE_UINT16(ptr); ptr += 2;
@@ -356,18 +360,18 @@
 	char joeString[MAX_STRING_SIZE];
 	if (hasString) {
 		ptr = getString(ptr, joeString, MAX_STRING_LENGTH);
-		debug(0, "joeString = '%s'", joeString);
+		//debug(0, "joeString = '%s'", joeString);
 	}
 	else
 		joeString[0] = '\0';
 
 	ptr = _person2Ptr;
 	ptr = getString(ptr, _person2String, MAX_STRING_LENGTH);
-	debug(0, "person2String = '%s'", _person2String);
+	//debug(0, "person2String = '%s'", _person2String);
 
 	char joe2String[MAX_STRING_SIZE];
 	ptr = getString(ptr, joe2String, MAX_STRING_LENGTH);
-	debug(0, "joe2String = '%s'", joe2String);
+	//debug(0, "joe2String = '%s'", joe2String);
 
 	if (talkSelected()->hasTalkedTo == 0) {
 		
@@ -423,6 +427,24 @@
 
 Talk::TalkSelected *Talk::talkSelected() {
 	return _talkSelected + _uniqueKey;
+}
+
+int16 Talk::selectSentence() {
+	int selectedSentence = 0;
+
+	debug(0, "----- Select a sentence of these -----");
+
+	for (int i = 1; i <= 4; i++) {
+		if (_talkString[i][0] != '\0') {
+			debug(0, "%i: %s", i, _talkString[i]);
+			if (!selectedSentence)		// XXX debug
+				selectedSentence = i;		// XXX debug
+		}
+	}
+				
+	debug(0, "Selected sentence %i", selectedSentence);
+	
+	return selectedSentence;
 }
 
 } // End of namespace Queen





More information about the Scummvm-git-logs mailing list