diff --git a/src/system/sound.c b/src/system/sound.c index 1d45792..5c312a8 100644 --- a/src/system/sound.c +++ b/src/system/sound.c @@ -76,6 +76,18 @@ void playSound(int snd, int ch) Mix_PlayChannel(ch, sounds[snd], 0); } +void pauseSound(int pause) +{ + if (pause) + { + Mix_Pause(-1); + } + else + { + Mix_Resume(-1); + } +} + void playBattleSound(int snd, int channel, int x, int y) { float distance, bearing, vol; diff --git a/src/world/radar.c b/src/world/radar.c index e17d47e..d5b2957 100644 --- a/src/world/radar.c +++ b/src/world/radar.c @@ -208,6 +208,7 @@ static void logic(void) if (isControl(CONTROL_MAP)) { + pauseSound(0); clearControl(CONTROL_MAP); exitRadar(); } diff --git a/src/world/radar.h b/src/world/radar.h index 72260ba..2d5a581 100644 --- a/src/world/radar.h +++ b/src/world/radar.h @@ -50,6 +50,7 @@ extern int isControl(int type); extern void clearControl(int type); extern void startSectionTransition(void); extern void endSectionTransition(void); +extern void pauseSound(int pause); extern App app; extern Colors colors; diff --git a/src/world/world.c b/src/world/world.c index 4172d6a..9249ede 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -355,11 +355,13 @@ static void doWorldInProgress(void) if (isControl(CONTROL_PAUSE)) { world.state = WS_PAUSED; + pauseSound(1); clearControl(CONTROL_PAUSE); } if (isControl(CONTROL_MAP)) { + pauseSound(1); initRadar(); clearControl(CONTROL_MAP); } @@ -472,6 +474,7 @@ static void doWorldPaused(void) if (isControl(CONTROL_PAUSE)) { + pauseSound(0); world.state = WS_IN_PROGRESS; clearControl(CONTROL_PAUSE); } diff --git a/src/world/world.h b/src/world/world.h index 1842544..366577d 100644 --- a/src/world/world.h +++ b/src/world/world.h @@ -111,6 +111,7 @@ extern void retryMission(void); extern void returnToHub(void); extern void returnToTitle(void); extern void playBattleSound(int snd, int ch, int x, int y); +extern void pauseSound(int pause); extern App app; extern Colors colors;