mirror of https://github.com/axmolengine/axmol.git
172 lines
3.9 KiB
C++
172 lines
3.9 KiB
C++
/*
|
|
* FmodAudioPlayer.h
|
|
*
|
|
* Created on: Aug 18, 2011
|
|
* Author: laschweinski
|
|
*/
|
|
|
|
#ifndef FMODAUDIOPLAYER_H_
|
|
#define FMODAUDIOPLAYER_H_
|
|
|
|
#include "fmod.hpp"
|
|
#include "fmod_errors.h"
|
|
#include "AudioPlayer.h"
|
|
#include "string"
|
|
#include <map>
|
|
|
|
|
|
using namespace std;
|
|
|
|
namespace CocosDenshion {
|
|
|
|
class FmodAudioPlayer : public AudioPlayer{
|
|
public:
|
|
FmodAudioPlayer();
|
|
virtual ~FmodAudioPlayer();
|
|
|
|
static FmodAudioPlayer* sharedPlayer();
|
|
|
|
virtual void close();
|
|
|
|
|
|
|
|
/**
|
|
@brief Preload background music
|
|
@param pszFilePath The path of the background music file,or the FileName of T_SoundResInfo
|
|
*/
|
|
virtual void preloadBackgroundMusic(const char* pszFilePath);
|
|
|
|
/**
|
|
@brief Play background music
|
|
@param pszFilePath The path of the background music file,or the FileName of T_SoundResInfo
|
|
@param bLoop Whether the background music loop or not
|
|
*/
|
|
virtual void playBackgroundMusic(const char* pszFilePath, bool bLoop);
|
|
|
|
/**
|
|
@brief Stop playing background music
|
|
@param bReleaseData If release the background music data or not.As default value is false
|
|
*/
|
|
virtual void stopBackgroundMusic(bool bReleaseData);
|
|
|
|
/**
|
|
@brief Pause playing background music
|
|
*/
|
|
virtual void pauseBackgroundMusic();
|
|
|
|
/**
|
|
@brief Resume playing background music
|
|
*/
|
|
virtual void resumeBackgroundMusic();
|
|
|
|
/**
|
|
@brief Rewind playing background music
|
|
*/
|
|
virtual void rewindBackgroundMusic();
|
|
|
|
virtual bool willPlayBackgroundMusic();
|
|
|
|
/**
|
|
@brief Whether the background music is playing
|
|
@return If is playing return true,or return false
|
|
*/
|
|
virtual bool isBackgroundMusicPlaying();
|
|
|
|
// properties
|
|
/**
|
|
@brief The volume of the background music max value is 1.0,the min value is 0.0
|
|
*/
|
|
virtual float getBackgroundMusicVolume();
|
|
|
|
/**
|
|
@brief set the volume of background music
|
|
@param volume must be in 0.0~1.0
|
|
*/
|
|
virtual void setBackgroundMusicVolume(float volume);
|
|
|
|
/**
|
|
@brief The volume of the effects max value is 1.0,the min value is 0.0
|
|
*/
|
|
virtual float getEffectsVolume();
|
|
|
|
/**
|
|
@brief set the volume of sound effecs
|
|
@param volume must be in 0.0~1.0
|
|
*/
|
|
virtual void setEffectsVolume(float volume);
|
|
|
|
// for sound effects
|
|
/**
|
|
@brief Play sound effect
|
|
@param pszFilePath The path of the effect file,or the FileName of T_SoundResInfo
|
|
@bLoop Whether to loop the effect playing, default value is false
|
|
*/
|
|
virtual unsigned int playEffect(const char* pszFilePath, bool bLoop = false);
|
|
|
|
/**
|
|
@brief Stop playing sound effect
|
|
@param nSoundId The return value of function playEffect
|
|
*/
|
|
virtual void stopEffect(unsigned int nSoundId);
|
|
|
|
/**
|
|
@brief preload a compressed audio file
|
|
@details the compressed audio will be decode to wave, then write into an
|
|
internal buffer in SimpleaudioEngine
|
|
*/
|
|
virtual void preloadEffect(const char* pszFilePath);
|
|
|
|
/**
|
|
@brief unload the preloaded effect from internal buffer
|
|
@param[in] pszFilePath The path of the effect file,or the FileName of T_SoundResInfo
|
|
*/
|
|
virtual void unloadEffect(const char* pszFilePath);
|
|
|
|
/**
|
|
@brief pause an effect identified by sound id
|
|
@param[in] uSoundId sound id
|
|
*/
|
|
virtual void pauseEffect(unsigned int uSoundId);
|
|
|
|
/**
|
|
@brief pause all playing effects
|
|
*/
|
|
virtual void pauseAllEffects();
|
|
|
|
/**
|
|
@brief resume an effect identified by sound id
|
|
@param[in] uSoundId sound id
|
|
*/
|
|
virtual void resumeEffect(unsigned int uSoundId);
|
|
|
|
/**
|
|
@brief resume a effect identified by sound id
|
|
*/
|
|
virtual void resumeAllEffects();
|
|
|
|
/**
|
|
@brief stop all playing effects
|
|
*/
|
|
virtual void stopAllEffects();
|
|
|
|
private:
|
|
|
|
void init();
|
|
map<string, FMOD::Sound*> mapEffectSound;
|
|
map<unsigned int, FMOD::Channel*> mapEffectSoundChannel;
|
|
|
|
FMOD::System* pSystem;
|
|
FMOD::Sound* pMusic; //BGM
|
|
FMOD::Channel* pBGMChannel;
|
|
|
|
FMOD::ChannelGroup* pChannelGroup;
|
|
|
|
unsigned int iSoundChannelCount;
|
|
|
|
string sMusicPath;
|
|
|
|
};
|
|
|
|
} /* namespace CocosDenshion */
|
|
#endif /* FMODAUDIOPLAYER_H_ */
|