From 10c92d7f54759d9356ac948f6d019a82e40e3f4d Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 13 Mar 2021 11:34:59 -0500 Subject: Added pause menu open and close sound #7 --- src/menu.h | 7 +++++++ src/menu_system.cpp | 23 +++++++++++++++++------ src/menu_system.h | 2 +- 3 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/menu.h b/src/menu.h index 967b384..528f8c8 100644 --- a/src/menu.h +++ b/src/menu.h @@ -16,6 +16,7 @@ struct MenuItem { MenuType type = MenuType::Command; std::string text; std::function activationFunction; + bool playSfx = false; }; class MenuBuilder { @@ -24,6 +25,7 @@ public: MenuBuilder& Command(std::string text) { result_.type = MenuType::Command; result_.text = std::move(text); + result_.playSfx = true; return *this; } @@ -32,6 +34,11 @@ public: return *this; } + MenuBuilder& SkipSoundEffect() { + result_.playSfx = false; + return *this; + } + MenuItem Build() const { return result_; } diff --git a/src/menu_system.cpp b/src/menu_system.cpp index 468fa6e..6b03fca 100644 --- a/src/menu_system.cpp +++ b/src/menu_system.cpp @@ -44,7 +44,8 @@ void MenuSystem::openPauseMenu() { MenuBuilder().Command("Resume Game") .ActivationFunction([] (Game& game) { game.getSystem().closePauseMenu(); - }), + }) + .SkipSoundEffect(), MenuBuilder().Command("Quit") .ActivationFunction([] (Game& game) { game.quit(); @@ -54,7 +55,7 @@ void MenuSystem::openPauseMenu() { if (game_.getMap().hasExitArea()) { builders.push_back(MenuBuilder().Command("Exit Area") .ActivationFunction([] (Game& game) { - game.getSystem().closePauseMenu(); + game.getSystem().closePauseMenu(false); game.getSystem().runScript(game.getMap().getName(), "exit_area"); })); } @@ -62,11 +63,17 @@ void MenuSystem::openPauseMenu() { menu_ = CreateMenu(builders); cursor_ = 0; + + game_.getMixer().playSound("../res/sfx/menu_open.wav"); } -void MenuSystem::closePauseMenu() { +void MenuSystem::closePauseMenu(bool playSfx) { pauseAnimation_.start(125, 0.0); openState_ = OpenState::Animating; + + if (playSfx) { + game_.getMixer().playSound("../res/sfx/menu_close.wav"); + } } void MenuSystem::pressedUp() { @@ -96,9 +103,13 @@ void MenuSystem::pressedDown() { } void MenuSystem::activateOption() { - game_.getMixer().playSound("../res/sfx/menu_activate.wav"); + if (menu_[cursor_].type == MenuType::Command) { + if (menu_[cursor_].playSfx) { + game_.getMixer().playSound("../res/sfx/menu_activate.wav"); + } - if (menu_[cursor_].type == MenuType::Command && menu_[cursor_].activationFunction) { - menu_[cursor_].activationFunction(game_); + if (menu_[cursor_].activationFunction) { + menu_[cursor_].activationFunction(game_); + } } } diff --git a/src/menu_system.h b/src/menu_system.h index 58a574f..736d555 100644 --- a/src/menu_system.h +++ b/src/menu_system.h @@ -22,7 +22,7 @@ public: void openPauseMenu(); - void closePauseMenu(); + void closePauseMenu(bool playSfx = true); void pressedUp(); -- cgit 1.4.1