diff options
| -rw-r--r-- | scumm/script_v6.cpp | 6 | ||||
| -rw-r--r-- | scumm/scumm.cpp | 11 | ||||
| -rw-r--r-- | scumm/string.cpp | 7 | ||||
| -rw-r--r-- | scumm/verbs.cpp | 24 |
4 files changed, 18 insertions, 30 deletions
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index 63affc534a..3c4ccbde12 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -1919,12 +1919,6 @@ void ScummEngine_v6::o6_verbOps() { VerbSlot *vs; byte op; - // Full Throttle implements conversation by creating new verbs, one - // for each option, but it never tells when to actually draw them. - - if (_gameId == GID_FT) - _verbRedraw = true; - op = fetchScriptByte(); if (op == 196) { _curVerb = pop(); diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp index 7a0d79b648..6003e92f9d 100644 --- a/scumm/scumm.cpp +++ b/scumm/scumm.cpp @@ -1635,7 +1635,8 @@ load_game: processDrawQue(); - if (_verbRedraw) { + // Full Throttle always redraws verbs and draws verbs before actors + if ((_gameId == GID_FT) || _verbRedraw) { redrawVerbs(); } @@ -1649,12 +1650,6 @@ load_game: setActorRedrawFlags(); } - // Full Throttle needs to draw verbs before actors, to prevent - // flickering with overlapped actors. See bug #778281 - - if (_gameId == GID_FT && !_verbRedraw && _cursor.state > 0) - verbMouseOver(checkMouseOver(_mouse.x, _mouse.y)); - processActors(); _fullRedraw = false; cyclePalette(); @@ -1666,7 +1661,7 @@ load_game: clearClickedStatus(); } - if (_gameId != GID_FT && !_verbRedraw && _cursor.state > 0) + if (!_verbRedraw && _cursor.state > 0) verbMouseOver(checkMouseOver(_mouse.x, _mouse.y)); _verbRedraw = false; diff --git a/scumm/string.cpp b/scumm/string.cpp index c640e68b80..e6fec42994 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -368,13 +368,6 @@ void ScummEngine::drawString(int a, const byte *msg) { _charset->_ignoreCharsetMask = true; - // In Full Throttle (and other games?), verb text should always mask - // and never time out. We can't do it blindly for all games, because - // it causes problem with the FOA intro. - - if ((_gameId == GID_FT) && a == 4) - _talkDelay = -1; - if (!buf[0]) { buf[0] = ' '; buf[1] = 0; diff --git a/scumm/verbs.cpp b/scumm/verbs.cpp index 20604d450e..e42e47e023 100644 --- a/scumm/verbs.cpp +++ b/scumm/verbs.cpp @@ -264,8 +264,10 @@ void ScummEngine::redrawVerbs() { if (_version <= 2 && !(_userState & 128)) // Don't draw verbs unless active return; - int i; - int verb = (_cursor.state > 0 ? checkMouseOver(_mouse.x, _mouse.y) : 0); + int i, verb = 0; + if ((_gameId == GID_FT) || _cursor.state > 0) + verb = checkMouseOver(_mouse.x, _mouse.y); + for (i = _numVerbs-1; i >= 0; i--) { if (i == verb && _verbs[verb].hicolor) drawVerb(i, 1); @@ -323,6 +325,9 @@ void ScummEngine::verbMouseOver(int verb) { if (_version <= 2 && !(_userState & 128)) return; + if (_gameId == GID_FT) + return; + if (_verbMouseOver == verb) return; @@ -374,7 +379,8 @@ void ScummEngine::drawVerb(int verb, int mode) { return; } - restoreVerbBG(verb); + if (_gameId != GID_FT) + restoreVerbBG(verb); _string[4].charset = vs->charset_nr; _string[4].xpos = vs->curRect.left; @@ -408,8 +414,8 @@ void ScummEngine::drawVerb(int verb, int mode) { vs->curRect.bottom = _charset->_str.bottom; vs->oldRect = _charset->_str; _charset->_str.left = _charset->_str.right; - } else { - restoreVerbBG(verb); + } else if (_gameId != GID_FT) { + //restoreVerbBG(verb); } } @@ -513,10 +519,10 @@ void ScummEngine::killVerb(int slot) { nukeResource(rtVerb, slot); - if (vs->saveid == 0) { - drawVerb(slot, 0); - verbMouseOver(0); - } + //if (vs->saveid == 0) { + // drawVerb(slot, 0); + // verbMouseOver(0); + //} vs->saveid = 0; } |
