[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