diff options
Diffstat (limited to 'engines/hopkins/hopkins.cpp')
-rw-r--r-- | engines/hopkins/hopkins.cpp | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp index 87d4600187..b023a2fedb 100644 --- a/engines/hopkins/hopkins.cpp +++ b/engines/hopkins/hopkins.cpp @@ -39,6 +39,7 @@ HopkinsEngine *g_vm; HopkinsEngine::HopkinsEngine(OSystem *syst, const HopkinsGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc), _randomSource("Hopkins") { + DebugMan.addDebugChannel(kDebugPath, "Path", "Pathfinding debug level"); g_vm = this; _animMan = new AnimationManager(this); _computer = new ComputerManager(this); @@ -87,14 +88,15 @@ Common::String HopkinsEngine::generateSaveName(int slot) { * Returns true if it is currently okay to restore a game */ bool HopkinsEngine::canLoadGameStateCurrently() { - return !_globals->_exitId && !_globals->_cityMapEnabledFl && _events->_mouseFl; + return !_globals->_exitId && !_globals->_cityMapEnabledFl && _events->_mouseFl && _globals->_curRoomNum != 0; } /** * Returns true if it is currently okay to save the game */ bool HopkinsEngine::canSaveGameStateCurrently() { - return !_globals->_exitId && !_globals->_cityMapEnabledFl && _events->_mouseFl; + return !_globals->_exitId && !_globals->_cityMapEnabledFl && _events->_mouseFl + && _globals->_curRoomNum != 0 && !isUnderwaterSubScene(); } /** @@ -166,24 +168,24 @@ bool HopkinsEngine::runWin95Demo() { if (_events->_rateCounter > 700) _globals->_speed = 3; - if (_startGameSlot == -1) { + if (_startGameSlot == -1) _graphicsMan->fadeOutLong(); - _globals->_eventMode = EVENTMODE_IGNORE; - _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); - } + + _globals->_eventMode = EVENTMODE_IGNORE; + _globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR"); _globals->_characterType = CHARACTER_HOPKINS; _objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0; memset(_globals->_saveData, 0, 2000); _globals->_exitId = 0; - if (_startGameSlot != -1) - _saveLoad->loadGame(_startGameSlot); - if (getLanguage() != Common::PL_POL) if (!displayAdultDisclaimer()) return Common::kNoError; + if (_startGameSlot != -1) + _saveLoad->loadGame(_startGameSlot); + for (;;) { if (_globals->_exitId == 300) _globals->_exitId = 0; @@ -400,14 +402,27 @@ bool HopkinsEngine::runWin95Demo() { break; case 151: - _soundMan->playSound(28); - _globals->_eventMode = EVENTMODE_ALT; // CHECKME! - _graphicsMan->clearScreen(); - _graphicsMan->clearPalette(); - _graphicsMan->loadImage("njour3a"); - _graphicsMan->fadeInLong(); - _events->delay(5000); - _graphicsMan->fadeOutLong(); + if (_fileIO->fileExists("JOUR3A.ANM")) { + // The Polish demo uses the animation file than the complete versions + _soundMan->playSound(16); + _globals->_eventMode = EVENTMODE_IGNORE; + + _graphicsMan->clearScreen(); + _graphicsMan->clearPalette(); + _graphicsMan->_fadingFl = true; + _animMan->playAnim("JOUR3A.ANM", "JOUR3A.ANM", 12, 12, 2000); + } else { + // The other demos only display a nag screen + _soundMan->playSound(28); + _globals->_eventMode = EVENTMODE_ALT; // CHECKME! + _graphicsMan->clearScreen(); + _graphicsMan->clearPalette(); + _graphicsMan->loadImage("njour3a"); + _graphicsMan->fadeInLong(); + _events->delay(5000); + _graphicsMan->fadeOutLong(); + } + _globals->_exitId = 300; _globals->_eventMode = EVENTMODE_DEFAULT; break; @@ -2881,4 +2896,8 @@ bool HopkinsEngine::displayAdultDisclaimer() { } } +bool HopkinsEngine::isUnderwaterSubScene() { + return (_globals->_curRoomNum >= 77) && (_globals->_curRoomNum <= 89); +} + } // End of namespace Hopkins |