diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/neverhood/gamemodule.cpp | 14 | ||||
-rw-r--r-- | engines/neverhood/gamemodule.h | 2 | ||||
-rw-r--r-- | engines/neverhood/screen.cpp | 18 | ||||
-rw-r--r-- | engines/neverhood/screen.h | 8 |
4 files changed, 24 insertions, 18 deletions
diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp index 493d16d7dd..5eaa7e2d64 100644 --- a/engines/neverhood/gamemodule.cpp +++ b/engines/neverhood/gamemodule.cpp @@ -286,8 +286,7 @@ void GameModule::initCubeSymbolsPuzzle() { } void GameModule::initCrystalColorsPuzzle() { - // TODO Maybe move this into the GameModule so all puzzle init code is together - if (getGlobalVar(V_CRYSTAL_COLORS_INIT) == 0) { + if (!getGlobalVar(V_CRYSTAL_COLORS_INIT)) { TextResource textResource(_vm); const char *textStart, *textEnd; textResource.load(0x46691611); @@ -341,10 +340,6 @@ uint32 GameModule::handleMessage(int messageNum, const MessageParam ¶m, Enti _moduleResult = param.asInteger(); _done = true; break; - case 0x100A: - case 0x1023: - // Unused resource preloading messages - break; } return messageResult; } @@ -829,7 +824,7 @@ void GameModule::updateModule() { break; case 3000: // NOTE _moduleResult 2 never used - // TODO Check if _moduleResult 4 is used + // NOTE Check if _moduleResult 4 is used if (_moduleResult == 1) createModule(1900, 0); else if (_moduleResult == 3) @@ -854,7 +849,7 @@ void GameModule::openMainMenu() { // If there's no module, create one so there's something to return to createModule(1000, 0); } - // TODO Save FPS, Smacker handle, screen offsets + _vm->_screen->saveParams(); _mainMenuRequested = false; createMenuModule(); } @@ -871,9 +866,8 @@ void GameModule::createMenuModule() { void GameModule::updateMenuModule() { if (!updateChild()) { - // TODO Restore FPS? + _vm->_screen->restoreParams(); _childObject = _prevChildObject; - // TODO Restore Smacker handle, screen offsets sendMessage(_childObject, 0x101E, 0); _prevChildObject = NULL; _moduleNum = _prevModuleNum; diff --git a/engines/neverhood/gamemodule.h b/engines/neverhood/gamemodule.h index df8f015659..8101d38009 100644 --- a/engines/neverhood/gamemodule.h +++ b/engines/neverhood/gamemodule.h @@ -56,13 +56,13 @@ public: void initCrystalColorsPuzzle(); uint32 getCurrRadioMusicFileHash(); protected: + int _moduleNum; Entity *_prevChildObject; int _prevModuleNum; bool _restoreGameRequested; bool _restartGameRequested; bool _canRequestMainMenu; bool _mainMenuRequested; - int _moduleNum; uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); void createModule(int moduleNum, int which); void createModuleByHash(uint32 nameHash); diff --git a/engines/neverhood/screen.cpp b/engines/neverhood/screen.cpp index 352e59e9b2..3e57422cea 100644 --- a/engines/neverhood/screen.cpp +++ b/engines/neverhood/screen.cpp @@ -114,6 +114,18 @@ uint32 Screen::getNextFrameTime() { return _vm->_system->getMillis() + waitTicks; } +void Screen::saveParams() { + _savedSmackerDecoder = _smackerDecoder; + _savedFrameDelay = _frameDelay; + _savedYOffset = _yOffset; +} + +void Screen::restoreParams() { + _smackerDecoder = _savedSmackerDecoder; + _frameDelay = _savedFrameDelay; + _yOffset = _savedYOffset; +} + void Screen::setFps(int fps) { _frameDelay = 1000 / fps; } @@ -270,16 +282,14 @@ void Screen::drawUnk(const Graphics::Surface *surface, NDrawRect &drawRect, NDra NDrawRect newDrawRect; x = sysRect.x; - if (sysRect.width <= x || -sysRect.width >= x) { + if (sysRect.width <= x || -sysRect.width >= x) x = x % sysRect.width; - } if (x < 0) x += sysRect.width; y = sysRect.y; - if (y >= sysRect.height || -sysRect.height >= y) { + if (y >= sysRect.height || -sysRect.height >= y) y = y % sysRect.height; - } if (y < 0) y += sysRect.height; diff --git a/engines/neverhood/screen.h b/engines/neverhood/screen.h index 33de141ec2..c778066152 100644 --- a/engines/neverhood/screen.h +++ b/engines/neverhood/screen.h @@ -63,6 +63,8 @@ public: ~Screen(); void update(); uint32 getNextFrameTime(); + void saveParams(); + void restoreParams(); void setFps(int fps); int getFps(); void setYOffset(int16 yOffset); @@ -89,12 +91,12 @@ protected: NeverhoodEngine *_vm; MicroTileArray *_microTiles; Graphics::Surface *_backScreen; - Video::SmackerDecoder *_smackerDecoder; + Video::SmackerDecoder *_smackerDecoder, *_savedSmackerDecoder; int32 _ticks; - int32 _frameDelay; + int32 _frameDelay, _savedFrameDelay; byte *_paletteData; bool _paletteChanged; - int16 _yOffset; + int16 _yOffset, _savedYOffset; bool _fullRefresh; RenderQueue *_renderQueue, *_prevRenderQueue; }; |