diff options
-rw-r--r-- | engines/lure/hotspots.cpp | 2 | ||||
-rw-r--r-- | engines/lure/room.h | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp index 1f3f081e98..89d4eaaed9 100644 --- a/engines/lure/hotspots.cpp +++ b/engines/lure/hotspots.cpp @@ -3265,7 +3265,7 @@ void HotspotTickHandlers::talkAnimHandler(Hotspot &h) { assert(talkDestCharacter != 0); // Make sure any other dialog is finished before we start talking - if (room.isDialogActive()) + if (room.isDialogShowing()) return; // Fall through to TALK_START diff --git a/engines/lure/room.h b/engines/lure/room.h index 32cd0f4280..1fbe853b72 100644 --- a/engines/lure/room.h +++ b/engines/lure/room.h @@ -118,6 +118,11 @@ public: TalkDialog *talkDialog() { return _talkDialog; } void setCursorState(CursorState state) { _cursorState = state; } bool isDialogActive() { return _talkDialog != NULL; } + bool isDialogShowing() { + Resources &res = Resources::getReference(); + Hotspot *talkCharacter = res.getActiveHotspot(res.getTalkingCharacter()); + return isDialogActive() && (talkCharacter != NULL) && (talkCharacter->roomNumber() == _roomNumber); + } bool checkInTalkDialog(); char *statusLine() { return _statusLine; } void saveToStream(Common::WriteStream *stream); |