aboutsummaryrefslogtreecommitdiff
path: root/engines/hugo
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hugo')
-rw-r--r--engines/hugo/game.h1
-rw-r--r--engines/hugo/hugo.cpp1
-rw-r--r--engines/hugo/intro_v1d.cpp3
-rw-r--r--engines/hugo/intro_v3d.cpp3
-rw-r--r--engines/hugo/intro_v3w.cpp3
-rw-r--r--engines/hugo/parser.cpp10
6 files changed, 18 insertions, 3 deletions
diff --git a/engines/hugo/game.h b/engines/hugo/game.h
index e7e73edcf0..1479bc4fb9 100644
--- a/engines/hugo/game.h
+++ b/engines/hugo/game.h
@@ -821,6 +821,7 @@ struct status_t { // Game status (not saved)
bool godModeFl; // Allow DEBUG features in live version
bool helpFl; // Calling WinHelp (don't disable music)
bool doQuitFl;
+ bool skipIntroFl;
uint32 tick; // Current time in ticks
vstate_t viewState; // View state machine
istate_t inventoryState; // Inventory icon bar state
diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp
index c583cb2bad..78ac233b8d 100644
--- a/engines/hugo/hugo.cpp
+++ b/engines/hugo/hugo.cpp
@@ -934,6 +934,7 @@ void HugoEngine::initStatus() {
_status.godModeFl = false; // No special cheats allowed
_status.helpFl = false; // Not calling WinHelp()
_status.doQuitFl = false;
+ _status.skipIntroFl = false;
_status.path[0] = 0; // Path to write files
// Initialize every start of new game
diff --git a/engines/hugo/intro_v1d.cpp b/engines/hugo/intro_v1d.cpp
index 464deb9e21..f04780eec9 100644
--- a/engines/hugo/intro_v1d.cpp
+++ b/engines/hugo/intro_v1d.cpp
@@ -59,6 +59,9 @@ bool intro_v1d::introPlay() {
static int state = 0;
byte introSize = _vm->getIntroSize();
+ if (_vm->getGameStatus().skipIntroFl)
+ return true;
+
if (introTicks < introSize) {
switch (state++) {
case 0:
diff --git a/engines/hugo/intro_v3d.cpp b/engines/hugo/intro_v3d.cpp
index 3afe7decd8..59ec9c4781 100644
--- a/engines/hugo/intro_v3d.cpp
+++ b/engines/hugo/intro_v3d.cpp
@@ -92,6 +92,9 @@ void intro_v3d::introInit() {
bool intro_v3d::introPlay() {
//TODO : Add proper check of story mode
//#if STORY
+ if (_vm->getGameStatus().skipIntroFl)
+ return true;
+
if (introTicks < _vm->getIntroSize()) {
font.drawString(&surf, ".", _vm->_introX[introTicks], _vm->_introY[introTicks] - DIBOFF_Y, 320, _TBRIGHTWHITE);
_vm->_screen->displayBackground();
diff --git a/engines/hugo/intro_v3w.cpp b/engines/hugo/intro_v3w.cpp
index a938d89b09..47cf8abdb5 100644
--- a/engines/hugo/intro_v3w.cpp
+++ b/engines/hugo/intro_v3w.cpp
@@ -75,6 +75,9 @@ void intro_v3w::introInit() {
bool intro_v3w::introPlay() {
//TODO : Add proper check of story mode
//#if STORY
+ if (_vm->getGameStatus().skipIntroFl)
+ return true;
+
if (introTicks < _vm->getIntroSize()) {
// Scale viewport x_intro,y_intro to screen (offsetting y)
_vm->_screen->writeStr(_vm->_introX[introTicks], _vm->_introY[introTicks] - DIBOFF_Y, "x", _TBRIGHTWHITE);
diff --git a/engines/hugo/parser.cpp b/engines/hugo/parser.cpp
index dbd0adab55..9c2a57286f 100644
--- a/engines/hugo/parser.cpp
+++ b/engines/hugo/parser.cpp
@@ -137,9 +137,13 @@ void Parser::keyHandler(Common::Event event) {
// Process key down event - called from OnKeyDown()
switch (nChar) { // Set various toggle states
case Common::KEYCODE_ESCAPE: // Escape key, may want to QUIT
- if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed
- gameStatus.inventoryState = I_UP;
- _vm->_screen->resetInventoryObjId();
+ if (gameStatus.viewState == V_INTRO)
+ gameStatus.skipIntroFl = true;
+ else {
+ if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed
+ gameStatus.inventoryState = I_UP;
+ _vm->_screen->resetInventoryObjId();
+ }
break;
case Common::KEYCODE_END:
case Common::KEYCODE_HOME: