From 2f1336cdf07b59c560d082a1ce3bb7986a3913df Mon Sep 17 00:00:00 2001 From: Tobias Gunkel Date: Sat, 21 Jan 2012 14:06:19 +0100 Subject: SCUMM: fix blank sentence line in v0 after cutscenes and remove unused parameter of resetSentence() --- engines/scumm/script.cpp | 2 +- engines/scumm/script_v0.cpp | 12 +++++++++--- engines/scumm/scumm_v0.h | 3 ++- engines/scumm/vars.cpp | 2 +- engines/scumm/verbs.cpp | 13 +++++-------- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp index 588ebaffb9..6dac647714 100644 --- a/engines/scumm/script.cpp +++ b/engines/scumm/script.cpp @@ -1219,7 +1219,7 @@ void ScummEngine_v0::checkAndRunSentenceScript() { } void ScummEngine_v0::runSentenceScript() { - drawSentenceLine(); + _redrawSentenceLine = true; if (getVerbEntrypoint(_cmdObject, _cmdVerb) != 0) { // do not read in the dark diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp index e277480aed..7fce4011e4 100644 --- a/engines/scumm/script_v0.cpp +++ b/engines/scumm/script_v0.cpp @@ -453,6 +453,8 @@ void ScummEngine_v0::drawSentenceObject(int object) { void ScummEngine_v0::drawSentenceLine() { + _redrawSentenceLine = false; + if (!(_userState & 32)) return; @@ -601,7 +603,7 @@ void ScummEngine_v0::o_loadRoomWithEgo() { _fullRedraw = true; - resetSentence(false); + resetSentence(); if (x >= 0 && y >= 0) { a->startWalkActor(x, y, -1); @@ -625,6 +627,7 @@ void ScummEngine_v0::o_cursorCommand() { _currentMode = fetchScriptByte(); switch (_currentMode) { case kModeCutscene: + _redrawSentenceLine = false; state = 15; break; case kModeKeypad: @@ -909,7 +912,7 @@ void ScummEngine_v0::o_cutscene() { setUserState(15); _sentenceNum = 0; - resetSentence(false); + resetSentence(); vm.cutScenePtr[0] = 0; } @@ -930,6 +933,8 @@ void ScummEngine_v0::o_endCutscene() { } else if (vm.cutSceneData[2] != _currentRoom) { startScene(vm.cutSceneData[2], 0, 0); } + + _redrawSentenceLine = true; } void ScummEngine_v0::o_beginOverride() { @@ -961,11 +966,12 @@ void ScummEngine_v0::o_setOwnerOf() { setOwnerOf(obj, owner); } -void ScummEngine_v0::resetSentence(bool walking) { +void ScummEngine_v0::resetSentence() { _activeVerb = kVerbWalkTo; _activeObject = 0; _activeObject2 = 0; _walkToObjectIdx = 0; + _redrawSentenceLine = true; } } // End of namespace Scumm diff --git a/engines/scumm/scumm_v0.h b/engines/scumm/scumm_v0.h index d70d893f09..ae97b57a3e 100644 --- a/engines/scumm/scumm_v0.h +++ b/engines/scumm/scumm_v0.h @@ -52,6 +52,7 @@ protected: int _walkToObject; int _walkToObjectIdx; + bool _redrawSentenceLine; public: ScummEngine_v0(OSystem *syst, const DetectorResult &dr); @@ -98,7 +99,7 @@ protected: virtual int getActiveObject(); - virtual void resetSentence(bool walking); + virtual void resetSentence(); virtual bool areBoxesNeighbors(int box1nr, int box2nr); diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp index 6365a728d2..6d132c601f 100644 --- a/engines/scumm/vars.cpp +++ b/engines/scumm/vars.cpp @@ -546,7 +546,7 @@ void ScummEngine_v8::setupScummVars() { #endif void ScummEngine_v0::resetScummVars() { - resetSentence(false); + resetSentence(); VAR(VAR_EGO) = 3; diff --git a/engines/scumm/verbs.cpp b/engines/scumm/verbs.cpp index dc049816e3..8888935ea7 100644 --- a/engines/scumm/verbs.cpp +++ b/engines/scumm/verbs.cpp @@ -132,7 +132,7 @@ void ScummEngine_v0::resetVerbs() { } void ScummEngine_v0::switchActor(int slot) { - resetSentence(false); + resetSentence(); if (_currentRoom == 45) return; @@ -741,7 +741,6 @@ void ScummEngine_v0::checkExecVerbs() { ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "checkExecVerbs"); VirtScreen *zone = findVirtScreen(_mouse.y); - int sentenceLineChanged = false; bool execute = false; //if (_userPut <= 0) @@ -757,7 +756,7 @@ void ScummEngine_v0::checkExecVerbs() { _activeObject = 0; _activeObject2 = 0; _activeVerb = over; - sentenceLineChanged = true; + _redrawSentenceLine = true; } else { // execute sentence if complete if (checkSentenceComplete()) @@ -793,7 +792,7 @@ void ScummEngine_v0::checkExecVerbs() { else kid = 2; _activeVerb = kVerbWalkTo; - drawSentenceLine(); + _redrawSentenceLine = true; switchActor(kid); } _activeVerb = kVerbWalkTo; @@ -855,7 +854,7 @@ void ScummEngine_v0::checkExecVerbs() { } } - sentenceLineChanged = true; + _redrawSentenceLine = true; if (_activeVerb == kVerbWalkTo && zone->number == kMainVirtScreen) { _walkToObjectIdx = 0; execute = true; @@ -864,10 +863,8 @@ void ScummEngine_v0::checkExecVerbs() { } } - if (sentenceLineChanged) { + if (_redrawSentenceLine) drawSentenceLine(); - sentenceLineChanged = false; - } if (!execute || !_activeVerb) return; -- cgit v1.2.3