bool CEnterSecClassState::StatusChangeMsg(CStatusChangeMsg *msg) { stopSound(_soundHandle); if (msg->_newStatus == _mode || (_mode == 2 && msg->_newStatus == 3)) { if (_mode == 2) { _soundHandle = queueSound("b#36.wav", _soundHandle); } else { _soundHandle = queueSound("b#31.wav", _soundHandle); } if (msg->_newStatus == 3) msg->_newStatus = 2; } else { changeView("SecClassLittleLift.Node 1.N"); if (msg->_newStatus == 1) { _soundHandle = queueSound("b#32.wav", _soundHandle); } else if (msg->_newStatus == 2) { _soundHandle = queueSound("b#25.wav", _soundHandle); } else if (msg->_newStatus == 3) { _soundHandle = queueSound("b#33.wav", _soundHandle); msg->_newStatus = 2; } } if (msg->_newStatus != 3) { if (msg->_newStatus == 2 && _mode == 1) playMovie(0, 10, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); else if (msg->_newStatus == 1) playMovie(11, 21, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } _cursorId = msg->_newStatus == 2 ? CURSOR_MOVE_FORWARD : CURSOR_INVALID; _mode = msg->_newStatus; return true; }
void QuickTimeDecoder::queueNextAudioChunk() { AudioSampleDesc *entry = (AudioSampleDesc *)_tracks[_audioTrackIndex]->sampleDescs[0]; Common::MemoryWriteStreamDynamic *wStream = new Common::MemoryWriteStreamDynamic(); _fd->seek(_tracks[_audioTrackIndex]->chunkOffsets[_curAudioChunk]); // First, we have to get the sample count uint32 sampleCount = entry->getAudioChunkSampleCount(_curAudioChunk); assert(sampleCount); if (isOldDemuxing()) { // Old-style audio demuxing // Then calculate the right sizes while (sampleCount > 0) { uint32 samples = 0, size = 0; if (entry->_samplesPerFrame >= 160) { samples = entry->_samplesPerFrame; size = entry->_bytesPerFrame; } else if (entry->_samplesPerFrame > 1) { samples = MIN<uint32>((1024 / entry->_samplesPerFrame) * entry->_samplesPerFrame, sampleCount); size = (samples / entry->_samplesPerFrame) * entry->_bytesPerFrame; } else { samples = MIN<uint32>(1024, sampleCount); size = samples * _tracks[_audioTrackIndex]->sampleSize; } // Now, we read in the data for this data and output it byte *data = (byte *)malloc(size); _fd->read(data, size); wStream->write(data, size); free(data); sampleCount -= samples; } } else { // New-style audio demuxing // Find our starting sample uint32 startSample = 0; for (uint32 i = 0; i < _curAudioChunk; i++) startSample += entry->getAudioChunkSampleCount(i); for (uint32 i = 0; i < sampleCount; i++) { uint32 size = (_tracks[_audioTrackIndex]->sampleSize != 0) ? _tracks[_audioTrackIndex]->sampleSize : _tracks[_audioTrackIndex]->sampleSizes[i + startSample]; // Now, we read in the data for this data and output it byte *data = (byte *)malloc(size); _fd->read(data, size); wStream->write(data, size); free(data); } } // Now queue the buffer queueSound(entry->createAudioStream(new Common::MemoryReadStream(wStream->getData(), wStream->size(), true))); delete wStream; _curAudioChunk++; }
bool CHeadSmashLever::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { if (_enabled) { playMovie(0, 14, 0); playSound(TRANSLATE("z#54.wav", "z#585.wav")); int soundHandle = playSound(TRANSLATE("z#45.wav", "z#576.wav")); queueSound(TRANSLATE("z#49.wav", "z#580.wav"), soundHandle); _ticks = getTicksCount(); _fieldE4 = true; } else { playMovie(0); playSound(TRANSLATE("z#56.wav", "z#587.wav")); } return true; }
void Bink::audioPacket(AudioTrack &audio) { if (_disableAudio) return; int outSize = audio.frameLen * audio.channels; while (!_disableAudio && (audio.bits->pos() < audio.bits->size())) { int16 *out = new int16[outSize]; memset(out, 0, outSize * 2); audioBlock(audio, out); if (_disableAudio) { delete[] out; return; } queueSound((const byte *) out, audio.blockSize * 2); if (audio.bits->pos() & 0x1F) // next data block starts at a 32-byte boundary audio.bits->skip(32 - (audio.bits->pos() & 0x1F)); } }
bool CExitPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { CString name = getName(); if (name == "ExitPellerator") { if (_statics->_v2 != 2) { switch (getRandomNumber(2)) { case 0: CPellerator::_soundHandle = queueSound("z#457.wav", CPellerator::_soundHandle); break; case 1: CPellerator::_soundHandle = queueSound("z#458.wav", CPellerator::_soundHandle); break; default: CPellerator::_soundHandle = queueSound("z#464.wav", CPellerator::_soundHandle); break; } } switch (_statics->_v2) { case 0: changeView("PromenadeDeck.Node 1.W"); break; case 1: changeView("MusicRoomLobby.Node 1.S"); break; case 4: changeView("TopOfWell.Node 6.N"); break; case 5: changeView("1stClassRestaurant.Lobby Node.E"); break; case 6: changeView(_statics->_isWinter ? "FrozenArboretum.Node 4.S" : "Arboretum.Node 4.W"); break; default: petDisplayMessage(2, "Please exit from the other side."); CPellerator::_soundHandle = queueSound("z#438.wav", CPellerator::_soundHandle); } } else if (name == "ExitPellerator2") { if (_statics->_v2 == 2) { switch (getRandomNumber(2)) { case 0: CPellerator::_soundHandle = queueSound("z#457.wav", CPellerator::_soundHandle); break; case 1: CPellerator::_soundHandle = queueSound("z#458.wav", CPellerator::_soundHandle); break; default: CPellerator::_soundHandle = queueSound("z#464.wav", CPellerator::_soundHandle); break; } } if (_statics->_v2 == 2) { changeView("Bar.Node 1.N"); } else { petDisplayMessage(2, "Please exit from the other side."); CPellerator::_soundHandle = queueSound("z#438.wav", CPellerator::_soundHandle); } } return true; }