aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/gob/game.cpp3
-rw-r--r--engines/gob/game.h2
-rw-r--r--engines/gob/gob.cpp2
-rw-r--r--engines/gob/init.h8
-rw-r--r--engines/gob/init_v3.cpp42
-rw-r--r--engines/gob/module.mk1
6 files changed, 56 insertions, 2 deletions
diff --git a/engines/gob/game.cpp b/engines/gob/game.cpp
index 4bc95d78cf..b22721a024 100644
--- a/engines/gob/game.cpp
+++ b/engines/gob/game.cpp
@@ -77,6 +77,7 @@ Game::Game(GobEngine *vm) : _vm(vm) {
_handleMouse = 0;
_forceHandleMouse = 0;
_menuLevel = 0;
+ _noScroll = true;
_tempStr[0] = 0;
_curImaFile[0] = 0;
@@ -292,7 +293,7 @@ void Game::evaluateScroll(int16 x, int16 y) {
if ((_handleMouse == 0) || (_menuLevel > 0))
return;
- if (_vm->_global->_videoMode != 0x14)
+ if (_noScroll || (_vm->_global->_videoMode != 0x14))
return;
if ((x == 0) && (_vm->_draw->_scrollOffsetX > 0)) {
diff --git a/engines/gob/game.h b/engines/gob/game.h
index f509e0d6a0..ca9162d3e7 100644
--- a/engines/gob/game.h
+++ b/engines/gob/game.h
@@ -128,6 +128,8 @@ public:
int32 _startTimeKey;
int16 _mouseButtons;
+ bool _noScroll;
+
Game(GobEngine *vm);
virtual ~Game();
diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp
index e7ff850da1..78850ce706 100644
--- a/engines/gob/gob.cpp
+++ b/engines/gob/gob.cpp
@@ -191,7 +191,7 @@ int GobEngine::init() {
_scenery = new Scenery_v2(this);
_saveLoad = new SaveLoad_v2(this, _targetName.c_str());
} else if (_features & Gob::GF_GOB3) {
- _init = new Init_v2(this);
+ _init = new Init_v3(this);
_video = new Video_v2(this);
_inter = new Inter_v3(this);
_parse = new Parse_v2(this);
diff --git a/engines/gob/init.h b/engines/gob/init.h
index 3ca935c6b4..d64dcb91a0 100644
--- a/engines/gob/init.h
+++ b/engines/gob/init.h
@@ -61,6 +61,14 @@ public:
virtual ~Init_v2() {};
};
+class Init_v3 : public Init_v2 {
+public:
+ virtual void initVideo();
+
+ Init_v3(GobEngine *vm);
+ virtual ~Init_v3() {};
+};
+
} // End of namespace Gob
#endif // GOB_INIT_H
diff --git a/engines/gob/init_v3.cpp b/engines/gob/init_v3.cpp
new file mode 100644
index 0000000000..5e10240257
--- /dev/null
+++ b/engines/gob/init_v3.cpp
@@ -0,0 +1,42 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2004 Ivan Dubrov
+ * Copyright (C) 2004-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "common/stdafx.h"
+#include "common/endian.h"
+
+#include "gob/gob.h"
+#include "gob/init.h"
+#include "gob/game.h"
+
+namespace Gob {
+
+Init_v3::Init_v3(GobEngine *vm) : Init_v2(vm) {
+}
+
+void Init_v3::initVideo() {
+ Init_v2::initVideo();
+
+ _vm->_game->_noScroll = false;
+}
+
+} // End of namespace Gob
diff --git a/engines/gob/module.mk b/engines/gob/module.mk
index 63aea49a29..db0660fa5c 100644
--- a/engines/gob/module.mk
+++ b/engines/gob/module.mk
@@ -22,6 +22,7 @@ MODULE_OBJS := \
init.o \
init_v1.o \
init_v2.o \
+ init_v3.o \
inter.o \
inter_v1.o \
inter_v2.o \