aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorJames Brown2002-10-01 09:27:09 +0000
committerJames Brown2002-10-01 09:27:09 +0000
commit4d24a0bfbe389d498d281860415de5839635e37c (patch)
treee652210136922c0ea59f9a48af97f2ef9440cb87 /scumm
parentd6db8560c61fae5597ab108dbf8adf745d1728d4 (diff)
downloadscummvm-rg350-4d24a0bfbe389d498d281860415de5839635e37c.tar.gz
scummvm-rg350-4d24a0bfbe389d498d281860415de5839635e37c.tar.bz2
scummvm-rg350-4d24a0bfbe389d498d281860415de5839635e37c.zip
Patch #616092: Full Throttle dialog fix
svn-id: r5058
Diffstat (limited to 'scumm')
-rw-r--r--scumm/script_v2.cpp6
-rw-r--r--scumm/scumm.h2
-rw-r--r--scumm/scummvm.cpp6
-rw-r--r--scumm/verbs.cpp1
4 files changed, 14 insertions, 1 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index 281af06af4..5f8a7c5a52 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -2077,6 +2077,12 @@ void Scumm::o6_verbOps()
VerbSlot *vs;
byte *ptr, 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.h b/scumm/scumm.h
index 82d4ae57c6..bd14d72e01 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -756,7 +756,7 @@ public:
uint32 _IM00_offs, _PALS_offs;
//ender: fullscreen
- bool _fullRedraw, _BgNeedsRedraw, _shakeEnabled;
+ bool _fullRedraw, _BgNeedsRedraw, _shakeEnabled, _verbRedraw;
bool _screenEffectFlag, _completeScreenRedraw;
int _cursorHotspotX, _cursorHotspotY, _cursorWidth, _cursorHeight;
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 2fa7c228eb..f071bdcce0 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -471,6 +471,10 @@ int Scumm::scummLoop(int delta)
}
processDrawQue();
+
+ if (_verbRedraw)
+ redrawVerbs();
+
setActorRedrawFlags(true, true);
resetActorBgs();
@@ -1480,6 +1484,8 @@ void Scumm::launch()
_maxHeapThreshold = 450000;
_minHeapThreshold = 400000;
+ _verbRedraw = false;
+
// Create a primary virtual screen
_videoBuffer = (byte *)calloc((_realWidth + 8) * _realHeight, 1);
diff --git a/scumm/verbs.cpp b/scumm/verbs.cpp
index f3b82cbf37..507701e8c5 100644
--- a/scumm/verbs.cpp
+++ b/scumm/verbs.cpp
@@ -31,6 +31,7 @@ void Scumm::redrawVerbs()
for (i = 0; i < _maxVerbs; i++)
drawVerb(i, 0);
verbMouseOver(0);
+ _verbRedraw = false;
}
void Scumm::checkExecVerbs()