From 2afa279d4c7780e4d43749d73891c9a7d46f4472 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 10 Feb 2021 17:53:49 -0500 Subject: Fixed running sound looping infinitely after running into map change --- src/character_system.cpp | 8 ++++++++ src/character_system.h | 2 ++ src/game.cpp | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/character_system.cpp b/src/character_system.cpp index d4765bf..888914f 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp @@ -238,3 +238,11 @@ void CharacterSystem::stopRunningSound(Sprite& sprite) { sprite.runningSfxChannel = -1; } } + +void CharacterSystem::clearSpriteCache() { + for (Sprite& sprite : game_.getSprites() | game_.spriteView()) { + if (sprite.runningSfxChannel != -1) { + stopRunningSound(sprite); + } + } +} diff --git a/src/character_system.h b/src/character_system.h index 18b6c46..39b3958 100644 --- a/src/character_system.h +++ b/src/character_system.h @@ -31,6 +31,8 @@ public: void endCrouch(int spriteId); + void clearSpriteCache() override; + private: void stopRunning(int spriteId); diff --git a/src/game.cpp b/src/game.cpp index 530068c..dc3a5ba 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -13,13 +13,13 @@ int Game::emplaceSprite(std::string alias) { } void Game::clearSprites() { - sprites_.clear(); - spriteIds_.clear(); - spritesByAlias_.clear(); - for (std::unique_ptr& system : systems_) { system->clearSpriteCache(); } + + sprites_.clear(); + spriteIds_.clear(); + spritesByAlias_.clear(); } void Game::loadMap(std::string filename, std::string warpPoint) { -- cgit 1.4.1