Toggle sound and music from everywhere

This commit is contained in:
Linus Probert 2018-03-17 09:03:29 +01:00
parent a53c8fe525
commit 9b4de91e13
3 changed files with 28 additions and 22 deletions

View File

@ -355,30 +355,31 @@ static bool
handle_main_events(SDL_Event *event) handle_main_events(SDL_Event *event)
{ {
if (gGameState == PLAYING if (gGameState == PLAYING
|| gGameState == IN_GAME_MENU || gGameState == IN_GAME_MENU
|| gGameState == GAME_OVER) || gGameState == GAME_OVER)
{ {
if (keyboard_press(SDLK_ESCAPE, event)) { if (keyboard_press(SDLK_ESCAPE, event)) {
toggleInGameMenu(NULL); toggleInGameMenu(NULL);
return true; return true;
} }
if (keyboard_mod_press(SDLK_m, KMOD_CTRL, event)) {
if (mixer_toggle_music())
gui_log("Music enabled");
else
gui_log("Music disabled");
return true;
}
if (keyboard_mod_press(SDLK_s, KMOD_CTRL, event)) {
if (mixer_toggle_sound())
gui_log("Sound enabled");
else
gui_log("Sound disabled");
return true;
}
} }
if (keyboard_mod_press(SDLK_m, KMOD_CTRL, event)) {
if (mixer_toggle_music(&gGameState))
gui_log("Music enabled");
else
gui_log("Music disabled");
return true;
}
if (keyboard_mod_press(SDLK_s, KMOD_CTRL, event)) {
if (mixer_toggle_sound())
gui_log("Sound enabled");
else
gui_log("Sound disabled");
return true;
}
return false; return false;
} }

View File

@ -100,7 +100,7 @@ mixer_toggle_sound(void)
} }
bool bool
mixer_toggle_music(void) mixer_toggle_music(GameState *state)
{ {
Settings *settings = settings_get(); Settings *settings = settings_get();
settings->music_enabled = !settings->music_enabled; settings->music_enabled = !settings->music_enabled;
@ -109,8 +109,12 @@ mixer_toggle_music(void)
Mix_PauseMusic(); Mix_PauseMusic();
else if (Mix_PausedMusic()) else if (Mix_PausedMusic())
Mix_ResumeMusic(); Mix_ResumeMusic();
else else {
mixer_play_music(GAME_MUSIC0 + get_random(2)); if (*state == MENU)
mixer_play_music(MENU_MUSIC);
else
mixer_play_music(GAME_MUSIC0 + get_random(2));
}
return settings->music_enabled; return settings->music_enabled;
} }

View File

@ -20,6 +20,7 @@
#define MIXER_H_ #define MIXER_H_
#include <stdbool.h> #include <stdbool.h>
#include "gamestate.h"
typedef enum Music_t { typedef enum Music_t {
MENU_MUSIC, MENU_MUSIC,
@ -64,7 +65,7 @@ bool
mixer_toggle_sound(void); mixer_toggle_sound(void);
bool bool
mixer_toggle_music(void); mixer_toggle_music(GameState*);
void void
mixer_play_effect(Fx fx); mixer_play_effect(Fx fx);