diff options
| -rw-r--r-- | engines/groovie/music.cpp | 14 | ||||
| -rw-r--r-- | engines/groovie/music.h | 2 | ||||
| -rw-r--r-- | engines/groovie/script.cpp | 2 | 
3 files changed, 14 insertions, 4 deletions
| diff --git a/engines/groovie/music.cpp b/engines/groovie/music.cpp index 8c4d846b65..5812d0a9ba 100644 --- a/engines/groovie/music.cpp +++ b/engines/groovie/music.cpp @@ -33,7 +33,7 @@ namespace Groovie {  MusicPlayer::MusicPlayer(GroovieEngine *vm, const Common::String >lName) :  	_vm(vm), _midiParser(NULL), _data(NULL), _driver(NULL), -	_backgroundFileRef(0), _gameVolume(100), _prevCDtrack(0) { +	_backgroundFileRef(0), _gameVolume(100), _prevCDtrack(0), _isPlaying(0) {  	// Create the parser  	_midiParser = MidiParser::createParser_XMIDI(); @@ -174,12 +174,17 @@ void MusicPlayer::setGameVolume(uint16 volume, uint16 time) {  		_fadingEndVolume = 100;  } +void MusicPlayer::startBackground() { +	if (!_isPlaying && _backgroundFileRef) { +		play(_backgroundFileRef, true); +	} +} +  void MusicPlayer::endTrack() {  	debugC(1, kGroovieDebugMIDI | kGroovieDebugAll, "Groovie::Music: End of song");  	unload(); -	if (_backgroundFileRef) { -		play(_backgroundFileRef, true); -	} +	_isPlaying = false; +	startBackground();  }  void MusicPlayer::applyFading() { @@ -232,6 +237,7 @@ bool MusicPlayer::play(uint16 fileref, bool loop) {  	_midiParser->property(MidiParser::mpAutoLoop, loop);  	_gameVolume = 100; +	_isPlaying = true;  	// Load the new file  	return load(fileref);  } diff --git a/engines/groovie/music.h b/engines/groovie/music.h index 0883e7814b..3315ce1886 100644 --- a/engines/groovie/music.h +++ b/engines/groovie/music.h @@ -41,6 +41,7 @@ public:  	void playSong(uint16 fileref);  	void setBackgroundSong(uint16 fileref);  	void playCD(uint8 track); +	void startBackground();  	// Volume  	void setUserVolume(uint16 volume); @@ -99,6 +100,7 @@ private:  	MidiParser *_midiParser;  	MidiDriver *_driver;  	uint8 _musicType; +	bool _isPlaying;  	uint16 _backgroundFileRef;  	uint8 _prevCDtrack; diff --git a/engines/groovie/script.cpp b/engines/groovie/script.cpp index 99698a6148..a8feda0805 100644 --- a/engines/groovie/script.cpp +++ b/engines/groovie/script.cpp @@ -582,6 +582,8 @@ void Script::o_inputloopstart() {  	_mouseClicked = _eventMouseClicked;  	_eventMouseClicked = false; +	_vm->_musicPlayer->startBackground(); +  	// Save the current pressed character for the whole loop  	_kbdChar = _eventKbdChar;  	_eventKbdChar = 0; | 
