1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#ifndef AUDIO_CHANNEL_H
#define AUDIO_CHANNEL_H
#include "float3.h"
class CWorldObject;
class CUnit;
/**
* @brief Channel for playing sounds
*
* Has its own volume "slider", and can be enabled / disabled seperately
*/
class AudioChannel
{
public:
AudioChannel();
void Enable(bool newState)
{
enabled = newState;
};
bool IsEnabled()
{
return enabled;
};
void SetVolume(float newVolume)
{
volume = newVolume;
};
float GetVolume()
{
return volume;
};
protected:
float volume;
bool enabled;
};
class EffectChannel : public AudioChannel
{
public:
EffectChannel();
void PlaySample(size_t id, float volume = 1.0f);
void PlaySample(size_t id, const float3& p, float volume = 1.0f);
void PlaySample(size_t id, const float3& p, const float3& velocity, float volume = 1.0f);
void PlaySample(size_t id, const CUnit* u, float volume = 1.0f);
void PlaySample(size_t id, const CWorldObject* p, float volume = 1.0f);
void UpdateFrame()
{
emmitsThisFrame = 0;
};
void SetMaxEmmits(unsigned max)
{
emmitsPerFrame = max;
};
private:
unsigned emmitsPerFrame;
unsigned emmitsThisFrame;
};
/**
* @brief If you want to play a sound, use one of these
*/
namespace Channels
{
extern EffectChannel General;
extern EffectChannel Battle;
extern EffectChannel UnitReply;
extern EffectChannel UserInterface;
}
#endif
|