#include "TZR_resource.h" #include "TZR_sound.h" #include "sdl_error.h" #include #include int _TZR_PlaySound(const TZR_PlaySoundArgs *args) { if (args->id == 0) { TZR_Log("args->id is 0"); return -1; } if (TZR_GetResourceType(args->id) != TZR_RES_SOUND) { TZR_Log("%u isn't a sound", args->id); return -1; } TZR_Sound *const sound = &TZR_GetResourcePointer(args->id)->sound; #ifdef TZR_SOLOUD const unsigned handle = Soloud_play(___tzr_soloud, sound->ptr); Soloud_setVolume(___tzr_soloud, handle, args->volume); Soloud_setLooping(___tzr_soloud, handle, args->loop); #else Mix_VolumeChunk(sound->ptr, args->volume * MIX_MAX_VOLUME); if (Mix_PlayChannel(-1, sound->ptr, args->loop) < 0) return sdl_error(-1); #endif return 0; }