00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __SOUND_SERVER_H__
00032 #define __SOUND_SERVER_H__
00033
00035
00036
00037
00038
00039
00040 #include "sound.h"
00041
00042
00043
00044
00045
00046 #define MaxVolume 255
00047 #define SOUND_BUFFER_SIZE 65536
00048
00052 class CSample
00053 {
00054 public:
00055 CSample() : Channels(0), SampleSize(0), Frequency(0), BitsPerSample(0),
00056 Buffer(NULL), Pos(0), Len(0) {}
00057 virtual ~CSample() {}
00058
00059 virtual int Read(void *buf, int len) = 0;
00060
00061 unsigned char Channels;
00062 unsigned char SampleSize;
00063 unsigned int Frequency;
00064 unsigned short BitsPerSample;
00065
00066 unsigned char *Buffer;
00067 int Pos;
00068 int Len;
00069 };
00070
00074 enum _play_audio_flags_ {
00075 PlayAudioStream = 1,
00076 PlayAudioPreLoad = 2,
00077 PlayAudioLoadInMemory = 4,
00078 PlayAudioLoadOnDemand = 8
00079 };
00080
00081
00082
00083
00084
00085 extern CSample *LoadWav(const char *name, int flags);
00086 extern CSample *LoadVorbis(const char *name, int flags);
00087 extern CSample *LoadMikMod(const char *name, int flags);
00088
00090 extern int SetChannelVolume(int channel, int volume);
00092 extern int SetChannelStereo(int channel, int stereo);
00094 extern void SetChannelFinishedCallback(int channel, void (*callback)(int channel));
00096 extern CSample *GetChannelSample(int channel);
00098 extern void StopChannel(int channel);
00100 extern void StopAllChannels();
00101
00103 extern bool UnitSoundIsPlaying(Origin *origin);
00105 extern bool SampleIsPlaying(CSample *sample);
00107 extern CSample *LoadSample(const std::string &name);
00109 extern int PlaySample(CSample *sample, Origin *origin = NULL);
00111 extern int PlaySoundFile(const std::string &name);
00112
00114 extern void SetEffectsVolume(int volume);
00116 extern int GetEffectsVolume();
00118 extern void SetEffectsEnabled(bool enabled);
00120 extern bool IsEffectsEnabled();
00121
00123 void SetMusicFinishedCallback(void (*callback)());
00125 extern int PlayMusic(CSample *sample);
00127 extern int PlayMusic(const std::string &file);
00129 extern void StopMusic();
00131 extern void SetMusicVolume(int volume);
00133 extern int GetMusicVolume();
00135 extern void SetMusicEnabled(bool enabled);
00137 extern bool IsMusicEnabled();
00139 extern bool IsMusicPlaying();
00140
00142 extern bool SoundEnabled();
00144 extern int InitSound();
00146 extern void QuitSound();
00147
00149
00150 #endif // !__SOUND_SERVER_H__