- data/levels/default/ moved to data/levels/worldmap/
[supertux.git] / src / sound.cpp
1 //  $Id$
2 //
3 //  SuperTux -  A Jump'n Run
4 //  Copyright (C) 2000 Bill Kendrick <bill@newbreedsoftware.com>
5 //  Copyright (C) 2004 Duong-Khang NGUYEN <neoneurone@users.sf.net>
6 //
7 //  This program is free software; you can redistribute it and/or
8 //  modify it under the terms of the GNU General Public License
9 //  as published by the Free Software Foundation; either version 2
10 //  of the License, or (at your option) any later version.
11 //
12 //  This program is distributed in the hope that it will be useful,
13 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 //  GNU General Public License for more details.
16 //
17 //  You should have received a copy of the GNU General Public License
18 //  along with this program; if not, write to the Free Software
19 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 #include "defines.h"
21 #include "globals.h"
22 #include "sound.h"
23 #include "setup.h"
24
25 /*global variable*/
26 bool use_sound = true;    /* handle sound on/off menu and command-line option */
27 bool use_music = true;    /* handle music on/off menu and command-line option */
28 bool audio_device = true; /* != 0: available and initialized */
29
30 char * soundfilenames[NUM_SOUNDS] = {
31                                        "/sounds/jump.wav",
32                                        "/sounds/bigjump.wav",
33                                        "/sounds/skid.wav",
34                                        "/sounds/coin.wav",
35                                        "/sounds/invincible.wav",
36                                        "/sounds/brick.wav",
37                                        "/sounds/hurt.wav",
38                                        "/sounds/squish.wav",
39                                        "/sounds/fall.wav",
40                                        "/sounds/ricochet.wav",
41                                        "/sounds/bump-upgrade.wav",
42                                        "/sounds/upgrade.wav",
43                                        "/sounds/grow.wav",
44                                        "/sounds/fire-flower.wav",
45                                        "/sounds/shoot.wav",
46                                        "/sounds/lifeup.wav",
47                                        "/sounds/stomp.wav",
48                                        "/sounds/kick.wav",
49                                        "/sounds/explosion.wav"
50                                     };
51
52
53 #include <SDL_mixer.h>
54
55 Mix_Chunk * sounds[NUM_SOUNDS];
56
57 /* --- OPEN THE AUDIO DEVICE --- */
58
59 int open_audio (int frequency, Uint16 format, int channels, int chunksize)
60 {
61   if (Mix_OpenAudio( frequency, format, channels, chunksize ) < 0)
62     return -1;
63
64   // allocate 16 channels for mixing
65   if (Mix_AllocateChannels(8)  != 8)
66     return -2;
67   
68   return 0;
69 }
70
71
72 /* --- CLOSE THE AUDIO DEVICE --- */
73
74 void close_audio( void )
75 {
76   if (audio_device) {
77     Mix_CloseAudio();
78   }
79 }
80
81
82 /* --- LOAD A SOUND --- */
83
84 Mix_Chunk* load_sound(const std::string& file)
85 {
86   if(!audio_device)
87     return 0;
88   
89   Mix_Chunk* snd = Mix_LoadWAV(file.c_str());
90
91   if (snd == 0)
92     st_abort("Can't load", file);
93
94   return(snd);
95 }
96
97 void free_chunk(Mix_Chunk *chunk)
98 {
99   Mix_FreeChunk( chunk );
100 }
101