From: Guus Sliepen Date: Sun, 9 Aug 2015 13:54:21 +0000 (+0200) Subject: Allow playing sounds with stereo effects. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=690030e57c1f4aea6dbeef1da632ebb339d6844d;p=quix0rs-blobwars.git Allow playing sounds with stereo effects. This is basically a copy of the playSound routine from Project: Starfighter. --- diff --git a/src/CAudio.cpp b/src/CAudio.cpp index 98d1a86..e20aece 100644 --- a/src/CAudio.cpp +++ b/src/CAudio.cpp @@ -178,7 +178,7 @@ bool Audio::loadMusic(const char *filename) return true; } -void Audio::playSound(int snd, int channel) +void Audio::playSoundRelative(int snd, int channel, float x) { if ((!engine->useAudio) || (soundVolume == 0)) return; @@ -188,9 +188,29 @@ void Audio::playSound(int snd, int channel) return; } - Mix_Volume(channel, soundVolume); + int angle = atanf(x / 320) * 180 / M_PI; + int attenuation = fabsf(x) / 40; + + if (angle < 0) + angle += 360; + if (attenuation > 255) + attenuation = 255; + + Mix_Volume(channel, soundVolume); Mix_PlayChannel(channel, sound[snd], 0); + Mix_SetPosition(channel, angle, attenuation); +} + +void Audio::playSound(int snd, int channel, float x) +{ + x -= (engine->playerPosX + 320); + playSoundRelative(snd, channel, x); +} + +void Audio::playSound(int snd, int channel) +{ + playSoundRelative(snd, channel, 0); } void Audio::playMusic() diff --git a/src/CAudio.h b/src/CAudio.h index 500455a..d9faa5c 100644 --- a/src/CAudio.h +++ b/src/CAudio.h @@ -50,6 +50,8 @@ class Audio { void registerEngine(Engine *engine); bool loadSound(int i, const char *filename); bool loadMusic(const char *filename); + void playSoundRelative(int snd, int channel, float x); + void playSound(int snd, int channel, float x); void playSound(int snd, int channel); void playMusic(); void playMusicOnce();