aboutsummaryrefslogtreecommitdiff
path: root/queen
diff options
context:
space:
mode:
authorGregory Montoir2003-11-20 09:38:54 +0000
committerGregory Montoir2003-11-20 09:38:54 +0000
commit5c04293c93daf1e30a0c88a0802f64f9a51a5e36 (patch)
treefcfe834458561c9e8b7801aec0e55a7f0f33525a /queen
parent4d4ba9ea558dafd67e198065b8fe7b05dfc6acfa (diff)
downloadscummvm-rg350-5c04293c93daf1e30a0c88a0802f64f9a51a5e36.tar.gz
scummvm-rg350-5c04293c93daf1e30a0c88a0802f64f9a51a5e36.tar.bz2
scummvm-rg350-5c04293c93daf1e30a0c88a0802f64f9a51a5e36.zip
fix 'gorilla becoming invisible' issue (this was due to the missing CLEAR_COMMAND call in SPEAK/TALK ; for now, added a Command::clear before each 'sensible' Talk::* call)
svn-id: r11352
Diffstat (limited to 'queen')
-rw-r--r--queen/command.cpp2
-rw-r--r--queen/logic.cpp8
2 files changed, 10 insertions, 0 deletions
diff --git a/queen/command.cpp b/queen/command.cpp
index 347211303e..1c97da9520 100644
--- a/queen/command.cpp
+++ b/queen/command.cpp
@@ -1295,6 +1295,8 @@ void Command::setObjects(uint16 command) {
uint16 dstObj = ABS(cmdObj->dstObj);
ObjectData *objData = _logic->objectData(dstObj);
+ debug(0, "Command::setObjects() - dstObj=%X srcObj=%X", cmdObj->dstObj, cmdObj->srcObj);
+
if (cmdObj->dstObj > 0) {
// show the object
objData->name = ABS(objData->name);
diff --git a/queen/logic.cpp b/queen/logic.cpp
index a6ba7565a1..985aee92d8 100644
--- a/queen/logic.cpp
+++ b/queen/logic.cpp
@@ -1341,6 +1341,12 @@ uint16 Logic::personSetup(uint16 noun, uint16 curImage) {
// person is not standing in the area box, scale it accordingly
scale = currentRoomArea(a)->calcScale(pad->y);
}
+
+ if (noun == 0) {
+ warning("Trying to setup person 0");
+ return curImage;
+ }
+
_graphics->bankUnpack(pad->bobFrameStanding, p.bobFrame, p.bankNum);
bool xflip = false;
uint16 person = _roomData[_currentRoom] + noun;
@@ -1851,6 +1857,7 @@ void Logic::dialogue(const char *dlgFile, int personInRoom, char *cutaway) {
cutaway = cutawayFile;
}
_display->fullscreen(true);
+ _cmd->clear(false);
Talk::talk(dlgFile, personInRoom, cutaway, _graphics, _input, this, _resource, _sound);
_display->fullscreen(false);
}
@@ -1874,6 +1881,7 @@ void Logic::joeSpeak(uint16 descNum, bool objectType) {
if (objectType) {
descNum += JOE_RESPONSE_MAX;
}
+ _cmd->clear(false);
char descFilePrefix[10];
sprintf(descFilePrefix, "JOE%04i", descNum);
Talk::speak(text, NULL, descFilePrefix, _graphics, _input, this, _resource, _sound);