Rev 11 | Go to most recent revision | Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | pmbaty | 1 | // audio.cpp |
| 2 | |||
| 3 | #include "common.h" |
||
| 4 | |||
| 5 | |||
| 6 | // global variables used in this module only |
||
| 7 | static int queued_sound = 0; |
||
| 8 | |||
| 9 | |||
| 10 | void Audio_Think (void) |
||
| 11 | { |
||
| 12 | // this function plays the queued sounds on the right time |
||
| 13 | |||
| 14 | int sound_index; |
||
| 15 | |||
| 16 | // do we have a sound to play ? if so, play it |
||
| 17 | if (queued_sound != 0) |
||
| 18 | { |
||
| 19 | // given the type of sound we want, enqueue the right one |
||
| 20 | if (queued_sound == SOUNDTYPE_CLICK) |
||
| 21 | PlaySound (L"data/sounds/click.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 22 | else if (queued_sound == SOUNDTYPE_ILLEGALMOVE) |
||
| 23 | PlaySound (L"data/sounds/illegal.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 24 | else if (queued_sound == SOUNDTYPE_VICTORY) |
||
| 25 | PlaySound (L"data/sounds/win.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 26 | else if (queued_sound == SOUNDTYPE_DEFEAT) |
||
| 27 | PlaySound (L"data/sounds/lose.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 28 | else if (queued_sound == SOUNDTYPE_CHECK) |
||
| 29 | PlaySound (L"data/sounds/check.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 30 | else if (queued_sound == SOUNDTYPE_PIECETAKEN) |
||
| 31 | PlaySound (L"data/sounds/take.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 32 | else if (queued_sound == SOUNDTYPE_MOVE) |
||
| 33 | { |
||
| 34 | sound_index = rand () % 6; // there are several movement sounds, pick one at random |
||
| 35 | if (sound_index == 0) |
||
| 36 | PlaySound (L"data/sounds/move1.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 37 | else if (sound_index == 1) |
||
| 38 | PlaySound (L"data/sounds/move2.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 39 | else if (sound_index == 2) |
||
| 40 | PlaySound (L"data/sounds/move3.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 41 | else if (sound_index == 3) |
||
| 42 | PlaySound (L"data/sounds/move4.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 43 | else if (sound_index == 4) |
||
| 44 | PlaySound (L"data/sounds/move5.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 45 | else |
||
| 46 | PlaySound (L"data/sounds/move6.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT); |
||
| 47 | } |
||
| 48 | |||
| 49 | queued_sound = 0; // play this sound then forget it |
||
| 50 | } |
||
| 51 | |||
| 52 | return; // finished, audio has been handled |
||
| 53 | } |
||
| 54 | |||
| 55 | |||
| 56 | void Audio_PlaySound (int sound_type) |
||
| 57 | { |
||
| 58 | // helper function to play a sound |
||
| 59 | |||
| 60 | if (!options.want_sounds) |
||
| 61 | return; // if we want no sound, don't play anything |
||
| 62 | |||
| 63 | queued_sound = sound_type; // enqueue the desired sound for playing |
||
| 64 | return; // finished |
||
| 65 | } |