123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
#ifndef __AUDIO_H__ #define __AUDIO_H__ #include <SDL/SDL.h> #include <SDL/SDL_thread.h> #include <SDL/SDL_mutex.h> #include <SDL/SDL_mixer.h> #include <vector> #include <string> enum AMessageHeader { Shutdown, PlayMusic, StopMusic }; class AudioMessage { public: AudioMessage(AMessageHeader header); AMessageHeader header; char *body; AudioMessage *next; }; class Audio { public: Audio(); ~Audio(); void start(); void shutdown(); void playMusic(Uint16 musicID); void stopMusic(); SDL_mutex *messagesLock; AudioMessage *messages; /**< Beginning of message linked list */ SDL_Thread *audioPump; Mix_Music *curMusic; bool musicOn; bool soundOn; void addMessage(AudioMessage *newMessage); string getMusicPath(string name); string getMusicPath(Uint16 id) { if (id < lookupTable.size()) return getMusicPath(lookupTable[id]); else return NULL; } protected: vector<string> lookupTable; }; int audioThread(void *audioSystem); #endif