aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/script_v6.cpp6
-rw-r--r--scumm/scumm.cpp11
-rw-r--r--scumm/string.cpp7
-rw-r--r--scumm/verbs.cpp24
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;
}