diff options
author | Filippos Karapetis | 2014-07-07 02:00:37 +0300 |
---|---|---|
committer | Filippos Karapetis | 2014-07-07 02:00:58 +0300 |
commit | 4207fbd2d6f2ee01e6992de526c0c43333b8e624 (patch) | |
tree | 51e2749f9deae6c760644c4e894ce055a6ab6f6f /engines/neverhood | |
parent | 23f58229e9e900107dbe27d40b621f1ca51cc920 (diff) | |
download | scummvm-rg350-4207fbd2d6f2ee01e6992de526c0c43333b8e624.tar.gz scummvm-rg350-4207fbd2d6f2ee01e6992de526c0c43333b8e624.tar.bz2 scummvm-rg350-4207fbd2d6f2ee01e6992de526c0c43333b8e624.zip |
NEVERHOOD: Play a single sound when losing the memory puzzle (bug #6672)
When the memory puzzle is reset, each revealed tile gets hidden again.
When a lot of tiles were hidden, the multiple clicking sounds would
fill the available sound slots. To avoid this, only a single click is
sounded when losing
Diffstat (limited to 'engines/neverhood')
-rw-r--r-- | engines/neverhood/modules/module1400.cpp | 7 | ||||
-rw-r--r-- | engines/neverhood/modules/module1400_sprites.cpp | 5 | ||||
-rw-r--r-- | engines/neverhood/modules/module1400_sprites.h | 2 |
3 files changed, 8 insertions, 6 deletions
diff --git a/engines/neverhood/modules/module1400.cpp b/engines/neverhood/modules/module1400.cpp index 551b6874ff..465ad5909a 100644 --- a/engines/neverhood/modules/module1400.cpp +++ b/engines/neverhood/modules/module1400.cpp @@ -709,13 +709,14 @@ Scene1405::Scene1405(NeverhoodEngine *vm, Module *parentModule) void Scene1405::update() { Scene::update(); + // Check if the player chose a wrong tile, in which case the whole grid gets reset if (_countdown != 0 && (--_countdown == 0)) { _tilesLeft = 48; - _tiles[_firstTileIndex]->hide(); - _tiles[_secondTileIndex]->hide(); + _tiles[_firstTileIndex]->hide(true); + _tiles[_secondTileIndex]->hide(false); for (uint32 i = 0; i < 48; i++) { if (getSubVar(VA_IS_TILE_MATCH, i)) { - _tiles[i]->hide(); + _tiles[i]->hide(false); setSubVar(VA_IS_TILE_MATCH, i, 0); } } diff --git a/engines/neverhood/modules/module1400_sprites.cpp b/engines/neverhood/modules/module1400_sprites.cpp index 30a5c340c9..99a2a314a7 100644 --- a/engines/neverhood/modules/module1400_sprites.cpp +++ b/engines/neverhood/modules/module1400_sprites.cpp @@ -873,10 +873,11 @@ void AsScene1405Tile::show() { } } -void AsScene1405Tile::hide() { +void AsScene1405Tile::hide(bool playClickSound) { if (_isShowing) { _isShowing = false; - playSound(0); + if (playClickSound) + playSound(0); setVisible(false); } } diff --git a/engines/neverhood/modules/module1400_sprites.h b/engines/neverhood/modules/module1400_sprites.h index fe0db66d27..e709193aab 100644 --- a/engines/neverhood/modules/module1400_sprites.h +++ b/engines/neverhood/modules/module1400_sprites.h @@ -155,7 +155,7 @@ class AsScene1405Tile : public AnimatedSprite { public: AsScene1405Tile(NeverhoodEngine *vm, Scene1405 *parentScene, uint32 tileIndex); void show(); - void hide(); + void hide(bool playClickSound); protected: Scene1405 *_parentScene; bool _isShowing; |