#include "jsound.h" #include "jfile.h" Mix_Music *music = NULL; bool JS_Init() { Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024); Mix_AllocateChannels(8); return true; } void JS_LoadMusic(char *musicFilename) { if (music != NULL) { Mix_HaltMusic(); Mix_FreeMusic(music); } Mix_VolumeMusic(MIX_MAX_VOLUME); int filesize = 0; char *buffer = JF_GetBufferFromResource(musicFilename, filesize); SDL_RWops *rw = SDL_RWFromMem(buffer, filesize); music = Mix_LoadMUS_RW(rw, 1); } void JS_SetMusicVolume(int volume) { Mix_VolumeMusic(volume); } void JS_PlayMusic(int loops) { Mix_PlayMusic(music, loops); } void JS_PauseMusic() { Mix_PauseMusic(); } void JS_FadeOutMusic() { Mix_FadeOutMusic(500); } bool JS_MusicPlaying() { return (Mix_PlayingMusic() == 1);// && (Mix_FadingMusic() != MIX_FADING_OUT); } JS_Sound *JS_LoadSound(char *soundFilename) { int filesize = 0; char *buffer = JF_GetBufferFromResource(soundFilename, filesize); SDL_RWops *rw = SDL_RWFromMem(buffer, filesize); return Mix_LoadWAV_RW(rw, false); } void JS_SetSoundVolume(JS_Sound *sound, int volume) { Mix_VolumeChunk(sound, volume); } void JS_PlaySound(JS_Sound *sound) { Mix_PlayChannel(-1, sound, 0); } void JS_FreeSound(JS_Sound *sound) { Mix_FreeChunk(sound); } void JS_Finalize() { Mix_FreeMusic(music); Mix_CloseAudio(); }