Translation::Translation(QObject *parent) : QObject(parent) { languages = new QMultiMap<QString, QString>(); foreach( QString qmFile, qmFiles()){ if(!languageName(qmFile).isEmpty()) languages->insert(languageName(qmFile), qmFile); } loadLanguage(); loadLanguageFile(); }
void KyraEngine_MR::initSceneScript(int unk1) { const SceneDesc &scene = _sceneList[_mainCharacter.sceneId]; musicUpdate(0); char filename[16]; strcpy(filename, scene.filename1); strcat(filename, ".DAT"); _res->exists(filename, true); Common::SeekableReadStream *stream = _res->createReadStream(filename); assert(stream); stream->seek(2, SEEK_CUR); byte scaleTable[15]; stream->read(scaleTable, 15); stream->read(_sceneDatPalette, 45); stream->read(_sceneDatLayerTable, 15); int16 shapesCount = stream->readSint16LE(); for (int i = 0; i < 15; ++i) _scaleTable[i] = (uint16(scaleTable[i]) << 8) / 100; if (shapesCount > 0) { strcpy(filename, scene.filename1); strcat(filename, "9.CPS"); musicUpdate(0); _screen->loadBitmap(filename, 3, 3, 0); int pageBackUp = _screen->_curPage; _screen->_curPage = 2; for (int i = 0; i < shapesCount; ++i) { int16 x = stream->readSint16LE(); int16 y = stream->readSint16LE(); int16 w = stream->readSint16LE(); int16 h = stream->readSint16LE(); _sceneShapeDescs[i].drawX = stream->readSint16LE(); _sceneShapeDescs[i].drawY = stream->readSint16LE(); _sceneShapes[i] = _screen->encodeShape(x, y, w, h, 0); assert(_sceneShapes[i]); musicUpdate(0); } _screen->_curPage = pageBackUp; musicUpdate(0); } delete stream; stream = 0; musicUpdate(0); strcpy(filename, scene.filename1); strcat(filename, ".CPS"); _screen->loadBitmap(filename, 3, 3, 0); musicUpdate(0); Common::set_to(_specialSceneScriptState, _specialSceneScriptState+ARRAYSIZE(_specialSceneScriptState), false); _sceneEnterX1 = 160; _sceneEnterY1 = 0; _sceneEnterX2 = 296; _sceneEnterY2 = 93; _sceneEnterX3 = 160; _sceneEnterY3 = 171; _sceneEnterX4 = 24; _sceneEnterY4 = 93; _sceneMinX = 0; _sceneMaxX = 319; _emc->init(&_sceneScriptState, &_sceneScriptData); strcpy(filename, scene.filename2); strcat(filename, ".EMC"); musicUpdate(0); _res->exists(filename, true); _emc->load(filename, &_sceneScriptData, &_opcodes); strcpy(filename, scene.filename2); strcat(filename, "."); loadLanguageFile(filename, _sceneStrings); musicUpdate(0); runSceneScript8(); _emc->start(&_sceneScriptState, 0); _sceneScriptState.regs[0] = _mainCharacter.sceneId; _sceneScriptState.regs[5] = unk1; while (_emc->isValid(&_sceneScriptState)) _emc->run(&_sceneScriptState); _screen->copyRegionToBuffer(3, 0, 0, 320, 200, _gamePlayBuffer); musicUpdate(0); for (int i = 0; i < 10; ++i) { _emc->init(&_sceneSpecialScripts[i], &_sceneScriptData); _emc->start(&_sceneSpecialScripts[i], i+9); musicUpdate(0); _sceneSpecialScriptsTimer[i] = 0; } _sceneEnterX1 &= ~3; _sceneEnterY1 &= ~1; _sceneEnterX2 &= ~3; _sceneEnterY2 &= ~1; _sceneEnterX3 &= ~3; _sceneEnterY3 &= ~1; _sceneEnterX4 &= ~3; _sceneEnterY4 &= ~1; musicUpdate(0); }
void KyraEngine_MR::startup() { _album.wsa = new WSAMovie_v2(this); assert(_album.wsa); _album.leftPage.wsa = new WSAMovie_v2(this); assert(_album.leftPage.wsa); _album.rightPage.wsa = new WSAMovie_v2(this); assert(_album.rightPage.wsa); _gamePlayBuffer = new uint8[64000]; _interface = new uint8[17920]; _interfaceCommandLine = new uint8[3840]; _screen->setFont(Screen::FID_8_FNT); _stringBuffer = new char[500]; allocAnimObjects(1, 16, 50); memset(_sceneShapes, 0, sizeof(_sceneShapes)); _screenBuffer = new uint8[64000]; if (!loadLanguageFile("ITEMS.", _itemFile)) error("Couldn't load ITEMS"); if (!loadLanguageFile("SCORE.", _scoreFile)) error("Couldn't load SCORE"); if (!loadLanguageFile("C_CODE.", _cCodeFile)) error("Couldn't load C_CODE"); if (!loadLanguageFile("SCENES.", _scenesFile)) error("Couldn't load SCENES"); if (!loadLanguageFile("OPTIONS.", _optionsFile)) error("Couldn't load OPTIONS"); if (!loadLanguageFile("_ACTOR.", _actorFile)) error("couldn't load _ACTOR"); openTalkFile(0); _currentTalkFile = 0; openTalkFile(1); loadCostPal(); for (int i = 0; i < 16; ++i) { _sceneAnims[i].flags = 0; _sceneAnimMovie[i] = new WSAMovie_v2(this); assert(_sceneAnimMovie[i]); } _screen->_curPage = 0; _talkObjectList = new TalkObject[88]; memset(_talkObjectList, 0, sizeof(TalkObject)*88); for (int i = 0; i < 88; ++i) _talkObjectList[i].sceneId = 0xFF; _gfxBackUpRect = new uint8[_screen->getRectSize(32, 32)]; initItemList(50); resetItemList(); loadShadowShape(); loadExtrasShapes(); _characterShapeFile = 0; loadCharacterShapes(_characterShapeFile); updateMalcolmShapes(); initMainButtonList(true); loadButtonShapes(); loadInterfaceShapes(); _screen->loadPalette("PALETTE.COL", _screen->getPalette(0)); _paletteOverlay = new uint8[256]; _screen->generateOverlay(_screen->getPalette(0), _paletteOverlay, 0xF0, 0x19); loadInterface(); clearAnimObjects(); _scoreMax = 0; for (int i = 0; i < _scoreTableSize; ++i) { if (_scoreTable[i] > 0) _scoreMax += _scoreTable[i]; } memset(_newSceneDlgState, 0, sizeof(_newSceneDlgState)); memset(_conversationState, -1, sizeof(_conversationState)); _sceneList = new SceneDesc[98]; assert(_sceneList); memset(_sceneList, 0, sizeof(SceneDesc)*98); _sceneListSize = 98; runStartupScript(1, 0); _res->exists("MOODOMTR.WSA", true); _invWsa = new WSAMovie_v2(this); assert(_invWsa); _invWsa->open("MOODOMTR.WSA", 1, 0); _invWsaFrame = 6; saveGameStateIntern(0, "New Game", 0); if (_gameToLoad == -1) enterNewScene(_mainCharacter.sceneId, _mainCharacter.facing, 0, 0, 1); else loadGameStateCheck(_gameToLoad); if (_menuDirectlyToLoad) (*_mainButtonData[0].buttonCallback)(&_mainButtonData[0]); _screen->updateScreen(); _screen->showMouse(); setNextIdleAnimTimer(); setWalkspeed(_configWalkspeed); }