diff options
Diffstat (limited to 'engines/titanic/game')
-rw-r--r-- | engines/titanic/game/computer_screen.cpp | 14 | ||||
-rw-r--r-- | engines/titanic/game/computer_screen.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/engines/titanic/game/computer_screen.cpp b/engines/titanic/game/computer_screen.cpp index be9c87a540..179063d1b0 100644 --- a/engines/titanic/game/computer_screen.cpp +++ b/engines/titanic/game/computer_screen.cpp @@ -31,6 +31,7 @@ BEGIN_MESSAGE_MAP(CComputerScreen, CGameObject) ON_MESSAGE(MovieEndMsg) ON_MESSAGE(EnterViewMsg) ON_MESSAGE(TimerMsg) + ON_MESSAGE(MovementMsg) END_MESSAGE_MAP() CComputerScreen::CComputerScreen() : CGameObject() { @@ -68,9 +69,22 @@ bool CComputerScreen::MovieEndMsg(CMovieEndMsg *msg) { bool CComputerScreen::EnterViewMsg(CEnterViewMsg *msg) { loadFrame(26); + + // WORKAROUND: The original game leaves in a debug link that + // allows skipping of Doorbot arrival sequence. Disable it + static_cast<CLinkItem *>(getParent()->findByName("_TRACK,3,e-cu,4,E"))->_bounds.clear(); + return true; } +bool CComputerScreen::MovementMsg(CMovementMsg *msg) { + if (msg->_movement != MOVE_BACKWARDS) + return true; + + msg->_posToUse = Common::Point(320, 50); + return false; +} + bool CComputerScreen::TimerMsg(CTimerMsg *msg) { int handle; diff --git a/engines/titanic/game/computer_screen.h b/engines/titanic/game/computer_screen.h index 8fb1dcd4dc..8affef3aed 100644 --- a/engines/titanic/game/computer_screen.h +++ b/engines/titanic/game/computer_screen.h @@ -33,6 +33,7 @@ class CComputerScreen : public CGameObject { bool MovieEndMsg(CMovieEndMsg *msg); bool EnterViewMsg(CEnterViewMsg *msg); bool TimerMsg(CTimerMsg *msg); + bool MovementMsg(CMovementMsg *msg); public: CLASSDEF; CComputerScreen(); |