diff options
Diffstat (limited to 'engines/neverhood')
-rw-r--r-- | engines/neverhood/gamemodule.cpp | 9 | ||||
-rw-r--r-- | engines/neverhood/gamemodule.h | 1 | ||||
-rw-r--r-- | engines/neverhood/neverhood.cpp | 7 | ||||
-rw-r--r-- | engines/neverhood/smackerplayer.cpp | 4 | ||||
-rw-r--r-- | engines/neverhood/smackerscene.cpp | 9 | ||||
-rw-r--r-- | engines/neverhood/smackerscene.h | 2 |
6 files changed, 25 insertions, 7 deletions
diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp index 1b9c9f361d..0c2e0907a7 100644 --- a/engines/neverhood/gamemodule.cpp +++ b/engines/neverhood/gamemodule.cpp @@ -85,6 +85,13 @@ void GameModule::handleMouseDown(int16 x, int16 y) { } } +void GameModule::handleSpaceKey() { + if (_childObject) { + debug(2, "GameModule::handleSpaceKey()"); + sendMessage(_childObject, 9, 0); + } +} + void GameModule::initScene1307Vars() { // Exit if it's already initialized @@ -314,7 +321,7 @@ void GameModule::startup() { #if 1 _vm->gameState().which = 0; _vm->gameState().sceneNum = 1; - createModule(2200, -1); + createModule(3000, -1); #endif #if 0 _vm->gameState().sceneNum = 0; diff --git a/engines/neverhood/gamemodule.h b/engines/neverhood/gamemodule.h index af72d53fc9..7031bbbe16 100644 --- a/engines/neverhood/gamemodule.h +++ b/engines/neverhood/gamemodule.h @@ -37,6 +37,7 @@ public: void startup(); void handleMouseMove(int16 x, int16 y); void handleMouseDown(int16 x, int16 y); + void handleSpaceKey(); void initScene1307Vars(); void initScene1405Vars(); void initScene2401Vars(); diff --git a/engines/neverhood/neverhood.cpp b/engines/neverhood/neverhood.cpp index e5c07b5b8d..4b75f68c3e 100644 --- a/engines/neverhood/neverhood.cpp +++ b/engines/neverhood/neverhood.cpp @@ -116,6 +116,13 @@ Common::Error NeverhoodEngine::run() { switch (event.type) { case Common::EVENT_KEYDOWN: _keyState = event.kbd.keycode; + switch (_keyState) { + case Common::KEYCODE_SPACE: + _gameModule->handleSpaceKey(); + break; + default: + break; + } break; case Common::EVENT_KEYUP: _keyState = Common::KEYCODE_INVALID; diff --git a/engines/neverhood/smackerplayer.cpp b/engines/neverhood/smackerplayer.cpp index 799f04f09a..0ed6748e45 100644 --- a/engines/neverhood/smackerplayer.cpp +++ b/engines/neverhood/smackerplayer.cpp @@ -103,10 +103,14 @@ void SmackerPlayer::open(uint32 fileHash, bool keepLastFrame) { _palette = new Palette(_vm); _palette->usePalette(); + + _smackerDecoder->start(); } void SmackerPlayer::close() { + if (_smackerDecoder) + _smackerDecoder->stop(); delete _smackerDecoder; delete _palette; // NOTE: The SmackerDecoder deletes the _stream diff --git a/engines/neverhood/smackerscene.cpp b/engines/neverhood/smackerscene.cpp index e2cb7cdfa3..d4f65b3652 100644 --- a/engines/neverhood/smackerscene.cpp +++ b/engines/neverhood/smackerscene.cpp @@ -25,7 +25,7 @@ namespace Neverhood { SmackerScene::SmackerScene(NeverhoodEngine *vm, Module *parentModule, bool doubleSurface, bool flag1, bool canAbort) - : Scene(vm, parentModule, true), _doubleSurface(doubleSurface), _flag1(flag1), _canAbort(canAbort), _fieldDF(false), + : Scene(vm, parentModule, true), _doubleSurface(doubleSurface), _flag1(flag1), _canAbort(canAbort), _videoPlayedBefore(false), _fileHashListIndex(-1), _fileHashList(NULL), _playNextVideoFlag(false) { debug("SmackerScene::SmackerScene(%d, %d, %d)", doubleSurface, flag1, canAbort); @@ -77,10 +77,9 @@ void SmackerScene::nextVideo() { sendMessage(_parentModule, 0x1009, 0); return; } - _fieldDF = getSubVar(VA_SMACKER_PLAYED, smackerFileHash); - if (!_fieldDF) { + _videoPlayedBefore = getSubVar(VA_SMACKER_PLAYED, smackerFileHash); + if (!_videoPlayedBefore) setSubVar(VA_SMACKER_PLAYED, smackerFileHash, 1); - } if (_fileHashListIndex == 0) _smackerPlayer = addSmackerPlayer(new SmackerPlayer(_vm, this, smackerFileHash, _doubleSurface, false)); else @@ -105,7 +104,7 @@ uint32 SmackerScene::handleMessage(int messageNum, const MessageParam ¶m, En uint32 messageResult = Scene::handleMessage(messageNum, param, sender); switch (messageNum) { case 0x0009: - if ((_fieldDF && _flag1) || (_canAbort && _flag1)) + if ((_videoPlayedBefore && _flag1) || (_canAbort && _flag1)) _playNextVideoFlag = true; break; case 0x000C: diff --git a/engines/neverhood/smackerscene.h b/engines/neverhood/smackerscene.h index 05237664c3..54de28a720 100644 --- a/engines/neverhood/smackerscene.h +++ b/engines/neverhood/smackerscene.h @@ -40,7 +40,7 @@ protected: bool _doubleSurface; bool _flag1; bool _canAbort; - bool _fieldDF; + bool _videoPlayedBefore; bool _playNextVideoFlag; int _fileHashListIndex; const uint32 *_fileHashList; |