SHERLOCK: Fix Scalpel animations not being resumed after conversation

When talking to another character, his animation would usually freeze.
Most of the time this is just a cosmetic problem, but it does make
solving the puzzle with the billiard players more annoying than it
should be, since you had to leave and re-enter the room. See bug #10931.
This commit is contained in:
Torbjörn Andersson 2021-12-13 14:47:29 +01:00 committed by Paul Gilbert
parent a1d2d421a4
commit 7a186d9aed
3 changed files with 5 additions and 10 deletions

View file

@ -891,17 +891,10 @@ int ScalpelTalk::talkLine(int lineNum, int stateNum, byte color, int lineY, bool
}
void ScalpelTalk::showTalk() {
People &people = *_vm->_people;
ScalpelScreen &screen = *(ScalpelScreen *)_vm->_screen;
ScalpelUserInterface &ui = *(ScalpelUserInterface *)_vm->_ui;
byte color = ui._endKeyActive ? COMMAND_FOREGROUND : COMMAND_NULL;
clearSequences();
pushSequence(_talkTo);
people.setListenSequence(_talkTo);
ui._selector = ui._oldSelector = -1;
if (!ui._windowOpen) {
// Draw the talk interface on the back buffer
drawInterface();

View file

@ -408,7 +408,11 @@ void Talk::talkTo(const Common::String filename) {
// If the new conversion is a reply first, then we don't need
// to display any choices, since the reply needs to be shown
if (!newStatement._statement.hasPrefix("*") && !newStatement._statement.hasPrefix("^")) {
clearSequences();
pushSequence(_talkTo);
people.setListenSequence(_talkTo, 129);
_talkIndex = select;
ui._selector = ui._oldSelector = -1;
showTalk();
// Break out of loop now that we're waiting for player input
@ -550,6 +554,7 @@ void Talk::initTalk(int objNum) {
}
} else {
_talkIndex = select;
ui._selector = ui._oldSelector = -1;
showTalk();
// Break out of loop now that we're waiting for player input

View file

@ -232,11 +232,8 @@ void TattooTalk::nothingToSay() {
}
void TattooTalk::showTalk() {
TattooPeople &people = *(TattooPeople *)_vm->_people;
TattooUserInterface &ui = *(TattooUserInterface *)_vm->_ui;
people.setListenSequence(_talkTo, 129);
_talkWidget.load();
_talkWidget.summonWindow();
_talkWidget.refresh();