diff --git a/imuse/imuse.h b/imuse/imuse.h index 7d2e59b14ca..5b6f96a027b 100644 --- a/imuse/imuse.h +++ b/imuse/imuse.h @@ -146,14 +146,13 @@ public: void stopAllSounds(); void pause(bool pause); void setMusicState(int stateId); - void setMusicSequence(int seqId); + int setMusicSequence(int seqId); void refreshScripts(); void flushTracks(); bool isVoicePlaying(); char *getCurMusicSoundName(); bool getSoundStatus(const char *soundName) const; int32 getPosIn60HzTicks(const char *soundName); - int getCurMusicSeqId() { return _curMusicSeq; } }; extern Imuse *g_imuse; diff --git a/imuse/imuse_music.cpp b/imuse/imuse_music.cpp index 057d549ffca..76031ad9b07 100644 --- a/imuse/imuse_music.cpp +++ b/imuse/imuse_music.cpp @@ -45,9 +45,12 @@ void Imuse::setMusicState(int stateId) { _curMusicState = num; } -void Imuse::setMusicSequence(int seqId) { +int Imuse::setMusicSequence(int seqId) { int l, num = -1; + if (seqId == -1) + return _seqMusicTable[_curMusicSeq].soundId; + if (seqId == 0) seqId = 2000; @@ -61,7 +64,7 @@ void Imuse::setMusicSequence(int seqId) { assert(num != -1); if (_curMusicSeq == num) - return; + return _seqMusicTable[_curMusicSeq].soundId; if (num != 0) { playMusic(&_seqMusicTable[num], 0, true); @@ -71,6 +74,7 @@ void Imuse::setMusicSequence(int seqId) { } _curMusicSeq = num; + return _seqMusicTable[_curMusicSeq].soundId; } void Imuse::playMusic(const ImuseTable *table, int atribPos, bool sequence) { diff --git a/lua.cpp b/lua.cpp index 1a7b6464c66..618ba19d254 100644 --- a/lua.cpp +++ b/lua.cpp @@ -997,9 +997,7 @@ static void ImSetState() { static void ImSetSequence() { int state = check_int(1); - if (state != -1) - g_imuse->setMusicSequence(state); - lua_pushnumber(g_imuse->getCurMusicSeqId()); + lua_pushnumber(g_imuse->setMusicSequence(state)); } static void SaveIMuse() {