From 2f85714c605dfbe722d7e2b3d797aebd7808f3e1 Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Tue, 13 Jan 2004 14:43:13 +0000 Subject: - wrong sentence was spoken when Joe was trying to 'pick up' a person - clear command before switching rooms - clear texts at the end of cutaway (fix minor glitch in interview intro) svn-id: r12361 --- queen/command.cpp | 5 +++-- queen/cutaway.cpp | 3 +++ queen/display.cpp | 2 +- queen/queen.cpp | 1 - 4 files changed, 7 insertions(+), 4 deletions(-) (limited to 'queen') diff --git a/queen/command.cpp b/queen/command.cpp index 8d4759e96c..67e43d237f 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -95,11 +95,11 @@ void CmdState::init() { Command::Command(QueenEngine *vm) : _vm(vm) { - _cmdText._vm = vm; } void Command::clear(bool clearTexts) { + debug(6, "Command::clear(%d)", clearTexts); _cmdText.clear(); if (clearTexts) { _vm->display()->clearTexts(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); @@ -152,6 +152,7 @@ void Command::executeCurrentAction() { if (comMax == 0) { sayInvalidAction(_state.selAction, _state.subject[0], _state.subject[1]); + clear(true); cleanupCurrentAction(); return; } @@ -852,7 +853,7 @@ void Command::sayInvalidAction(Verb action, int16 subj1, int16 subj2) { if (subj1 < 0) { _vm->logic()->makeJoeSpeak(14); } else { - int16 img = _vm->logic()->objectData(subj2)->image; + int16 img = _vm->logic()->objectData(subj1)->image; if (img == -4 || img == -3) { // Trying to get a person _vm->logic()->makeJoeSpeak(20); diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index b9aa46b1a0..78d301d5ef 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -965,6 +965,9 @@ void Cutaway::run(char *nextFilename) { } } // for() + + _vm->display()->clearTexts(0, 198); + // XXX lines 1887-1895 in cutaway.c stop(); diff --git a/queen/display.cpp b/queen/display.cpp index e809f6ce87..c3b70dc220 100644 --- a/queen/display.cpp +++ b/queen/display.cpp @@ -749,7 +749,7 @@ void Display::horizontalScroll(int16 scroll) { } void Display::setDirtyBlock(uint16 x, uint16 y, uint16 w, uint16 h) { - if (!_fullRefresh) { + if (_fullRefresh < 2) { uint16 ex = (x + w - 1) / D_BLOCK_W; uint16 ey = (y + h - 1) / D_BLOCK_H; x /= D_BLOCK_W; diff --git a/queen/queen.cpp b/queen/queen.cpp index 82cc858956..61cae4e2e4 100644 --- a/queen/queen.cpp +++ b/queen/queen.cpp @@ -316,7 +316,6 @@ void QueenEngine::go() { for (;;) { // queen.c lines 4080-4104 if (_logic->newRoom() > 0) { - _display->clearTexts(151, 151); _logic->update(); _logic->oldRoom(_logic->currentRoom()); _logic->currentRoom(_logic->newRoom()); -- cgit v1.2.3