aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/scummvm.cpp6
-rw-r--r--scumm/verbs.cpp17
2 files changed, 13 insertions, 10 deletions
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 39c44ab7e0..a8d707f728 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -633,8 +633,9 @@ load_game:
processDrawQue();
- if (_verbRedraw)
+ if (_verbRedraw) {
redrawVerbs();
+ }
setActorRedrawFlags(true, true);
resetActorBgs();
@@ -656,9 +657,10 @@ load_game:
clearClickedStatus();
}
- if (_cursor.state > 0) {
+ if (!_verbRedraw && _cursor.state > 0) {
verbMouseOver(checkMouseOver(mouse.x, mouse.y));
}
+ _verbRedraw = false;
drawBlastObjects();
if (_features & GF_AFTER_V8)
diff --git a/scumm/verbs.cpp b/scumm/verbs.cpp
index 2728bc0c7f..8bac4b8533 100644
--- a/scumm/verbs.cpp
+++ b/scumm/verbs.cpp
@@ -29,10 +29,14 @@
void Scumm::redrawVerbs() {
int i;
- for (i = 0; i < _maxVerbs; i++)
- drawVerb(i, 0);
- verbMouseOver(0);
- _verbRedraw = false;
+ int verb = checkMouseOver(mouse.x, mouse.y);
+ for (i = _maxVerbs-1; i >= 0; i--) {
+ if (i == verb && _verbs[verb].hicolor)
+ drawVerb(i, 1);
+ else
+ drawVerb(i, 0);
+ }
+ _verbMouseOver = verb;
}
void Scumm::checkExecVerbs() {
@@ -127,10 +131,7 @@ void Scumm::drawVerb(int verb, int mode) {
return;
}
- // FIXME: Commenting this out fixes some drawing glitches,
- // but TOTALLY screws up scrolling conversation items.
- //if (_gameId != GID_CMI)
- restoreVerbBG(verb);
+ restoreVerbBG(verb);
_string[4].charset = vs->charset_nr;
_string[4].xpos = vs->x;