summaryrefslogtreecommitdiff
path: root/noncore/games/sfcave-sdl/sound.cpp
Unidiff
Diffstat (limited to 'noncore/games/sfcave-sdl/sound.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/sfcave-sdl/sound.cpp15
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
@@ -28,34 +28,37 @@ bool SoundHandler :: init( )
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
38void SoundHandler :: cleanUp() 39void 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
50int SoundHandler :: playSound( int soundNr, int channel, int nrLoops, int playBeforeFinished ) 53int 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
@@ -98,20 +101,20 @@ void SoundHandler :: playMusic( string musicFile )
98 101
99 playMusic(); 102 playMusic();
100} 103}
101 104
102void SoundHandler :: playMusic( bool fade ) 105void 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 }
@@ -143,12 +146,12 @@ void SoundHandler :: setSoundsOn( bool val )
143 soundOn = val; 146 soundOn = val;
144} 147}
145 148
146void SoundHandler :: setMusicOn( bool val ) 149void 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}