HUGO: intros are now skippable

svn-id: r55192
This commit is contained in:
Arnaud Boutonné 2011-01-09 22:42:56 +00:00
parent 2b7acd6919
commit 01e43fa8dc
6 changed files with 18 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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();

View File

@ -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);

View File

@ -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: