[Scummvm-cvs-logs] SF.net SVN: scummvm: [26199] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sun Mar 18 11:20:42 CET 2007


Revision: 26199
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26199&view=rev
Author:   peres001
Date:     2007-03-18 03:20:38 -0700 (Sun, 18 Mar 2007)

Log Message:
-----------
Made loadTalk return a new Cnv instead of accepting a parameter.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/dialogue.cpp
    scummvm/trunk/engines/parallaction/disk.cpp
    scummvm/trunk/engines/parallaction/disk.h
    scummvm/trunk/engines/parallaction/parallaction.cpp
    scummvm/trunk/engines/parallaction/parallaction.h
    scummvm/trunk/engines/parallaction/zone.cpp

Modified: scummvm/trunk/engines/parallaction/dialogue.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/dialogue.cpp	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/dialogue.cpp	2007-03-18 10:20:38 UTC (rev 26199)
@@ -219,7 +219,7 @@
 }
 
 
-uint16 askDialoguePassword(Dialogue *v60, StaticCnv *v48) {
+uint16 askDialoguePassword(Dialogue *q, StaticCnv *face) {
 	debugC(1, kDebugDialogue, "checkDialoguePassword()");
 
 	char password[100];
@@ -233,8 +233,8 @@
 		r.moveTo(_answerBalloonX[0], _answerBalloonY[0]);
 
 		_vm->_gfx->drawBalloon(r, 1);
-		_vm->_gfx->displayWrappedString(v60->_answers[0], _answerBalloonX[0], _answerBalloonY[0], MAX_BALLOON_WIDTH, 3);
-		_vm->_gfx->flatBlitCnv(v48, ANSWER_CHARACTER_X, ANSWER_CHARACTER_Y,	Gfx::kBitFront);
+		_vm->_gfx->displayWrappedString(q->_answers[0], _answerBalloonX[0], _answerBalloonY[0], MAX_BALLOON_WIDTH, 3);
+		_vm->_gfx->flatBlitCnv(face, ANSWER_CHARACTER_X, ANSWER_CHARACTER_Y,	Gfx::kBitFront);
 		_vm->_gfx->displayBalloonString(_answerBalloonX[0] + 5,	_answerBalloonY[0] + _answerBalloonH[0] - 15, "> ", 0);
 
 		Common::Event e;
@@ -350,19 +350,19 @@
 	return;
 }
 
-uint16 getDialogueAnswer(Dialogue *v60, StaticCnv *v48) {
+uint16 getDialogueAnswer(Dialogue *q, StaticCnv *face) {
 
 	uint16 answer = 0;
 
-	debugC(1, kDebugDialogue, "runDialogue: showing answering face (%p)", (const void*)v48->_data0);
-	_vm->_gfx->flatBlitCnv(v48, ANSWER_CHARACTER_X, ANSWER_CHARACTER_Y, Gfx::kBitFront);
+	debugC(1, kDebugDialogue, "runDialogue: showing answering face (%p)", (const void*)face->_data0);
+	_vm->_gfx->flatBlitCnv(face, ANSWER_CHARACTER_X, ANSWER_CHARACTER_Y, Gfx::kBitFront);
 	debugC(1, kDebugDialogue, "runDialogue: answering face shown");
 
 	if (_askPassword == false) {
 		debugC(1, kDebugDialogue, "runDialogue: waiting for user to select answer");
-		answer = selectAnswer(v60, v48);
+		answer = selectAnswer(q, face);
 	} else {
-		answer = askDialoguePassword(v60, v48);
+		answer = askDialoguePassword(q, face);
 	}
 
 	_vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);	// erase answer screen
@@ -380,69 +380,70 @@
 
 	_vm->_gfx->setFont("comic");
 
-	Cnv v6E;
+	Cnv* v6E;
 
 	if (!scumm_stricmp(data->_name, "yourself") || data->_name[0] == '\0') {
-		memcpy(&v6E, &_vm->_char._talk, sizeof(Cnv));
+		v6E = _vm->_char._talk;
 		debugC(1, kDebugDialogue, "runDialogue: using default character head");
 	} else {
 		debugC(1, kDebugDialogue, "runDialogue: loading 2nd character head '%s'", _vm->_characterName);
-		_vm->_disk->loadTalk(data->_name, &v6E);
+		v6E = _vm->_disk->loadTalk(data->_name);
 		debugC(1, kDebugDialogue, "runDialogue: 2nd character head loaded");
 	}
 
 	StaticCnv questioner;
-	questioner._width = v6E._width;
-	questioner._height = v6E._height;
+	questioner._width = v6E->_width;
+	questioner._height = v6E->_height;
 
 	StaticCnv answerer;
-	answerer._width = _vm->_char._talk._width;
-	answerer._height = _vm->_char._talk._height;
+	answerer._width = _vm->_char._talk->_width;
+	answerer._height = _vm->_char._talk->_height;
 
 	bool displayedAnswers = false;
 	_askPassword = false;
 	uint16 answer = 0;
 	Command *v34 = NULL;
 
-	Dialogue *v60 = data->_dialogue;
-	while (v60) {
+	Dialogue *q = data->_dialogue;
+	while (q) {
 
-		questioner._data0 = v6E._array[v60->_mood & 0xF];
+		questioner._data0 = v6E->_array[q->_mood & 0xF];
 		questioner._data1 = NULL; // v6E.field_8[v60->_mood & 0xF];
-		answerer._data0 = _vm->_char._talk._array[0];
+		answerer._data0 = _vm->_char._talk->_array[0];
 		answerer._data1 = NULL; // _talk.field_8[0];
 
-		displayQuestion(v60, &questioner);
+		displayQuestion(q, &questioner);
 
-		if (v60->_answers[0] == NULL) break;
+		if (q->_answers[0] == NULL) break;
 
 		_answerBalloonY[0] = 10;
 		displayedAnswers = false;
 
-		if (scumm_stricmp(v60->_answers[0], "NULL")) {
+		if (scumm_stricmp(q->_answers[0], "NULL")) {
 
-			displayedAnswers = displayAnswers(v60);
+			displayedAnswers = displayAnswers(q);
 
 			if (displayedAnswers == true) {
-				answer = getDialogueAnswer(v60, &answerer);
-				v34 = v60->_commands[answer];
-				v60 = (Dialogue*)v60->_following._questions[answer];
+				answer = getDialogueAnswer(q, &answerer);
+				v34 = q->_commands[answer];
+				q = (Dialogue*)q->_following._questions[answer];
 			} else {
 				debugC(1, kDebugDialogue, "runDialogue: no suitable answers found");
-				v60 = NULL;
+				q = NULL;
 			}
 		} else {
-			v60 = (Dialogue*)v60->_following._questions[answer];
+			q = (Dialogue*)q->_following._questions[answer];
 		}
 	}
 
 	debugC(1, kDebugDialogue, "runDialogue: out of dialogue loop");
 	_vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
 
-	if (scumm_stricmp(data->_name, "yourself") || data->_name[0] == '\0')
-		_vm->_gfx->freeCnv(&v6E);
+	if (scumm_stricmp(data->_name, "yourself") || data->_name[0] == '\0') {
+		_vm->_gfx->freeCnv(v6E);
+		delete v6E;
+	}
 
-
 	exitDialogue();
 	debugC(1, kDebugDialogue, "runDialogue: exit dialogue ok");
 
@@ -472,8 +473,8 @@
 
 	if (numAvailableAnswers == 1) {
 		_vm->_gfx->displayWrappedString(q->_answers[_di], _answerBalloonX[_di], _answerBalloonY[_di], MAX_BALLOON_WIDTH, 0);
-		cnv->_data0 = _vm->_char._talk._array[q->_answer_moods[_di] & 0xF];
-//		cnv->_data1 = _vm->_char._talk.field_8[q->_answer_moods[_di] & 0xF];
+		cnv->_data0 = _vm->_char._talk->_array[q->_answer_moods[_di] & 0xF];
+//		cnv->_data1 = _vm->_char._talk->field_8[q->_answer_moods[_di] & 0xF];
 		_vm->_gfx->flatBlitCnv(cnv, ANSWER_CHARACTER_X,	ANSWER_CHARACTER_Y, Gfx::kBitFront);
 		waitUntilLeftClick();
 		return _di;
@@ -492,8 +493,8 @@
 				_vm->_gfx->displayWrappedString(q->_answers[v2], _answerBalloonX[v2], _answerBalloonY[v2], MAX_BALLOON_WIDTH, 3);
 
 			_vm->_gfx->displayWrappedString(q->_answers[_si], _answerBalloonX[_si],	_answerBalloonY[_si], MAX_BALLOON_WIDTH, 0);
-			cnv->_data0 = _vm->_char._talk._array[q->_answer_moods[_si] & 0xF];
-//			cnv->_data1 = _vm->_char._talk.field_8[q->_answer_moods[_si] & 0xF];
+			cnv->_data0 = _vm->_char._talk->_array[q->_answer_moods[_si] & 0xF];
+//			cnv->_data1 = _vm->_char._talk->field_8[q->_answer_moods[_si] & 0xF];
 			_vm->_gfx->flatBlitCnv(cnv, ANSWER_CHARACTER_X, ANSWER_CHARACTER_Y, Gfx::kBitFront);
 		}
 

Modified: scummvm/trunk/engines/parallaction/disk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk.cpp	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/disk.cpp	2007-03-18 10:20:38 UTC (rev 26199)
@@ -197,8 +197,10 @@
 	return;
 }
 
-void Disk::loadTalk(const char *name, Cnv *cnv) {
+Cnv* Disk::loadTalk(const char *name) {
 
+	Cnv *cnv = new Cnv;
+
 	const char *ext = strstr(name, ".talk");
 	if (ext != NULL) {
 		// npc talk
@@ -228,6 +230,7 @@
 
 	}
 
+	return cnv;
 }
 
 Script* Disk::loadLocation(const char *name) {

Modified: scummvm/trunk/engines/parallaction/disk.h
===================================================================
--- scummvm/trunk/engines/parallaction/disk.h	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/disk.h	2007-03-18 10:20:38 UTC (rev 26199)
@@ -105,7 +105,7 @@
 
 	Script* loadLocation(const char *name);
 	Script* loadScript(const char* name);
-	void loadTalk(const char *name, Cnv *cnv);
+	Cnv* loadTalk(const char *name);
 	void loadObjects(const char *name, Cnv *cnv);
 	void loadPointer(StaticCnv* cnv);
 	void loadHead(const char* name, StaticCnv* cnv);

Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp	2007-03-18 10:20:38 UTC (rev 26199)
@@ -725,7 +725,9 @@
 	if (!IS_DUMMY_CHARACTER(_vm->_characterName)) {
 		_vm->_gfx->freeCnv(&_vm->_char._miniFrames);
 		_vm->freeTable(_objectsNames);
-		_vm->_gfx->freeCnv(&_vm->_char._talk);
+		_vm->_gfx->freeCnv(_vm->_char._talk);
+		if (_vm->_char._talk) delete _vm->_char._talk;
+
 		_vm->_gfx->freeStaticCnv(&_vm->_char._head);
 		_vm->_gfx->freeCnv(&_vm->_char._objs);
 	}
@@ -805,7 +807,7 @@
 
 		if (!IS_DUMMY_CHARACTER(name)) {
 			_disk->loadHead(path, &_vm->_char._head);
-			_disk->loadTalk(path, &_vm->_char._talk);
+			_vm->_char._talk = _disk->loadTalk(path);
 			_disk->loadObjects(name, &_vm->_char._objs);
 
 			sprintf(path, "mini%s", v32);

Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/parallaction.h	2007-03-18 10:20:38 UTC (rev 26199)
@@ -237,16 +237,17 @@
 struct Character {
 	Animation		_ani;
 	StaticCnv		_head;
-	Cnv		    	_talk;
+	Cnv		    	*_talk;
 	Cnv 			_normalFrames;
 	Cnv				_miniFrames;
 	Cnv 			_objs;
 
 	Character() {
-		_talk._width = 0;
-		_talk._height = 0;
-		_talk._count = 0;
-		_talk._array = NULL;
+		_talk = NULL;
+//		._width = 0;
+//		_talk._height = 0;
+//		_talk._count = 0;
+//		_talk._array = NULL;
 
 		_head._width = 0;
 		_head._height = 0;

Modified: scummvm/trunk/engines/parallaction/zone.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/zone.cpp	2007-03-18 09:35:48 UTC (rev 26198)
+++ scummvm/trunk/engines/parallaction/zone.cpp	2007-03-18 10:20:38 UTC (rev 26199)
@@ -366,10 +366,10 @@
 	if (data->_description == NULL) return;
 
 	StaticCnv v3C;
-	v3C._width = _vm->_char._talk._width;
-	v3C._height = _vm->_char._talk._height;
-	v3C._data0 = _vm->_char._talk._array[0];
-	v3C._data1 = NULL; //_talk.field_8[0];
+	v3C._width = _vm->_char._talk->_width;
+	v3C._height = _vm->_char._talk->_height;
+	v3C._data0 = _vm->_char._talk->_array[0];
+	v3C._data1 = NULL; //_talk->field_8[0];
 
 	_vm->_gfx->setFont("comic");
 	_vm->_gfx->flatBlitCnv(&v3C, 190, 80, Gfx::kBitFront);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list