add UI sound channel, clean up external interface and javascript calls
This was SVN commit r13467.
This commit is contained in:
parent
29549561e1
commit
ada7702bec
@ -120,8 +120,7 @@ sound.mastergain = 0.9
|
||||
sound.musicgain = 0.2
|
||||
sound.ambientgain = 0.6
|
||||
sound.actiongain = 0.7
|
||||
sound.bufferCount = 50
|
||||
sound.bufferSize = 98304
|
||||
sound.uigain = 0.7
|
||||
|
||||
; Camera control settings
|
||||
view.scroll.speed = 120.0
|
||||
|
@ -152,18 +152,12 @@ Music.prototype.startPlayList = function(tracks, fadeInPeriod, isLooping)
|
||||
Engine.AddPlaylistItem( this.RELATIVE_MUSIC_PATH + tracks[i] );
|
||||
}
|
||||
|
||||
if (isLooping)
|
||||
Engine.LoopPlaylist();
|
||||
else
|
||||
Engine.PlayPlaylist();
|
||||
Engine.StartPlaylist(isLooping);
|
||||
};
|
||||
|
||||
Music.prototype.switchMusic = function(track, fadeInPeriod, isLooping)
|
||||
{
|
||||
if (isLooping)
|
||||
Engine.LoopMusic(this.RELATIVE_MUSIC_PATH + track);
|
||||
else
|
||||
Engine.PlayMusic(this.RELATIVE_MUSIC_PATH + track);
|
||||
Engine.PlayMusic(this.RELATIVE_MUSIC_PATH + track, isLooping);
|
||||
};
|
||||
|
||||
Music.prototype.isPlaying = function()
|
||||
|
@ -636,7 +636,7 @@ function playRandomAmbient(type)
|
||||
// currentAmbient = newRandomSound("ambient", "temperate_", "dayscape");
|
||||
|
||||
const AMBIENT = "audio/ambient/dayscape/day_temperate_gen_03.ogg";
|
||||
Engine.LoopAmbientSound( AMBIENT );
|
||||
Engine.PlayAmbientSound( AMBIENT, true );
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -111,25 +111,17 @@ static void LoadGlobals()
|
||||
float musicGain = 0.5f;
|
||||
float ambientGain = 0.5f;
|
||||
float actionGain = 0.5f;
|
||||
int bufferCount = 50;
|
||||
unsigned long bufferSize = 65536;
|
||||
float uiGain = 0.5f;
|
||||
|
||||
CFG_GET_VAL("sound.mastergain", Float, gain);
|
||||
CFG_GET_VAL("sound.musicgain", Float, musicGain);
|
||||
CFG_GET_VAL("sound.ambientgain", Float, ambientGain);
|
||||
CFG_GET_VAL("sound.actiongain", Float, actionGain);
|
||||
CFG_GET_VAL("sound.uigain", Float, uiGain);
|
||||
|
||||
CFG_GET_VAL("sound.bufferCount", Int, bufferCount);
|
||||
CFG_GET_VAL("sound.bufferSize", UnsignedLong, bufferSize);
|
||||
if (g_SoundManager)
|
||||
g_SoundManager->SetGains(gain, musicGain, ambientGain, actionGain, uiGain);
|
||||
|
||||
if (g_SoundManager) {
|
||||
g_SoundManager->SetMasterGain(gain);
|
||||
g_SoundManager->SetMusicGain(musicGain);
|
||||
g_SoundManager->SetAmbientGain(ambientGain);
|
||||
g_SoundManager->SetActionGain(actionGain);
|
||||
|
||||
g_SoundManager->SetMemoryUsage(bufferSize, bufferCount);
|
||||
}
|
||||
#endif // CONFIG2_AUDIO
|
||||
|
||||
CFG_GET_VAL("jsdebugger.enable", Bool, g_JSDebuggerEnabled);
|
||||
|
@ -19,31 +19,30 @@
|
||||
#define INCLUDED_ISOUNDMANAGER_H
|
||||
|
||||
#include "lib/config2.h"
|
||||
#include "lib/file/vfs/vfs_path.h"
|
||||
|
||||
#if CONFIG2_AUDIO
|
||||
|
||||
class CSoundManagerWorker;
|
||||
|
||||
class ISoundManager
|
||||
{
|
||||
|
||||
public:
|
||||
virtual ~ISoundManager() {};
|
||||
|
||||
virtual void IdleTask() = 0;
|
||||
virtual void Pause(bool pauseIt) = 0;
|
||||
virtual void SetMemoryUsage(long bufferSize, int bufferCount) = 0;
|
||||
virtual void SetMasterGain(float gain) = 0;
|
||||
virtual void SetMusicGain(float gain) = 0;
|
||||
virtual void SetAmbientGain(float gain) = 0;
|
||||
virtual void SetActionGain(float gain) = 0;
|
||||
|
||||
static void CreateSoundManager();
|
||||
static void SetEnabled(bool doEnable);
|
||||
|
||||
|
||||
virtual void IdleTask() = 0;
|
||||
virtual void Pause(bool pauseIt) = 0;
|
||||
|
||||
virtual void SetGains(float masterG, float musicG, float ambientG, float actionG, float uiG ) = 0;
|
||||
|
||||
virtual void PlayAsUI(const VfsPath& itemPath, bool looping) = 0;
|
||||
virtual void PlayAsMusic(const VfsPath& itemPath, bool looping) = 0;
|
||||
virtual void PlayAsAmbient(const VfsPath& itemPath, bool looping) = 0;
|
||||
|
||||
|
||||
virtual bool InDistress() = 0;
|
||||
virtual long GetBufferCount() = 0;
|
||||
virtual long GetBufferSize() = 0;
|
||||
};
|
||||
|
||||
#else // !CONFIG2_AUDIO
|
||||
|
@ -248,8 +248,9 @@ CSoundManager::CSoundManager()
|
||||
m_MusicGain = 1;
|
||||
m_AmbientGain = 1;
|
||||
m_ActionGain = 1;
|
||||
m_UIGain = 1;
|
||||
m_BufferCount = 50;
|
||||
m_BufferSize = 65536;
|
||||
m_BufferSize = 98304;
|
||||
m_SoundEnabled = true;
|
||||
m_MusicEnabled = true;
|
||||
m_MusicPaused = false;
|
||||
@ -434,11 +435,6 @@ void CSoundManager::ReleaseALSource(ALuint theSource)
|
||||
}
|
||||
}
|
||||
|
||||
void CSoundManager::SetMemoryUsage(long bufferSize, int bufferCount)
|
||||
{
|
||||
m_BufferCount = bufferCount;
|
||||
m_BufferSize = bufferSize;
|
||||
}
|
||||
long CSoundManager::GetBufferCount()
|
||||
{
|
||||
return m_BufferCount;
|
||||
@ -487,6 +483,16 @@ void CSoundManager::StartPlayList( bool doLoop )
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CSoundManager::SetGains(float masterG, float musicG, float ambientG, float actionG, float uiG )
|
||||
{
|
||||
SetMasterGain( masterG );
|
||||
SetMusicGain( musicG );
|
||||
SetAmbientGain( ambientG );
|
||||
SetActionGain( actionG );
|
||||
SetUIGain( uiG );
|
||||
}
|
||||
|
||||
void CSoundManager::SetMasterGain(float gain)
|
||||
{
|
||||
if ( m_Enabled )
|
||||
@ -509,6 +515,10 @@ void CSoundManager::SetActionGain(float gain)
|
||||
{
|
||||
m_ActionGain = gain;
|
||||
}
|
||||
void CSoundManager::SetUIGain(float gain)
|
||||
{
|
||||
m_UIGain = gain;
|
||||
}
|
||||
|
||||
|
||||
ISoundItem* CSoundManager::LoadItem(const VfsPath& itemPath)
|
||||
@ -624,19 +634,6 @@ void CSoundManager::InitListener()
|
||||
alDistanceModel(AL_LINEAR_DISTANCE);
|
||||
}
|
||||
|
||||
void CSoundManager::PlayActionItem(ISoundItem* anItem)
|
||||
{
|
||||
if (anItem)
|
||||
{
|
||||
if (m_Enabled && (m_ActionGain > 0))
|
||||
{
|
||||
anItem->SetGain( m_ActionGain );
|
||||
anItem->Play();
|
||||
AL_CHECK
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CSoundManager::PlayGroupItem(ISoundItem* anItem, ALfloat groupGain )
|
||||
{
|
||||
if (anItem)
|
||||
@ -659,6 +656,78 @@ void CSoundManager::SetMusicEnabled (bool isEnabled)
|
||||
m_MusicEnabled = isEnabled;
|
||||
}
|
||||
|
||||
void CSoundManager::PlayAsMusic( const VfsPath& itemPath, bool looping )
|
||||
{
|
||||
UNUSED2( looping );
|
||||
|
||||
ISoundItem* aSnd = LoadItem(itemPath);
|
||||
if (aSnd != NULL)
|
||||
SetMusicItem( aSnd );
|
||||
}
|
||||
|
||||
void CSoundManager::PlayAsAmbient( const VfsPath& itemPath, bool looping )
|
||||
{
|
||||
UNUSED2( looping );
|
||||
ISoundItem* aSnd = LoadItem(itemPath);
|
||||
if (aSnd != NULL)
|
||||
SetAmbientItem( aSnd );
|
||||
}
|
||||
|
||||
|
||||
void CSoundManager::PlayAsUI(const VfsPath& itemPath, bool looping)
|
||||
{
|
||||
IdleTask();
|
||||
|
||||
if ( ISoundItem* anItem = LoadItem(itemPath) )
|
||||
{
|
||||
if (m_Enabled && (m_UIGain > 0))
|
||||
{
|
||||
anItem->SetGain(m_UIGain);
|
||||
anItem->SetLooping( looping );
|
||||
anItem->PlayAndDelete();
|
||||
}
|
||||
}
|
||||
AL_CHECK
|
||||
}
|
||||
|
||||
|
||||
void CSoundManager::Pause(bool pauseIt)
|
||||
{
|
||||
PauseMusic(pauseIt);
|
||||
PauseAmbient(pauseIt);
|
||||
PauseAction(pauseIt);
|
||||
}
|
||||
|
||||
void CSoundManager::PauseMusic (bool pauseIt)
|
||||
{
|
||||
if (m_CurrentTune && pauseIt && !m_MusicPaused )
|
||||
{
|
||||
m_CurrentTune->FadeAndPause( 1.0 );
|
||||
}
|
||||
else if ( m_CurrentTune && m_MusicPaused && !pauseIt && m_MusicEnabled )
|
||||
{
|
||||
m_CurrentTune->SetGain(0);
|
||||
m_CurrentTune->Resume();
|
||||
m_CurrentTune->FadeToIn( m_MusicGain, 1.0);
|
||||
}
|
||||
m_MusicPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::PauseAmbient (bool pauseIt)
|
||||
{
|
||||
if (m_CurrentEnvirons && pauseIt)
|
||||
m_CurrentEnvirons->Pause();
|
||||
else if ( m_CurrentEnvirons )
|
||||
m_CurrentEnvirons->Resume();
|
||||
|
||||
m_AmbientPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::PauseAction (bool pauseIt)
|
||||
{
|
||||
m_ActionPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::SetMusicItem(ISoundItem* anItem)
|
||||
{
|
||||
AL_CHECK
|
||||
@ -717,44 +786,5 @@ void CSoundManager::SetAmbientItem(ISoundItem* anItem)
|
||||
AL_CHECK
|
||||
}
|
||||
|
||||
|
||||
void CSoundManager::Pause(bool pauseIt)
|
||||
{
|
||||
PauseMusic(pauseIt);
|
||||
PauseAmbient(pauseIt);
|
||||
PauseAction(pauseIt);
|
||||
}
|
||||
|
||||
void CSoundManager::PauseMusic (bool pauseIt)
|
||||
{
|
||||
if (m_CurrentTune && pauseIt && !m_MusicPaused )
|
||||
{
|
||||
m_CurrentTune->FadeAndPause( 1.0 );
|
||||
}
|
||||
else if ( m_CurrentTune && m_MusicPaused && !pauseIt && m_MusicEnabled )
|
||||
{
|
||||
m_CurrentTune->SetGain(0);
|
||||
m_CurrentTune->Resume();
|
||||
m_CurrentTune->FadeToIn( m_MusicGain, 1.0);
|
||||
}
|
||||
m_MusicPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::PauseAmbient (bool pauseIt)
|
||||
{
|
||||
if (m_CurrentEnvirons && pauseIt)
|
||||
m_CurrentEnvirons->Pause();
|
||||
else if ( m_CurrentEnvirons )
|
||||
m_CurrentEnvirons->Resume();
|
||||
|
||||
m_AmbientPaused = pauseIt;
|
||||
}
|
||||
|
||||
void CSoundManager::PauseAction (bool pauseIt)
|
||||
{
|
||||
m_ActionPaused = pauseIt;
|
||||
}
|
||||
|
||||
|
||||
#endif // CONFIG2_AUDIO
|
||||
|
||||
|
@ -71,6 +71,7 @@ protected:
|
||||
float m_MusicGain;
|
||||
float m_AmbientGain;
|
||||
float m_ActionGain;
|
||||
float m_UIGain;
|
||||
bool m_Enabled;
|
||||
long m_BufferSize;
|
||||
int m_BufferCount;
|
||||
@ -127,15 +128,13 @@ public:
|
||||
long GetBufferCount();
|
||||
long GetBufferSize();
|
||||
|
||||
void SetMusicItem(ISoundItem* anItem);
|
||||
void SetAmbientItem(ISoundItem* anItem);
|
||||
void PlayActionItem(ISoundItem* anItem);
|
||||
void PlayGroupItem(ISoundItem* anItem, ALfloat groupGain);
|
||||
void PlayAsMusic( const VfsPath& itemPath, bool looping );
|
||||
void PlayAsAmbient( const VfsPath& itemPath, bool looping );
|
||||
void PlayAsUI(const VfsPath& itemPath, bool looping);
|
||||
|
||||
void PlayGroupItem(ISoundItem* anItem, ALfloat groupGain);
|
||||
void SetGains(float masterG, float musicG, float ambientG, float actionG, float uiG );
|
||||
|
||||
void SetMasterGain(float gain);
|
||||
void SetMusicGain(float gain);
|
||||
void SetAmbientGain(float gain);
|
||||
void SetActionGain(float gain);
|
||||
bool InDistress();
|
||||
void SetDistressThroughShortage();
|
||||
void SetDistressThroughError();
|
||||
@ -147,7 +146,14 @@ public:
|
||||
|
||||
protected:
|
||||
void InitListener();
|
||||
virtual Status AlcInit();
|
||||
Status AlcInit();
|
||||
void SetMusicItem(ISoundItem* anItem);
|
||||
void SetAmbientItem(ISoundItem* anItem);
|
||||
void SetMasterGain(float gain);
|
||||
void SetMusicGain(float gain);
|
||||
void SetAmbientGain(float gain);
|
||||
void SetActionGain(float gain);
|
||||
void SetUIGain(float gain);
|
||||
|
||||
private:
|
||||
CSoundManager(CSoundManager* UNUSED(other)){};
|
||||
|
@ -61,37 +61,41 @@ bool COggData::IsStereo()
|
||||
|
||||
bool COggData::InitOggFile(const VfsPath& itemPath)
|
||||
{
|
||||
int buffersToStart = g_SoundManager->GetBufferCount();
|
||||
if ( OpenOggNonstream( g_VFS, itemPath, ogg) == INFO::OK )
|
||||
{
|
||||
m_FileFinished = false;
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
{
|
||||
int buffersToStart = sndManager->GetBufferCount();
|
||||
if ( OpenOggNonstream( g_VFS, itemPath, ogg) == INFO::OK )
|
||||
{
|
||||
m_FileFinished = false;
|
||||
|
||||
SetFormatAndFreq(ogg->Format(), ogg->SamplingRate() );
|
||||
SetFileName( itemPath );
|
||||
|
||||
AL_CHECK
|
||||
SetFormatAndFreq(ogg->Format(), ogg->SamplingRate() );
|
||||
SetFileName( itemPath );
|
||||
|
||||
alGenBuffers(buffersToStart, m_Buffer);
|
||||
|
||||
if(alGetError() != AL_NO_ERROR)
|
||||
{
|
||||
LOGERROR( L"- Error creating initial buffer !!\n");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_BuffersUsed = FetchDataIntoBuffer(buffersToStart, m_Buffer);
|
||||
if (m_FileFinished)
|
||||
{
|
||||
m_OneShot = true;
|
||||
if (m_BuffersUsed < buffersToStart)
|
||||
{
|
||||
alDeleteBuffers(buffersToStart - m_BuffersUsed, &m_Buffer[m_BuffersUsed]);
|
||||
}
|
||||
}
|
||||
AL_CHECK
|
||||
}
|
||||
return true;
|
||||
|
||||
alGenBuffers(buffersToStart, m_Buffer);
|
||||
|
||||
if(alGetError() != AL_NO_ERROR)
|
||||
{
|
||||
LOGERROR( L"- Error creating initial buffer !!\n");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_BuffersUsed = FetchDataIntoBuffer(buffersToStart, m_Buffer);
|
||||
if (m_FileFinished)
|
||||
{
|
||||
m_OneShot = true;
|
||||
if (m_BuffersUsed < buffersToStart)
|
||||
{
|
||||
alDeleteBuffers(buffersToStart - m_BuffersUsed, &m_Buffer[m_BuffersUsed]);
|
||||
}
|
||||
}
|
||||
AL_CHECK
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -119,24 +123,28 @@ bool COggData::IsOneShot()
|
||||
|
||||
int COggData::FetchDataIntoBuffer(int count, ALuint* buffers)
|
||||
{
|
||||
long bufferSize = g_SoundManager->GetBufferSize();
|
||||
|
||||
u8* pcmout = new u8[bufferSize + 5000];
|
||||
int buffersWritten = 0;
|
||||
|
||||
for (int i = 0; (i < count) && !m_FileFinished; i++)
|
||||
{
|
||||
memset( pcmout, 0, bufferSize + 5000 );
|
||||
Status totalRet = ogg->GetNextChunk( pcmout, bufferSize);
|
||||
m_FileFinished = ogg->atFileEOF();
|
||||
if (totalRet > 0)
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
{
|
||||
long bufferSize = sndManager->GetBufferSize();
|
||||
|
||||
u8* pcmout = new u8[bufferSize + 5000];
|
||||
int buffersWritten = 0;
|
||||
|
||||
for (int i = 0; (i < count) && !m_FileFinished; i++)
|
||||
{
|
||||
buffersWritten++;
|
||||
alBufferData(buffers[i], m_Format, pcmout, (ALsizei)totalRet, (int)m_Frequency);
|
||||
memset( pcmout, 0, bufferSize + 5000 );
|
||||
Status totalRet = ogg->GetNextChunk( pcmout, bufferSize);
|
||||
m_FileFinished = ogg->atFileEOF();
|
||||
if (totalRet > 0)
|
||||
{
|
||||
buffersWritten++;
|
||||
alBufferData(buffers[i], m_Format, pcmout, (ALsizei)totalRet, (int)m_Frequency);
|
||||
}
|
||||
}
|
||||
delete[] pcmout;
|
||||
return buffersWritten;
|
||||
}
|
||||
delete[] pcmout;
|
||||
return buffersWritten;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -346,16 +346,6 @@ void CSoundBase::FadeToIn(ALfloat newVolume, double fadeDuration)
|
||||
}
|
||||
}
|
||||
|
||||
void CSoundBase::PlayAsMusic()
|
||||
{
|
||||
((CSoundManager*)g_SoundManager)->SetMusicItem(this);
|
||||
}
|
||||
|
||||
void CSoundBase::PlayAsAmbient()
|
||||
{
|
||||
((CSoundManager*)g_SoundManager)->SetAmbientItem(this);
|
||||
}
|
||||
|
||||
void CSoundBase::Stop()
|
||||
{
|
||||
m_ShouldBePlaying = false;
|
||||
|
@ -73,8 +73,6 @@ public:
|
||||
void StopAndDelete();
|
||||
void FadeToIn(ALfloat newVolume, double fadeDuration);
|
||||
|
||||
void PlayAsMusic();
|
||||
void PlayAsAmbient();
|
||||
bool GetLooping();
|
||||
bool IsPlaying();
|
||||
|
||||
|
@ -47,8 +47,6 @@ public:
|
||||
virtual void Attach(CSoundData* itemData) = 0;
|
||||
|
||||
virtual void EnsurePlay() = 0;
|
||||
virtual void PlayAsMusic() = 0;
|
||||
virtual void PlayAsAmbient() = 0;
|
||||
|
||||
virtual void PlayAndDelete() = 0;
|
||||
virtual void StopAndDelete() = 0;
|
||||
|
@ -29,121 +29,89 @@
|
||||
|
||||
namespace JSI_Sound
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
|
||||
void StartMusic(void* UNUSED(cbdata))
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->SetMusicEnabled(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void StopMusic(void* UNUSED(cbdata))
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->SetMusicEnabled(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void ClearPlaylist(void* UNUSED(cbdata))
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->ClearPlayListItems();
|
||||
#endif
|
||||
}
|
||||
|
||||
void AddPlaylistItem(void* UNUSED(cbdata), std::wstring filename)
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
{
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->AddPlayListItem( new VfsPath( filename ) );
|
||||
#else
|
||||
UNUSED2(filename);
|
||||
#endif
|
||||
}
|
||||
|
||||
void LoopPlaylist(void* UNUSED(cbdata))
|
||||
void StartPlaylist(void* UNUSED(cbdata), bool looping)
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
sndManager->StartPlayList( true );
|
||||
#endif
|
||||
}
|
||||
void PlayPlaylist(void* UNUSED(cbdata))
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
if ( sndManager )
|
||||
sndManager->StartPlayList( false );
|
||||
#endif
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->StartPlayList( looping );
|
||||
}
|
||||
|
||||
void LoopMusic(void* UNUSED(cbdata), std::wstring filename)
|
||||
void PlayMusic(void* UNUSED(cbdata), std::wstring filename, bool looping)
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
if ( g_SoundManager ) {
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
ISoundItem* aSnd = sndManager->LoadItem(filename);
|
||||
if (aSnd != NULL)
|
||||
aSnd->PlayAsMusic();
|
||||
}
|
||||
#else
|
||||
UNUSED2(filename);
|
||||
#endif // CONFIG2_AUDIO
|
||||
}
|
||||
void PlayMusic(void* UNUSED(cbdata), std::wstring filename)
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
if ( g_SoundManager ) {
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
ISoundItem* aSnd = sndManager->LoadItem(filename);
|
||||
if (aSnd != NULL)
|
||||
aSnd->PlayAsMusic();
|
||||
}
|
||||
#else
|
||||
UNUSED2(filename);
|
||||
#endif // CONFIG2_AUDIO
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->PlayAsMusic( filename, looping);
|
||||
}
|
||||
|
||||
void LoopAmbientSound(void* UNUSED(cbdata), std::wstring filename)
|
||||
void PlayUISound(void* UNUSED(cbdata), std::wstring filename, bool looping)
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
if ( g_SoundManager ) {
|
||||
CSoundManager* sndManager = (CSoundManager*)g_SoundManager;
|
||||
ISoundItem* aSnd = sndManager->LoadItem(filename);
|
||||
if (aSnd != NULL)
|
||||
aSnd->PlayAsAmbient();
|
||||
}
|
||||
#else
|
||||
UNUSED2(filename);
|
||||
#endif // CONFIG2_AUDIO
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->PlayAsUI( filename, looping);
|
||||
}
|
||||
|
||||
void PlayAmbientSound(void* UNUSED(cbdata), std::wstring filename, bool looping)
|
||||
{
|
||||
if ( CSoundManager* sndManager = (CSoundManager*)g_SoundManager )
|
||||
sndManager->PlayAsAmbient( filename, looping);
|
||||
}
|
||||
|
||||
bool MusicPlaying(void* UNUSED(cbdata))
|
||||
{
|
||||
#if CONFIG2_AUDIO
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif // CONFIG2_AUDIO
|
||||
}
|
||||
|
||||
|
||||
|
||||
#else
|
||||
bool MusicPlaying(void* UNUSED(cbdata) ){}
|
||||
void PlayAmbientSound(void* UNUSED(cbdata), std::wstring UNUSED(filename), bool UNUSED(looping) ){}
|
||||
void PlayUISound(void* UNUSED(cbdata), std::wstring UNUSED(filename), bool UNUSED(looping) ) {}
|
||||
void PlayMusic(void* UNUSED(cbdata), std::wstring UNUSED(filename), bool UNUSED(looping) ) {}
|
||||
void StartPlaylist(void* UNUSED(cbdata), bool UNUSED(looping) ){}
|
||||
void AddPlaylistItem(void* UNUSED(cbdata), std::wstring UNUSED(filename) ){}
|
||||
void ClearPlaylist(void* UNUSED(cbdata) ){}
|
||||
void StopMusic(void* UNUSED(cbdata) ){}
|
||||
void StartMusic(void* UNUSED(cbdata) ){}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void RegisterScriptFunctions(ScriptInterface& scriptInterface)
|
||||
{
|
||||
scriptInterface.RegisterFunction<void, &StartMusic>("StartMusic");
|
||||
scriptInterface.RegisterFunction<void, &StopMusic>("StopMusic");
|
||||
scriptInterface.RegisterFunction<void, &ClearPlaylist>("ClearPlaylist");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, &AddPlaylistItem>("AddPlaylistItem");
|
||||
scriptInterface.RegisterFunction<void, &LoopPlaylist>("LoopPlaylist");
|
||||
scriptInterface.RegisterFunction<void, &PlayPlaylist>("PlayPlaylist");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, &LoopMusic>("LoopMusic");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, &PlayMusic>("PlayMusic");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, &LoopAmbientSound>("LoopAmbientSound");
|
||||
scriptInterface.RegisterFunction<void, bool, &StartPlaylist>("StartPlaylist");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, bool, &PlayMusic>("PlayMusic");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, bool, &PlayUISound>("PlayUISound");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, bool, &PlayAmbientSound>("PlayAmbientSound");
|
||||
scriptInterface.RegisterFunction<bool, &MusicPlaying>("MusicPlaying");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user