Actually check if a sound is active, if the sound is outside music engine.

Add some more HE differences

svn-id: r15188
This commit is contained in:
Travis Howell 2004-09-19 12:22:47 +00:00
parent 989de0d5dc
commit e22230e223
5 changed files with 28 additions and 2 deletions

View file

@ -1159,7 +1159,7 @@ void ScummEngine::launch() {
else if (_gameId == GID_MANIAC) else if (_gameId == GID_MANIAC)
_numActors = 25; _numActors = 25;
else if (_heversion >= 80) else if (_heversion >= 80)
_numActors = 62; _numActors = 63;
else else
_numActors = 13; _numActors = 13;

View file

@ -779,6 +779,9 @@ int Sound::isSoundRunning(int sound) const {
if (!_vm->isResourceLoaded(rtSound, sound)) if (!_vm->isResourceLoaded(rtSound, sound))
return 0; return 0;
if (_vm->_mixer->isSoundIDActive(sound))
return 1;
if (_vm->_musicEngine) if (_vm->_musicEngine)
return _vm->_musicEngine->getSoundStatus(sound); return _vm->_musicEngine->getSoundStatus(sound);

View file

@ -386,6 +386,7 @@ void ScummEngine::drawString(int a, const byte *msg) {
int i, c; int i, c;
byte fontHeight = 0; byte fontHeight = 0;
uint color; uint color;
int code = (_heversion >= 80) ? 127 : 64;
addMessageToStack(msg, buf, sizeof(buf)); addMessageToStack(msg, buf, sizeof(buf));
@ -433,7 +434,19 @@ void ScummEngine::drawString(int a, const byte *msg) {
} }
for (i = 0; (c = buf[i++]) != 0;) { for (i = 0; (c = buf[i++]) != 0;) {
if (c == 0xFE || c == 0xFF) { if (c == code) {
c = buf[i++];
switch (c) {
case 110:
if (_charset->_center) {
_charset->_left = _charset->_startLeft - _charset->getStringWidth(a, buf + i);
} else {
_charset->_left = _charset->_startLeft;
}
_charset->_top += fontHeight;
break;
}
} else if (c == 0xFE || c == 0xFF) {
c = buf[i++]; c = buf[i++];
switch (c) { switch (c) {
case 9: case 9:

View file

@ -463,6 +463,13 @@ void SoundMixer::pauseHandle(PlayingSoundHandle handle, bool paused) {
_channels[index]->pause(paused); _channels[index]->pause(paused);
} }
bool SoundMixer::isSoundIDActive(int id) {
for (int i = 0; i != NUM_CHANNELS; i++)
if (_channels[i] && _channels[i]->getId() == id)
return true;
return false;
}
bool SoundMixer::hasActiveSFXChannel() { bool SoundMixer::hasActiveSFXChannel() {
// FIXME/TODO: We need to distinguish between SFX and music channels // FIXME/TODO: We need to distinguish between SFX and music channels
Common::StackLock lock(_mutex); Common::StackLock lock(_mutex);

View file

@ -145,6 +145,9 @@ public:
/** pause/unpause all channels */ /** pause/unpause all channels */
void pauseAll(bool paused); void pauseAll(bool paused);
/** check if sound ID is active */
bool isSoundIDActive(int id);
/** check if mixer is paused */ /** check if mixer is paused */
bool isPaused(); bool isPaused();