diff options
| author | Henry Bush | 2009-01-28 23:29:19 +0000 | 
|---|---|---|
| committer | Henry Bush | 2009-01-28 23:29:19 +0000 | 
| commit | a0a82d911c77b63f2069dbc39ab26394fe4d377d (patch) | |
| tree | 347c78404e52a33246b12917750eae833d5d9bf4 | |
| parent | 3f06e9c4eb9d5aadd7d00b9722ffa10d1ffa12c6 (diff) | |
| download | scummvm-rg350-a0a82d911c77b63f2069dbc39ab26394fe4d377d.tar.gz scummvm-rg350-a0a82d911c77b63f2069dbc39ab26394fe4d377d.tar.bz2 scummvm-rg350-a0a82d911c77b63f2069dbc39ab26394fe4d377d.zip  | |
T7G: start background music at start of input loop (0x0B). Should fix 2474078, but might break other things so I'm not going to backport it.
svn-id: r36125
| -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;  | 
