void IMuseDigital::setDigMusicSequence(int seqId) { int l, num = -1; if (seqId == 0) seqId = 2000; for (l = 0; _digSeqMusicTable[l].soundId != -1; l++) { if ((_digSeqMusicTable[l].soundId == seqId)) { debug(5, "Set music sequence: %s, %s", _digSeqMusicTable[l].name, _digSeqMusicTable[l].filename); num = l; break; } } if (num == -1) return; if (_curMusicSeq == num) return; if (num != 0) { if (_curMusicSeq == 0) { playDigMusic(_digSeqMusicTable[num].name, &_digSeqMusicTable[num], 0, true); _nextSeqToPlay = 0; _attributes[DIG_SEQ_OFFSET + num] = 1; } else { if ((_digSeqMusicTable[_curMusicSeq].opcode == 4) || (_digSeqMusicTable[_curMusicSeq].opcode == 6)) { _nextSeqToPlay = num; return; } else { playDigMusic(_digSeqMusicTable[num].name, &_digSeqMusicTable[num], 0, true); _nextSeqToPlay = 0; _attributes[DIG_SEQ_OFFSET + num] = 1; } } } else { if (_nextSeqToPlay != 0) { playDigMusic(_digSeqMusicTable[_nextSeqToPlay].name, &_digSeqMusicTable[_nextSeqToPlay], 0, true); _attributes[DIG_SEQ_OFFSET + _nextSeqToPlay] = 1; num = _nextSeqToPlay; _nextSeqToPlay = 0; } else { if (_curMusicState != 0) { playDigMusic(_digStateMusicTable[_curMusicState].name, &_digStateMusicTable[_curMusicState], _curMusicState, true); } else playDigMusic(NULL, &_digStateMusicTable[0], _curMusicState, true); num = 0; } } _curMusicSeq = num; }
void IMuseDigital::setDigMusicState(int stateId) { int l, num = -1; for (l = 0; _digStateMusicTable[l].soundId != -1; l++) { if ((_digStateMusicTable[l].soundId == stateId)) { debug(5, "Set music state: %s, %s", _digStateMusicTable[l].name, _digStateMusicTable[l].filename); num = l; break; } } if (num == -1) { for (l = 0; _digStateMusicMap[l].roomId != -1; l++) { if ((_digStateMusicMap[l].roomId == stateId)) { break; } } num = l; int offset = _attributes[_digStateMusicMap[num].offset]; if (offset == 0) { if (_attributes[_digStateMusicMap[num].attribPos] != 0) { num = _digStateMusicMap[num].stateIndex3; } else { num = _digStateMusicMap[num].stateIndex1; } } else { int stateIndex2 = _digStateMusicMap[num].stateIndex2; if (stateIndex2 == 0) { num = _digStateMusicMap[num].stateIndex1 + offset; } else { num = stateIndex2; } } } debug(5, "Set music state: %s, %s", _digStateMusicTable[num].name, _digStateMusicTable[num].filename); if (_curMusicState == num) return; if (_curMusicSeq == 0) { if (num == 0) playDigMusic(NULL, &_digStateMusicTable[0], num, false); else playDigMusic(_digStateMusicTable[num].name, &_digStateMusicTable[num], num, false); } _curMusicState = num; }