Diffstat (limited to 'noncore/games/sfcave-sdl/sound.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/sfcave-sdl/sound.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/noncore/games/sfcave-sdl/sound.cpp b/noncore/games/sfcave-sdl/sound.cpp index 5fda859..855f2e6 100644 --- a/noncore/games/sfcave-sdl/sound.cpp +++ b/noncore/games/sfcave-sdl/sound.cpp | |||
@@ -22,46 +22,49 @@ bool SoundHandler :: init( ) | |||
22 | { | 22 | { |
23 | printf("Unable to open audio!\n"); | 23 | printf("Unable to open audio!\n"); |
24 | return false; | 24 | return false; |
25 | } | 25 | } |
26 | 26 | ||
27 | // We're going to pre-load the sound effects that we need right here | 27 | // We're going to pre-load the sound effects that we need right here |
28 | sounds[SND_EXPLOSION] = Mix_LoadWAV( SOUND_PATH "explosion.wav"); | 28 | sounds[SND_EXPLOSION] = Mix_LoadWAV( SOUND_PATH "explosion.wav"); |
29 | sounds[SND_THRUST] = Mix_LoadWAV( SOUND_PATH "thrust.wav"); | 29 | sounds[SND_THRUST] = Mix_LoadWAV( SOUND_PATH "thrust.wav"); |
30 | 30 | ||
31 | music = 0; | 31 | music = 0; |
32 | 32 | ||
33 | soundOn = true; | 33 | soundOn = true; |
34 | musicOn = true; | ||
34 | 35 | ||
35 | return true; | 36 | return true; |
36 | } | 37 | } |
37 | 38 | ||
38 | void SoundHandler :: cleanUp() | 39 | void SoundHandler :: cleanUp() |
39 | { | 40 | { |
40 | // Free audio sounds | 41 | // Free audio sounds |
41 | Mix_FreeChunk( sounds[SND_EXPLOSION] ); | 42 | if ( sounds[SND_EXPLOSION] ) |
42 | Mix_FreeChunk( sounds[SND_THRUST] ); | 43 | Mix_FreeChunk( sounds[SND_EXPLOSION] ); |
44 | if ( sounds[SND_THRUST] ) | ||
45 | Mix_FreeChunk( sounds[SND_THRUST] ); | ||
43 | 46 | ||
44 | if ( music ) | 47 | if ( music ) |
45 | Mix_FreeMusic( music ); | 48 | Mix_FreeMusic( music ); |
46 | 49 | ||
47 | Mix_CloseAudio(); | 50 | Mix_CloseAudio(); |
48 | } | 51 | } |
49 | 52 | ||
50 | int SoundHandler :: playSound( int soundNr, int channel, int nrLoops, int playBeforeFinished ) | 53 | int SoundHandler :: playSound( int soundNr, int channel, int nrLoops, int playBeforeFinished ) |
51 | { | 54 | { |
52 | if ( !soundOn ) | 55 | if ( !soundOn ) |
53 | return -1; | 56 | return -1; |
54 | 57 | ||
55 | if ( soundNr >= NR_SOUNDS ) | 58 | if ( soundNr >= NR_SOUNDS || !sounds[soundNr] ) |
56 | return -1; | 59 | return -1; |
57 | 60 | ||
58 | Mix_Chunk *chunk = sounds[soundNr]; | 61 | Mix_Chunk *chunk = sounds[soundNr]; |
59 | if( channel == -1 || !Mix_Playing( channel ) ) | 62 | if( channel == -1 || !Mix_Playing( channel ) ) |
60 | channel = Mix_PlayChannel(-1, sounds[soundNr], nrLoops); | 63 | channel = Mix_PlayChannel(-1, sounds[soundNr], nrLoops); |
61 | 64 | ||
62 | Mix_Volume( channel, MIX_MAX_VOLUME ); | 65 | Mix_Volume( channel, MIX_MAX_VOLUME ); |
63 | return channel; | 66 | return channel; |
64 | } | 67 | } |
65 | 68 | ||
66 | void SoundHandler :: stopSound( int channel, bool fadeOut, int nrMilliSecs ) | 69 | void SoundHandler :: stopSound( int channel, bool fadeOut, int nrMilliSecs ) |
67 | { | 70 | { |
@@ -92,32 +95,32 @@ void SoundHandler :: playMusic( string musicFile ) | |||
92 | music = Mix_LoadMUS( musicFile.c_str() ); | 95 | music = Mix_LoadMUS( musicFile.c_str() ); |
93 | if(!music) | 96 | if(!music) |
94 | { | 97 | { |
95 | printf("Mix_LoadMUS(%s): %s\n", musicFile.c_str(), Mix_GetError()); | 98 | printf("Mix_LoadMUS(%s): %s\n", musicFile.c_str(), Mix_GetError()); |
96 | // this might be a critical error... | 99 | // this might be a critical error... |
97 | } | 100 | } |
98 | 101 | ||
99 | playMusic(); | 102 | playMusic(); |
100 | } | 103 | } |
101 | 104 | ||
102 | void SoundHandler :: playMusic( bool fade ) | 105 | void SoundHandler :: playMusic( bool fade ) |
103 | { | 106 | { |
104 | if ( !soundOn ) | 107 | if ( !musicOn ) |
105 | return; | 108 | return; |
106 | 109 | ||
107 | if ( music ) | 110 | if ( music ) |
108 | { | 111 | { |
109 | Mix_VolumeMusic( MIX_MAX_VOLUME ); | 112 | Mix_VolumeMusic( MIX_MAX_VOLUME ); |
110 | Mix_RewindMusic(); | 113 | Mix_RewindMusic(); |
111 | 114 | ||
112 | if ( fade ) | 115 | if ( fade ) |
113 | Mix_FadeInMusic( music, -1, 1000 ); | 116 | Mix_FadeInMusic( music, -1, 1000 ); |
114 | else | 117 | else |
115 | Mix_PlayMusic( music, -1 ); | 118 | Mix_PlayMusic( music, -1 ); |
116 | 119 | ||
117 | } | 120 | } |
118 | } | 121 | } |
119 | 122 | ||
120 | void SoundHandler :: stopMusic( bool fadeOut ) | 123 | void SoundHandler :: stopMusic( bool fadeOut ) |
121 | { | 124 | { |
122 | if ( !music || !Mix_PlayingMusic() ) | 125 | if ( !music || !Mix_PlayingMusic() ) |
123 | return; | 126 | return; |
@@ -137,18 +140,18 @@ void SoundHandler :: setMusicVolume( int vol ) | |||
137 | { | 140 | { |
138 | Mix_VolumeMusic( vol ); | 141 | Mix_VolumeMusic( vol ); |
139 | } | 142 | } |
140 | 143 | ||
141 | void SoundHandler :: setSoundsOn( bool val ) | 144 | void SoundHandler :: setSoundsOn( bool val ) |
142 | { | 145 | { |
143 | soundOn = val; | 146 | soundOn = val; |
144 | } | 147 | } |
145 | 148 | ||
146 | void SoundHandler :: setMusicOn( bool val ) | 149 | void SoundHandler :: setMusicOn( bool val ) |
147 | { | 150 | { |
148 | musicOn = val; | 151 | musicOn = val; |
149 | 152 | ||
150 | if ( !musicOn ) | 153 | if ( !musicOn ) |
151 | stopMusic(); | 154 | stopMusic(); |
152 | else | 155 | else |
153 | playMusic( true ); | 156 | playMusic( true ); |
154 | } | 157 | } |