From 4207fbd2d6f2ee01e6992de526c0c43333b8e624 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Mon, 7 Jul 2014 02:00:37 +0300 Subject: 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 --- engines/neverhood/modules/module1400.cpp | 7 ++++--- engines/neverhood/modules/module1400_sprites.cpp | 5 +++-- 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; -- cgit v1.2.3