aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/game')
-rw-r--r--engines/titanic/game/computer_screen.cpp14
-rw-r--r--engines/titanic/game/computer_screen.h1
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();