TOLTECS: Fixed music looping
This commit is contained in:
parent
14cbfd4607
commit
1bddee1e73
3 changed files with 5 additions and 10 deletions
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue