#include "CustomAudioManager.h"
#include "cocos2d.h"
#include "AudioEngine.h"
#include "SimpleAudioEngine.h"


USING_NS_CC;
using namespace CocosDenshion;

CustomAudioManager* CustomAudioManager::_instance = nullptr;

CustomAudioManager::CustomAudioManager()
{
}


CustomAudioManager* CustomAudioManager::getInstance(){
	if (_instance == nullptr) {
		_instance = new CustomAudioManager();
	}
	return _instance;
}

void CustomAudioManager::playEffect(const std::string& filename, bool loop){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
	std::string name = filename.substr(0, filename.find(".")); 
	experimental::AudioEngine::play2d(name+".mp3", loop, 0.4f); 

#else
	SimpleAudioEngine::getInstance()->setEffectsVolume(0.4f);
	SimpleAudioEngine::getInstance()->playEffect(filename.c_str(), loop);
#endif
}

void CustomAudioManager::playBackgroundSound(const std::string& filename, bool loop){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
	std::string name = filename.substr(0, filename.find(".")); 
	experimental::AudioEngine::play2d(name+".mp3", loop, 0.3f); 
	
#else
	SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.3f);
	SimpleAudioEngine::getInstance()->playBackgroundMusic(filename.c_str(), loop);
#endif
}

void CustomAudioManager::preloadEffect(const std::string& filename){
#if CC_TARGET_PLATFORM != CC_PLATFORM_WIN32 
	SimpleAudioEngine::getInstance()->preloadEffect(filename.c_str());
#endif

}

void CustomAudioManager::preloadBackground(const std::string& filename){
#if CC_TARGET_PLATFORM != CC_PLATFORM_WIN32 
	SimpleAudioEngine::getInstance()->preloadBackgroundMusic(filename.c_str());
#endif
}


void CustomAudioManager::resumeAll(){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
	experimental::AudioEngine::resumeAll();
#else
	SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
	SimpleAudioEngine::getInstance()->resumeAllEffects();
#endif
}

void CustomAudioManager::pauseAll(){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
	experimental::AudioEngine::pauseAll();
#else
	SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
	SimpleAudioEngine::getInstance()->pauseAllEffects();
#endif
}

void CustomAudioManager::stopAll(){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 
	experimental::AudioEngine::stopAll();
#else
	SimpleAudioEngine::getInstance()->stopAllEffects();
	SimpleAudioEngine::getInstance()->stopBackgroundMusic();
#endif
}