TOLTECS: Fixed music looping

This commit is contained in:
Filippos Karapetis 2011-10-22 12:41:51 +00:00 committed by Willem Jan Palenstijn
parent 14cbfd4607
commit 1bddee1e73
3 changed files with 5 additions and 10 deletions

View file

@ -50,7 +50,7 @@ void MusicPlayer::send(uint32 b) {
Audio::MidiPlayer::send(b); Audio::MidiPlayer::send(b);
} }
void MusicPlayer::playMIDI(const byte *data, uint32 size, MusicFlags flags) { void MusicPlayer::playMIDI(const byte *data, uint32 size, bool loop) {
Common::StackLock lock(_mutex); Common::StackLock lock(_mutex);
stopAndClear(); stopAndClear();
@ -76,7 +76,7 @@ void MusicPlayer::playMIDI(const byte *data, uint32 size, MusicFlags flags) {
setVolume(127); setVolume(127);
_isLooping = flags & MUSIC_LOOP; _isLooping = loop;
_isPlaying = true; _isPlaying = true;
} else { } else {
delete parser; delete parser;

View file

@ -29,16 +29,11 @@
namespace Toltecs { namespace Toltecs {
enum MusicFlags {
MUSIC_NORMAL = 0,
MUSIC_LOOP = 1
};
class MusicPlayer : public Audio::MidiPlayer { class MusicPlayer : public Audio::MidiPlayer {
public: public:
MusicPlayer(bool isGM = true); MusicPlayer(bool isGM = true);
void playMIDI(const byte *data, uint32 size, MusicFlags flags = MUSIC_NORMAL); void playMIDI(const byte *data, uint32 size, bool loop = false);
void pause(); void pause();
void resume(); void resume();
void stopAndClear(); void stopAndClear();

View file

@ -1050,8 +1050,8 @@ void ScriptInterpreter::sfStartSequence() {
_vm->_arc->closeResource(); _vm->_arc->closeResource();
if (!memcmp(data, "FORM", 4)) { if (!memcmp(data, "FORM", 4)) {
// TODO: Looping flag // TODO: It seems that music is always looping?
_vm->_musicPlayer->playMIDI(data, resourceSize); _vm->_musicPlayer->playMIDI(data, resourceSize, true);
} else { } else {
// TODO: Where does this occur? Are these SMF MIDI files? // TODO: Where does this occur? Are these SMF MIDI files?
warning("sfStartSequence: resource %d isn't XMIDI", sequenceResIndex); warning("sfStartSequence: resource %d isn't XMIDI", sequenceResIndex);