diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-08 20:34:11 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-08 20:34:11 +0000 |
| commit | 4bd0274a2ef33312a55fc4c1a3df5f92173a829d (patch) | |
| tree | 11b4cc5980d95b323d466fa659d1fa276063cce8 /src/game | |
| parent | 51f25fdfeb5d4ebceae69602912cb382d1a9edaa (diff) | |
| download | zcatch-4bd0274a2ef33312a55fc4c1a3df5f92173a829d.tar.gz zcatch-4bd0274a2ef33312a55fc4c1a3df5f92173a829d.zip | |
new mixer. sample rate conversion
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/game_client.cpp | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index dc135509..ad0aff9c 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -16,6 +16,14 @@ extern "C" { #include "data.h" #include "menu.h" +// sound channels +enum +{ + CHN_GUI=0, + CHN_MUSIC, + CHN_WORLD, +}; + data_container *data = 0x0; static int charids[16] = {2,10,0,4,12,6,9,1,3,15,13,11,7,5,8,14}; @@ -52,7 +60,7 @@ struct client_data inline float frandom() { return rand()/(float)(RAND_MAX); } -void snd_play_random(int setid, float vol, float pan) +void snd_play_random(int chn, int setid, float vol, vec2 pos) { soundset *set = &data->sounds[setid]; @@ -61,7 +69,7 @@ void snd_play_random(int setid, float vol, float pan) if(set->num_sounds == 1) { - snd_play(0, set->sounds[0].id, SND_PLAY_ONCE, 0, 0); + snd_play_at(chn, set->sounds[0].id, 0, pos.x, pos.y); return; } @@ -70,7 +78,7 @@ void snd_play_random(int setid, float vol, float pan) do { id = rand() % set->num_sounds; } while(id == set->last); - snd_play(0, set->sounds[id].id, SND_PLAY_ONCE, 0, 1); + snd_play_at(chn, set->sounds[id].id, 0, pos.x, pos.y); set->last = id; } @@ -465,6 +473,11 @@ static void render_loading(float percent) extern "C" void modc_init() { + // setup sound channels + snd_set_channel(CHN_GUI, 1.0f, 0.0f); + snd_set_channel(CHN_MUSIC, 1.0f, 0.0f); + snd_set_channel(CHN_WORLD, 1.0f, 1.0f); + // load the data container data = load_data_from_memory(internal_data); @@ -653,14 +666,14 @@ static void process_events(int s) int soundid = ev->sound; //(ev->sound & SOUND_MASK); //bool bstartloop = (ev->sound & SOUND_LOOPFLAG_STARTLOOP) != 0; //bool bstoploop = (ev->sound & SOUND_LOOPFLAG_STOPLOOP) != 0; - float vol, pan; - sound_vol_pan(p, &vol, &pan); + //float vol, pan; + //sound_vol_pan(p, &vol, &pan); if(soundid >= 0 && soundid < NUM_SOUNDS) { // TODO: we need to control the volume of the diffrent sounds // depening on the category - snd_play_random(soundid, vol, pan); + snd_play_random(CHN_WORLD, soundid, 1.0f, p); } } } @@ -1833,6 +1846,9 @@ void render_game() local_player_pos = mix(predicted_prev_player.pos, predicted_player.pos, client_intrapredtick()); if(local_player && local_player->team == -1) spectate = true; + + // set listner pos + snd_set_listener_pos(local_player_pos.x, local_player_pos.y); animstate idlestate; anim_eval(&data->animations[ANIM_BASE], 0, &idlestate); @@ -2412,7 +2428,9 @@ extern "C" void modc_render() else // if (client_state() != CLIENTSTATE_CONNECTING && client_state() != CLIENTSTATE_LOADING) { if (music_menu_id == -1) - music_menu_id = snd_play(0, music_menu, SND_LOOP, 0, 0); + { + music_menu_id = snd_play(CHN_MUSIC, music_menu, SNDFLAG_LOOP); + } //netaddr4 server_address; if(modmenu_render(false) == -1) @@ -2446,9 +2464,9 @@ extern "C" void modc_message(int msg) chat_add_line(cid, team, message); if(cid >= 0) - snd_play(0, data->sounds[SOUND_CHAT_CLIENT].sounds[0].id, SND_PLAY_ONCE, 0, 0); + snd_play(CHN_GUI, data->sounds[SOUND_CHAT_CLIENT].sounds[0].id, 0); else - snd_play(0, data->sounds[SOUND_CHAT_SERVER].sounds[0].id, SND_PLAY_ONCE, 0, 0); + snd_play(CHN_GUI, data->sounds[SOUND_CHAT_SERVER].sounds[0].id, 0); } else if(msg == MSG_SETNAME) { |