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 /engines | |
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
Diffstat (limited to 'engines')
-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; |