void SimpleAudioEngine::preloadEffect(const char* pszFilePath) { // Changing file path to full path std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(pszFilePath); EffectsMap::iterator iter = s_effects.find(fullPath); // check if we have this already if (iter == s_effects.end()) { ALuint buffer; ALuint source; soundData *data = new soundData; string path = fullPath; checkALError("preloadEffect"); if (isOGGFile(path.data())) { buffer = createBufferFromOGG(path.data()); } else { buffer = alutCreateBufferFromFile(path.data()); checkALError("preloadEffect"); } if (buffer == AL_NONE) { fprintf(stderr, "Error loading file: '%s'\n", path.data()); alDeleteBuffers(1, &buffer); return; } alGenSources(1, &source); if (checkALError("preloadEffect") != AL_NO_ERROR) { alDeleteBuffers(1, &buffer); return; } alSourcei(source, AL_BUFFER, buffer); checkALError("preloadEffect"); data->isLooped = false; data->buffer = buffer; data->source = source; s_effects.insert(EffectsMap::value_type(fullPath, data)); } }
// // background audio // void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath) { // Changing file path to full path std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(pszFilePath); BackgroundMusicsMap::const_iterator it = s_backgroundMusics.find(fullPath); if (it == s_backgroundMusics.end()) { ALuint buffer = AL_NONE; if (isOGGFile(fullPath.data())) { buffer = createBufferFromOGG(fullPath.data()); } else { buffer = alutCreateBufferFromFile(fullPath.data()); } checkALError("preloadBackgroundMusic"); if (buffer == AL_NONE) { fprintf(stderr, "Error loading file: '%s'\n", fullPath.data()); alDeleteBuffers(1, &buffer); return; } ALuint source = AL_NONE; alGenSources(1, &source); checkALError("preloadBackgroundMusic"); alSourcei(source, AL_BUFFER, buffer); checkALError("preloadBackgroundMusic"); backgroundMusicData* data = new backgroundMusicData(); data->buffer = buffer; data->source = source; s_backgroundMusics.insert(BackgroundMusicsMap::value_type(fullPath, data)); } }
// // background audio // void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath) { // Changing file path to full path std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(pszFilePath); if (!s_isBackgroundInitialized || s_currentBackgroundStr != fullPath) { string path = fullPath; if (isOGGFile(path.data())) { s_backgroundBuffer = createBufferFromOGG(path.data()); } else { s_backgroundBuffer = alutCreateBufferFromFile(path.data()); } checkALError("preloadBackgroundMusic"); if (s_backgroundBuffer == AL_NONE) { fprintf(stderr, "Error loading file: '%s'\n", path.data()); alDeleteBuffers(1, &s_backgroundBuffer); return; } alGenSources(1, &s_backgroundSource); checkALError("preloadBackgroundMusic"); alSourcei(s_backgroundSource, AL_BUFFER, s_backgroundBuffer); checkALError("preloadBackgroundMusic"); s_currentBackgroundStr = fullPath; } s_currentBackgroundStr = fullPath; s_isBackgroundInitialized = true; }