aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2014-07-07 02:00:37 +0300
committerFilippos Karapetis2014-07-07 02:00:58 +0300
commit4207fbd2d6f2ee01e6992de526c0c43333b8e624 (patch)
tree51e2749f9deae6c760644c4e894ce055a6ab6f6f
parent23f58229e9e900107dbe27d40b621f1ca51cc920 (diff)
downloadscummvm-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
-rw-r--r--engines/neverhood/modules/module1400.cpp7
-rw-r--r--engines/neverhood/modules/module1400_sprites.cpp5
-rw-r--r--engines/neverhood/modules/module1400_sprites.h2
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;