コード例 #1
0
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;
}
コード例 #2
0
ファイル: quicktime.cpp プロジェクト: Hellzed/xoreos
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++;
}
コード例 #3
0
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;
}
コード例 #4
0
ファイル: bink.cpp プロジェクト: mcajend/xoreos
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));
    }
}
コード例 #5
0
ファイル: exit_pellerator.cpp プロジェクト: Tkachov/scummvm
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;
}