diff options
-rw-r--r-- | scumm/scummvm.cpp | 6 | ||||
-rw-r--r-- | scumm/verbs.cpp | 17 |
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; |