From 01e43fa8dc2201247d4a330f75044bfd774b646e Mon Sep 17 00:00:00 2001 From: Arnaud Boutonné Date: Sun, 9 Jan 2011 22:42:56 +0000 Subject: HUGO: intros are now skippable svn-id: r55192 --- engines/hugo/game.h | 1 + engines/hugo/hugo.cpp | 1 + engines/hugo/intro_v1d.cpp | 3 +++ engines/hugo/intro_v3d.cpp | 3 +++ engines/hugo/intro_v3w.cpp | 3 +++ engines/hugo/parser.cpp | 10 +++++++--- 6 files changed, 18 insertions(+), 3 deletions(-) (limited to 'engines/hugo') 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: -- cgit v1.2.3