From 0511e1152a13ad99b51a819a75ef457404e86d4c Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Fri, 29 Aug 2008 05:34:18 +0000 Subject: added sound component --- src/game/client/components/sounds.cpp | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/game/client/components/sounds.cpp (limited to 'src/game/client/components/sounds.cpp') diff --git a/src/game/client/components/sounds.cpp b/src/game/client/components/sounds.cpp new file mode 100644 index 00000000..569bbf01 --- /dev/null +++ b/src/game/client/components/sounds.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include "sounds.hpp" + +void SOUNDS::on_init() +{ + // setup sound channels + snd_set_channel(SOUNDS::CHN_GUI, 1.0f, 0.0f); + snd_set_channel(SOUNDS::CHN_MUSIC, 1.0f, 0.0f); + snd_set_channel(SOUNDS::CHN_WORLD, 0.9f, 1.0f); + snd_set_channel(SOUNDS::CHN_GLOBAL, 1.0f, 0.0f); +} + +void SOUNDS::on_render() +{ + // set listner pos + snd_set_listener_pos(gameclient.camera->center.x, gameclient.camera->center.y); +} + +void SOUNDS::play(int chn, int setid, float vol, vec2 pos) +{ + SOUNDSET *set = &data->sounds[setid]; + + if(!set->num_sounds) + return; + + if(set->num_sounds == 1) + { + snd_play_at(chn, set->sounds[0].id, 0, pos.x, pos.y); + return; + } + + // play a random one + int id; + do { + id = rand() % set->num_sounds; + } while(id == set->last); + snd_play_at(chn, set->sounds[id].id, 0, pos.x, pos.y); + set->last = id; +} -- cgit 1.4.1