diff options
Diffstat (limited to 'engines/kyra/staticres_lol.cpp')
-rw-r--r-- | engines/kyra/staticres_lol.cpp | 235 |
1 files changed, 93 insertions, 142 deletions
diff --git a/engines/kyra/staticres_lol.cpp b/engines/kyra/staticres_lol.cpp index bf838cd572..63bc7fa99b 100644 --- a/engines/kyra/staticres_lol.cpp +++ b/engines/kyra/staticres_lol.cpp @@ -30,31 +30,23 @@ namespace Kyra { const LoLCharacter *StaticResource::loadCharData(int id, int &entries) { - return (const LoLCharacter *)getData(id, kLolCharData, entries); + return (const LoLCharacter *)getData(id, kLoLCharData, entries); } const SpellProperty *StaticResource::loadSpellData(int id, int &entries) { - return (const SpellProperty *)getData(id, kLolSpellData, entries); + return (const SpellProperty *)getData(id, kLoLSpellData, entries); } const CompassDef *StaticResource::loadCompassData(int id, int &entries) { - return (const CompassDef *)getData(id, kLolCompassData, entries); + return (const CompassDef *)getData(id, kLoLCompassData, entries); } const FlyingObjectShape *StaticResource::loadFlyingObjectData(int id, int &entries) { - return (const FlyingObjectShape *)getData(id, kLolFlightShpData, entries); + return (const FlyingObjectShape *)getData(id, kLoLFlightShpData, entries); } -const uint16 *StaticResource::loadRawDataBe16(int id, int &entries) { - return (const uint16 *)getData(id, kLolRawDataBe16, entries); -} - -const uint32 *StaticResource::loadRawDataBe32(int id, int &entries) { - return (const uint32 *)getData(id, kLolRawDataBe32, entries); -} - -const ButtonDef *StaticResource::loadButtonDefs(int id, int &entries) { - return (const ButtonDef *)getData(id, kLolButtonData, entries); +const LoLButtonDef *StaticResource::loadButtonDefs(int id, int &entries) { + return (const LoLButtonDef *)getData(id, kLoLButtonData, entries); } bool StaticResource::loadCharData(Common::SeekableReadStream &stream, void *&ptr, int &size) { @@ -164,34 +156,10 @@ bool StaticResource::loadFlyingObjectData(Common::SeekableReadStream &stream, vo return true; } -bool StaticResource::loadRawDataBe16(Common::SeekableReadStream &stream, void *&ptr, int &size) { - size = stream.size() >> 1; - - uint16 *r = new uint16[size]; - - for (int i = 0; i < size; i++) - r[i] = stream.readUint16BE(); - - ptr = r; - return true; -} - -bool StaticResource::loadRawDataBe32(Common::SeekableReadStream &stream, void *&ptr, int &size) { - size = stream.size() >> 2; - - uint32 *r = new uint32[size]; - - for (int i = 0; i < size; i++) - r[i] = stream.readUint32BE(); - - ptr = r; - return true; -} - bool StaticResource::loadButtonDefs(Common::SeekableReadStream &stream, void *&ptr, int &size) { size = stream.size() / 18; - ButtonDef *r = new ButtonDef[size]; + LoLButtonDef *r = new LoLButtonDef[size]; for (int i = 0; i < size; i++) { r[i].buttonflags = stream.readUint16BE(); @@ -237,23 +205,8 @@ void StaticResource::freeFlyingObjectData(void *&ptr, int &size) { size = 0; } - -void StaticResource::freeRawDataBe16(void *&ptr, int &size) { - uint16 *data = (uint16 *)ptr; - delete[] data; - ptr = 0; - size = 0; -} - -void StaticResource::freeRawDataBe32(void *&ptr, int &size) { - uint32 *data = (uint32 *)ptr; - delete[] data; - ptr = 0; - size = 0; -} - void StaticResource::freeButtonDefs(void *&ptr, int &size) { - ButtonDef *d = (ButtonDef *)ptr; + LoLButtonDef *d = (LoLButtonDef *)ptr; delete[] d; ptr = 0; size = 0; @@ -289,88 +242,79 @@ void LoLEngine::initStaticResource() { if (_flags.isDemo) return; - _pakFileList = _staticres->loadStrings(kLolIngamePakFiles, _pakFileListSize); - _charDefaults = _staticres->loadCharData(kLolCharacterDefs, _charDefaultsSize); - _ingameSoundIndex = (const uint16 *)_staticres->loadRawData(kLolIngameSfxIndex, _ingameSoundIndexSize); - _musicTrackMap = _staticres->loadRawData(kLolMusicTrackMap, _musicTrackMapSize); - _ingameGMSoundIndex = _staticres->loadRawData(kLolIngameGMSfxIndex, _ingameGMSoundIndexSize); - _ingameMT32SoundIndex = _staticres->loadRawData(kLolIngameMT32SfxIndex, _ingameMT32SoundIndexSize); - _ingamePCSpeakerSoundIndex = _staticres->loadRawData(kLolIngamePcSpkSfxIndex, _ingamePCSpeakerSoundIndexSize); - _spellProperties = _staticres->loadSpellData(kLolSpellProperties, _spellPropertiesSize); - _gameShapeMap = (const int8 *)_staticres->loadRawData(kLolGameShapeMap, _gameShapeMapSize); - _sceneItemOffs = (const int8 *)_staticres->loadRawData(kLolSceneItemOffs, _sceneItemOffsSize); - _charInvIndex = _staticres->loadRawData(kLolCharInvIndex, _charInvIndexSize); - _charInvDefs = _staticres->loadRawData(kLolCharInvDefs, _charInvDefsSize); - _charDefsMan = _staticres->loadRawDataBe16(kLolCharDefsMan, _charDefsManSize); - _charDefsWoman = _staticres->loadRawDataBe16(kLolCharDefsWoman, _charDefsWomanSize); - _charDefsKieran = _staticres->loadRawDataBe16(kLolCharDefsKieran, _charDefsKieranSize); - _charDefsAkshel = _staticres->loadRawDataBe16(kLolCharDefsAkshel, _charDefsAkshelSize); - _expRequirements = (const int32 *)_staticres->loadRawDataBe32(kLolExpRequirements, _expRequirementsSize); - _monsterModifiers = _staticres->loadRawDataBe16(kLolMonsterModifiers, _monsterModifiersSize); - _monsterShiftOffs = (const int8 *)_staticres->loadRawData(kLolMonsterShiftOffsets, _monsterShiftOffsSize); - _monsterDirFlags = _staticres->loadRawData(kLolMonsterDirFlags, _monsterDirFlagsSize); - _monsterScaleX = _staticres->loadRawData(kLolMonsterScaleX, _monsterScaleXSize); - _monsterScaleY = _staticres->loadRawData(kLolMonsterScaleY, _monsterScaleYSize); - _monsterScaleWH = _staticres->loadRawDataBe16(kLolMonsterScaleWH, _monsterScaleWHSize); - _inventorySlotDesc = _staticres->loadRawDataBe16(kLolInventoryDesc, _inventorySlotDescSize); - _levelShpList = _staticres->loadStrings(kLolLevelShpList, _levelShpListSize); - _levelDatList = _staticres->loadStrings(kLolLevelDatList, _levelDatListSize); - _compassDefs = _staticres->loadCompassData(kLolCompassDefs, _compassDefsSize); - _flyingItemShapes = _staticres->loadFlyingObjectData(kLolFlyingObjectShp, _flyingItemShapesSize); - _itemCost = _staticres->loadRawDataBe16(kLolItemPrices, _itemCostSize); - _stashSetupData = _staticres->loadRawData(kLolStashSetup, _stashSetupDataSize); - - _dscUnk1 = (const int8 *)_staticres->loadRawData(kLolDscUnk1, _dscUnk1Size); - _dscShapeIndex = (const int8 *)_staticres->loadRawData(kLolDscShapeIndex, _dscShapeIndexSize); - _dscOvlMap = _staticres->loadRawData(kLolDscOvlMap, _dscOvlMapSize); - _dscShapeScaleW = _staticres->loadRawDataBe16(kLolDscScaleWidthData, _dscShapeScaleWSize); - _dscShapeScaleH = _staticres->loadRawDataBe16(kLolDscScaleHeightData, _dscShapeScaleHSize); - _dscShapeX = (const int16 *)_staticres->loadRawDataBe16(kLolDscX, _dscShapeXSize); - _dscShapeY = (const int8 *)_staticres->loadRawData(kLolDscY, _dscShapeYSize); - _dscTileIndex = _staticres->loadRawData(kLolDscTileIndex, _dscTileIndexSize); - _dscUnk2 = _staticres->loadRawData(kLolDscUnk2, _dscUnk2Size); - _dscDoorShpIndex = _staticres->loadRawData(kLolDscDoorShapeIndex, _dscDoorShpIndexSize); - _dscDim1 = (const int8 *)_staticres->loadRawData(kLolDscDimData1, _dscDim1Size); - _dscDim2 = (const int8 *)_staticres->loadRawData(kLolDscDimData2, _dscDim2Size); - _dscBlockMap = _staticres->loadRawData(kLolDscBlockMap, _dscBlockMapSize); - _dscDimMap = _staticres->loadRawData(kLolDscDimMap, _dscDimMapSize); - _dscDoorMonsterScaleTable = _staticres->loadRawDataBe16(kLolDscDoorScale, _dscDoorMonsterScaleTableSize); - _dscShapeOvlIndex = _staticres->loadRawData(kLolDscOvlIndex, _dscShapeOvlIndexSize); - _dscDoor4 = _staticres->loadRawDataBe16(kLolDscDoor4, _dscDoor4Size); - _dscBlockIndex = (const int8 *)_staticres->loadRawData(kLolDscBlockIndex, _dscBlockIndexSize); - _dscDoor1 = _staticres->loadRawData(kLolDscDoor1, _dscDoor1Size); - _dscDoorMonsterX = (const int16 *)_staticres->loadRawDataBe16(kLolDscDoorX, _dscDoorMonsterXSize); - _dscDoorMonsterY = (const int16 *)_staticres->loadRawDataBe16(kLolDscDoorY, _dscDoorMonsterYSize); - - _scrollXTop = _staticres->loadRawData(kLolScrollXTop, _scrollXTopSize); - _scrollYTop = _staticres->loadRawData(kLolScrollYTop, _scrollYTopSize); - _scrollXBottom = _staticres->loadRawData(kLolScrollXBottom, _scrollXBottomSize); - _scrollYBottom = _staticres->loadRawData(kLolScrollYBottom, _scrollYBottomSize); - - const char *const *tmpSndList = _staticres->loadStrings(kLolIngameSfxFiles, _ingameSoundListSize); + int tempSize; + _pakFileList = _staticres->loadStrings(kLoLIngamePakFiles, _pakFileListSize); + _charDefaults = _staticres->loadCharData(kLoLCharacterDefs, _charDefaultsSize); + _ingameSoundIndex = (const uint16 *)_staticres->loadRawData(kLoLIngameSfxIndex, tempSize); + _musicTrackMap = _staticres->loadRawData(kLoLMusicTrackMap, tempSize); + _ingameGMSoundIndex = _staticres->loadRawData(kLoLIngameGMSfxIndex, _ingameGMSoundIndexSize); + _ingameMT32SoundIndex = _staticres->loadRawData(kLoLIngameMT32SfxIndex, _ingameMT32SoundIndexSize); + _ingamePCSpeakerSoundIndex = _staticres->loadRawData(kLoLIngamePcSpkSfxIndex, _ingamePCSpeakerSoundIndexSize); + _spellProperties = _staticres->loadSpellData(kLoLSpellProperties, tempSize); + _gameShapeMap = (const int8 *)_staticres->loadRawData(kLoLGameShapeMap, tempSize); + _sceneItemOffs = (const int8 *)_staticres->loadRawData(kLoLSceneItemOffs, tempSize); + _charInvIndex = _staticres->loadRawData(kLoLCharInvIndex, tempSize); + _charInvDefs = _staticres->loadRawData(kLoLCharInvDefs, tempSize); + _charDefsMan = _staticres->loadRawDataBe16(kLoLCharDefsMan, tempSize); + _charDefsWoman = _staticres->loadRawDataBe16(kLoLCharDefsWoman, tempSize); + _charDefsKieran = _staticres->loadRawDataBe16(kLoLCharDefsKieran, tempSize); + _charDefsAkshel = _staticres->loadRawDataBe16(kLoLCharDefsAkshel, tempSize); + _expRequirements = (const int32 *)_staticres->loadRawDataBe32(kLoLExpRequirements, tempSize); + _monsterModifiers = _staticres->loadRawDataBe16(kLoLMonsterModifiers, tempSize); + _monsterShiftOffs = (const int8 *)_staticres->loadRawData(kLoLMonsterShiftOffsets, tempSize); + _monsterDirFlags = _staticres->loadRawData(kLoLMonsterDirFlags, tempSize); + _monsterScaleX = _staticres->loadRawData(kLoLMonsterScaleX, tempSize); + _monsterScaleY = _staticres->loadRawData(kLoLMonsterScaleY, tempSize); + _monsterScaleWH = _staticres->loadRawDataBe16(kLoLMonsterScaleWH, tempSize); + _inventorySlotDesc = _staticres->loadRawDataBe16(kLoLInventoryDesc, tempSize); + _levelShpList = _staticres->loadStrings(kLoLLevelShpList, tempSize); + _levelDatList = _staticres->loadStrings(kLoLLevelDatList, tempSize); + _compassDefs = _staticres->loadCompassData(kLoLCompassDefs, tempSize); + _flyingItemShapes = _staticres->loadFlyingObjectData(kLoLFlyingObjectShp, tempSize); + _itemCost = _staticres->loadRawDataBe16(kLoLItemPrices, tempSize); + _stashSetupData = _staticres->loadRawData(kLoLStashSetup, tempSize); + + _dscWalls = (const int8 *)_staticres->loadRawData(kLoLDscWalls, tempSize); + + _dscOvlMap = _staticres->loadRawData(kLoLDscOvlMap, tempSize); + _dscShapeOvlIndex = _staticres->loadRawData(kLoLDscOvlIndex, tempSize); + _dscShapeScaleW = _staticres->loadRawDataBe16(kLoLDscScaleWidthData, tempSize); + _dscShapeScaleH = _staticres->loadRawDataBe16(kLoLDscScaleHeightData, tempSize); + _dscShapeY = (const int8 *)_staticres->loadRawData(kLoLBaseDscY, tempSize); + + _dscDoorMonsterScaleTable = _staticres->loadRawDataBe16(kLoLDscDoorScale, tempSize); + _dscDoor4 = _staticres->loadRawDataBe16(kLoLDscDoor4, tempSize); + _dscDoorMonsterX = (const int16 *)_staticres->loadRawDataBe16(kLoLDscDoorX, tempSize); + _dscDoorMonsterY = (const int16 *)_staticres->loadRawDataBe16(kLoLDscDoorY, tempSize); + + _scrollXTop = _staticres->loadRawData(kLoLScrollXTop, tempSize); + _scrollYTop = _staticres->loadRawData(kLoLScrollYTop, tempSize); + _scrollXBottom = _staticres->loadRawData(kLoLScrollXBottom, tempSize); + _scrollYBottom = _staticres->loadRawData(kLoLScrollYBottom, tempSize); + + const char *const *tmpSndList = _staticres->loadStrings(kLoLIngameSfxFiles, _ingameSoundListSize); if (tmpSndList) { - _ingameSoundList = new char *[_ingameSoundListSize]; + _ingameSoundList = new char*[_ingameSoundListSize]; for (int i = 0; i < _ingameSoundListSize; i++) { _ingameSoundList[i] = new char[strlen(tmpSndList[i]) + 1]; strcpy(_ingameSoundList[i], tmpSndList[i]); } - _staticres->unloadId(kLolIngameSfxFiles); + _staticres->unloadId(kLoLIngameSfxFiles); } - _buttonData = _staticres->loadButtonDefs(kLolButtonDefs, _buttonDataSize); - _buttonList1 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList1, _buttonList1Size); - _buttonList2 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList2, _buttonList2Size); - _buttonList3 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList3, _buttonList3Size); - _buttonList4 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList4, _buttonList4Size); - _buttonList5 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList5, _buttonList5Size); - _buttonList6 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList6, _buttonList6Size); - _buttonList7 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList7, _buttonList7Size); - _buttonList8 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList8, _buttonList8Size); + _buttonData = _staticres->loadButtonDefs(kLoLButtonDefs, tempSize); + _buttonList1 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList1, tempSize); + _buttonList2 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList2, tempSize); + _buttonList3 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList3, tempSize); + _buttonList4 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList4, tempSize); + _buttonList5 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList5, tempSize); + _buttonList6 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList6, tempSize); + _buttonList7 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList7, tempSize); + _buttonList8 = (const int16 *)_staticres->loadRawDataBe16(kLoLButtonList8, tempSize); - _autoMapStrings = _staticres->loadRawDataBe16(kLolMapStringId, _autoMapStringsSize); + _autoMapStrings = _staticres->loadRawDataBe16(kLoLMapStringId, tempSize); - int tempSize; - const uint8 *tmp = _staticres->loadRawData(kLolLegendData, tempSize); + const uint8 *tmp = _staticres->loadRawData(kLoLLegendData, tempSize); uint8 entrySize = tempSize / 12; tempSize /= entrySize; if (tempSize) { @@ -382,19 +326,21 @@ void LoLEngine::initStaticResource() { _defaultLegendData[i].stringId = READ_LE_UINT16(tmp); tmp += 2; } - _staticres->unloadId(kLolLegendData); + _staticres->unloadId(kLoLLegendData); } - tmp = _staticres->loadRawData(kLolMapCursorOvl, tempSize); - _mapCursorOverlay = new uint8[tempSize]; - memcpy(_mapCursorOverlay, tmp, tempSize); - _staticres->unloadId(kLolMapCursorOvl); + tmp = _staticres->loadRawData(kLoLMapCursorOvl, tempSize); + if (tmp) { + _mapCursorOverlay = new uint8[tempSize]; + memcpy(_mapCursorOverlay, tmp, tempSize); + _staticres->unloadId(kLoLMapCursorOvl); + } - _updateSpellBookCoords = _staticres->loadRawData(kLolSpellbookCoords, _updateSpellBookCoordsSize); - _updateSpellBookAnimData = _staticres->loadRawData(kLolSpellbookAnim, _updateSpellBookAnimDataSize); - _healShapeFrames = _staticres->loadRawData(kLolHealShapeFrames, _healShapeFramesSize); + _updateSpellBookCoords = _staticres->loadRawData(kLoLSpellbookCoords, tempSize); + _updateSpellBookAnimData = _staticres->loadRawData(kLoLSpellbookAnim, tempSize); + _healShapeFrames = _staticres->loadRawData(kLoLHealShapeFrames, tempSize); - tmp = _staticres->loadRawData(kLolLightningDefs, tempSize); + tmp = _staticres->loadRawData(kLoLLightningDefs, tempSize); if (tmp) { _lightningProps = new LightningProperty[5]; for (int i = 0; i < 5; i++) { @@ -402,10 +348,10 @@ void LoLEngine::initStaticResource() { _lightningProps[i].frameDiv = tmp[(i << 2) + 1]; _lightningProps[i].sfxId = READ_LE_UINT16(&tmp[(i << 2) + 2]); } - _staticres->unloadId(kLolLightningDefs); + _staticres->unloadId(kLoLLightningDefs); } - _fireBallCoords = (const int16 *)_staticres->loadRawDataBe16(kLolFireballCoords, _fireBallCoordsSize); + _fireBallCoords = (const int16 *)_staticres->loadRawDataBe16(kLoLFireballCoords, tempSize); _buttonCallbacks.clear(); _buttonCallbacks.reserve(95); @@ -519,7 +465,7 @@ void GUI_LoL::initStaticData() { if (_vm->gameFlags().isTalkie) GUI_LOL_MENU(_mainMenu, 9, 0x4000, 0, 7, -1, -1, -1, -1); - else + else GUI_LOL_MENU(_mainMenu, 17, 0x4000, 0, 6, -1, -1, -1, -1); GUI_LOL_MENU_ITEM(_mainMenu.item[0], 0x4001, 16, 23, 176, 15, 0, 0); @@ -681,7 +627,7 @@ const ScreenDim Screen_LoL::_screenDimTable16C[] = { const int Screen_LoL::_screenDimTableCount = ARRAYSIZE(Screen_LoL::_screenDimTable256C); -const char * const LoLEngine::_languageExt[] = { +const char *const LoLEngine::_languageExt[] = { "ENG", "FRE", "GER" @@ -818,6 +764,11 @@ const int8 LoLEngine::_mapCoords[12][4] = { { 3, 1, 3, 1 }, { -1, 6, -1, -8 }, { -7, -1, 5, -1 } }; +const KyraRpgGUISettings LoLEngine::_guiSettings = { + { 144, 254, 74, 9, 80, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + { 136, 251, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +}; + const MistOfDoomAnimData LoLEngine::_mistAnimData[] = { { 0, 7, 7, 13, 155 }, { 0, 16, 16, 17, 155 }, @@ -826,7 +777,7 @@ const MistOfDoomAnimData LoLEngine::_mistAnimData[] = { { 0, 16, 16, 17, 175 }, }; -const char * const LoLEngine::_outroShapeFileTable[] = { +const char *const LoLEngine::_outroShapeFileTable[] = { "AMAZON.SHP", "ARCHRSLG.SHP", "AVIANWRM.SHP", "BANDIT.SHP", "BOAR.SHP", "CABAL.SHP", "GUARD.SHP", "HAG.SHP", "HORNET.SHP", "HURZELL.SHP", "IRONGRZR.SHP", "KNOWLES.SHP", "LIZARD.SHP", "MANTHA.SHP", "MINOTAUR.SHP", "MORIBUND.SHP", "ORC.SHP", "ORCLDR.SHP", |