Exemplo n.º 1
0
NavigationScene::NavigationScene(NeverhoodEngine *vm, Module *parentModule, uint32 navigationListId, int navigationIndex, const byte *itemsTypes)
    : Scene(vm, parentModule), _itemsTypes(itemsTypes), _navigationIndex(navigationIndex), _smackerDone(false),
      _isWalkingForward(false), _isTurning(false), _smackerFileHash(0), _interactive(true), _leaveSceneAfter(false) {

    _navigationList = _vm->_staticData->getNavigationList(navigationListId);
    _navigationListId = navigationListId;

    if (_navigationIndex < 0) {
        _navigationIndex = (int)getGlobalVar(V_NAVIGATION_INDEX);
        if (_navigationIndex >= (int)_navigationList->size())
            _navigationIndex = 0;
    }
    setGlobalVar(V_NAVIGATION_INDEX, _navigationIndex);

    SetUpdateHandler(&NavigationScene::update);
    SetMessageHandler(&NavigationScene::handleMessage);

    _smackerPlayer = addSmackerPlayer(new SmackerPlayer(_vm, this, (*_navigationList)[_navigationIndex].fileHash, true, true));

    createMouseCursor();

    _vm->_screen->clear();
    _vm->_screen->setSmackerDecoder(_smackerPlayer->getSmackerDecoder());

    sendMessage(_parentModule, 0x100A, _navigationIndex);
}
Exemplo n.º 2
0
void SmackerScene::nextVideo() {
	debug(0, "SmackerScene::nextVideo()");

	_fileHashListIndex++;
	
	if (_fileHashList && _fileHashList[_fileHashListIndex] != 0) {
		uint32 smackerFileHash = _fileHashList[_fileHashListIndex];
		ResourceHandle resourceHandle;
		_vm->_res->queryResource(smackerFileHash, resourceHandle);
		if (resourceHandle.type() != kResTypeVideo) {
			// Not a Smacker file
			_vm->_screen->setSmackerDecoder(NULL);
			sendMessage(_parentModule, 0x1009, 0);
			return;
		}
		_videoPlayedBefore = getSubVar(VA_SMACKER_PLAYED, smackerFileHash);
		if (!_videoPlayedBefore)
			setSubVar(VA_SMACKER_PLAYED, smackerFileHash, 1);
		if (_fileHashListIndex == 0)
			_smackerPlayer = addSmackerPlayer(new SmackerPlayer(_vm, this, smackerFileHash, _doubleSurface, false));
		else
			_smackerPlayer->open(smackerFileHash, false);
		_vm->_screen->setSmackerDecoder(_smackerPlayer->getSmackerDecoder());
	} else {
		_vm->_screen->setSmackerDecoder(NULL);
		sendMessage(_parentModule, 0x1009, 0);
	}

}