From ce07b8e99754b53d0f39874afa33bce42e8b1c89 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 2 Jan 2003 07:30:23 +0000 Subject: [PATCH] add RageSoundManager::PlayMusic --- stepmania/src/RageSoundManager.cpp | 28 ++++++++++++++++++++++++++++ stepmania/src/RageSoundManager.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/stepmania/src/RageSoundManager.cpp b/stepmania/src/RageSoundManager.cpp index ffb2b360c3..d5b04abaaa 100644 --- a/stepmania/src/RageSoundManager.cpp +++ b/stepmania/src/RageSoundManager.cpp @@ -19,6 +19,8 @@ RageSoundManager::RageSoundManager(CString drivers) driver = MakeRageSoundDriver(drivers); if(!driver) RageException::Throw("Couldn't find a sound driver that works"); + + music = new RageSound; } RageSoundManager::~RageSoundManager() @@ -29,6 +31,7 @@ RageSoundManager::~RageSoundManager() delete *(j++); delete driver; + delete music; } void RageSoundManager::StartMixing(RageSound *snd) @@ -233,6 +236,31 @@ void RageSoundManager::MixAudio(Sint16 *dst, const Sint16 *src, Uint32 len, floa } } +void RageSoundManager::PlayMusic(CString file, bool loop, float start_sec, float length_sec) +{ + if( music->GetLoadedFilePath() == file && music->IsPlaying() ) + return; // do nothing + + if(music->IsPlaying()) + music->StopPlaying(); + music->Load( file ); + + music->SetStopMode(loop? RageSound::M_LOOP:RageSound::M_STOP); + + if(start_sec == -1) + music->SetStartSeconds(); + else + music->SetStartSeconds(start_sec); + + if(length_sec == -1) + music->SetLengthSeconds(); + else + music->SetLengthSeconds(length_sec); + + music->SetPositionSeconds(); + music->StartPlaying(); +} + SoundMixBuffer::SoundMixBuffer() { vol = .5; diff --git a/stepmania/src/RageSoundManager.h b/stepmania/src/RageSoundManager.h index 53b109e56e..088c4525cc 100644 --- a/stepmania/src/RageSoundManager.h +++ b/stepmania/src/RageSoundManager.h @@ -31,6 +31,8 @@ class RageSoundManager RageSoundDriver *driver; + RageSound *music; + public: RageMutex lock; @@ -54,6 +56,7 @@ public: * itself to this. */ set all_sounds; + void PlayMusic(CString file, bool loop = true, float start_sec = -1, float length_sec = -1); static void MixAudio(Sint16 *dst, const Sint16 *src, Uint32 len, float volume); };