XPlor/libs/zonefile/360/zonefile_cod4_360.cpp

212 lines
8.0 KiB
C++
Raw Normal View History

#include "zonefile_cod4_360.h"
#include "utils.h"
#include "xassetlist.h"
#include "xfile.h"
2025-07-10 00:05:44 -04:00
#include "assetlist.h"
#include <QFile>
#include <QDataStream>
#include <QDebug>
ZoneFile_COD4_360::ZoneFile_COD4_360()
: ZoneFile() {
}
ZoneFile_COD4_360::~ZoneFile_COD4_360() {
}
bool ZoneFile_COD4_360::Load(const QByteArray aFileData) {
2025-07-10 00:05:44 -04:00
QDataStream zoneStream(aFileData);
2025-07-10 00:05:44 -04:00
// DB_LoadXFileData()
XFile headerData;
headerData.ParseData(&zoneStream);
2025-07-10 00:05:44 -04:00
// Load_XAssetListCustom();
XAssetList assetList;
assetList.ParseData(&zoneStream);
assetList.GetStringList().ParseData(&zoneStream);
2025-07-10 00:05:44 -04:00
zoneStream.skipRawData(4);
// for (int i = 0; i < assetList.assetCount; i++) {
// XAssetType type = assetList.assets[i].type;
// switch (type) {
// case ASSET_TYPE_XANIMPARTS:
// assets.assetMap.animations << assets.Load_Animation(&zoneStream);
// break;
// case ASSET_TYPE_XMODEL:
// assets.assetMap.models << assets.Load_Model(&zoneStream);
// break;
// case ASSET_TYPE_MATERIAL:
// assets.assetMap.materials << assets.Load_Material(&zoneStream);
// break;
// case ASSET_TYPE_PIXELSHADER:
// assets.assetMap.pixelShaders << assets.Load_MaterialPixelShader(&zoneStream);
// break;
// case ASSET_TYPE_TECHNIQUE_SET:
// assets.assetMap.techSets << assets.Load_MaterialTechSet(&zoneStream);
// break;
// case ASSET_TYPE_IMAGE:
// assets.assetMap.images << assets.Load_GfxImage(&zoneStream);
// break;
// case ASSET_TYPE_SOUND:
// assets.assetMap.sounds << assets.Load_SoundAliasList(&zoneStream);
// break;
// case ASSET_TYPE_SOUND_CURVE:
// assets.assetMap.soundCurves << assets.Load_SoundCurve(&zoneStream);
// break;
// case ASSET_TYPE_LOADED_SOUND:
// assets.assetMap.loadedSounds << assets.Load_LoadedSound(&zoneStream);
// break;
// case ASSET_TYPE_CLIPMAP:
// case ASSET_TYPE_CLIPMAP_PVS:
// assets.assetMap.clipMaps << assets.Load_ClipMap(&zoneStream);
// break;
// case ASSET_TYPE_COMWORLD:
// assets.assetMap.comWorlds << assets.Load_ComWorld(&zoneStream);
// break;
// case ASSET_TYPE_GAMEWORLD_SP:
// assets.assetMap.gameWorldSPs << assets.Load_GameWorldSp(&zoneStream);
// break;
// case ASSET_TYPE_GAMEWORLD_MP:
// assets.assetMap.gameWorldMPs << assets.Load_GameWorldMp(&zoneStream);
// break;
// case ASSET_TYPE_MAP_ENTS:
// assets.assetMap.mapEntities << assets.Load_MapEnts(&zoneStream);
// break;
// case ASSET_TYPE_GFXWORLD:
// assets.assetMap.gfxWorlds << assets.Load_GfxWorld(&zoneStream);
// break;
// case ASSET_TYPE_LIGHT_DEF:
// assets.assetMap.gfxLightDefs << assets.Load_GfxLightPtr(&zoneStream);
// break;
// case ASSET_TYPE_FONT:
// assets.assetMap.fonts << assets.Load_GameFont(&zoneStream);
// break;
// case ASSET_TYPE_MENULIST:
// assets.assetMap.menuLists << assets.Load_MenuList(&zoneStream);
// break;
// case ASSET_TYPE_MENU:
// assets.assetMap.menuDefinitions << assets.Load_MenuDef(&zoneStream);
// break;
// case ASSET_TYPE_LOCALIZE_ENTRY:
// assets.assetMap.localizeEntries << assets.Load_LocalizeEntry(&zoneStream);
// break;
// case ASSET_TYPE_WEAPON:
// assets.assetMap.weaponDefinitions << assets.Load_WeaponDef(&zoneStream);
// break;
// case ASSET_TYPE_SNDDRIVER_GLOBALS:
// assets.assetMap.soundDrivers << assets.Load_SoundDriver(&zoneStream);
// break;
// case ASSET_TYPE_FX:
// assets.assetMap.effectDefinitions << assets.Load_EffectDef(&zoneStream);
// break;
// case ASSET_TYPE_IMPACT_FX:
// assets.assetMap.impactTables << assets.Load_ImpactTable(&zoneStream);
// break;
// case ASSET_TYPE_RAWFILE:
// assets.assetMap.rawFiles << assets.Load_RawFile(&zoneStream);
// break;
// case ASSET_TYPE_STRINGTABLE:
// assets.assetMap.stringTables << assets.Load_StringTable(&zoneStream);
// break;
// case ASSET_TYPE_COUNT:
// case ASSET_TYPE_ASSETLIST:
// case ASSET_TYPE_XMODELPIECES:
// case ASSET_TYPE_PHYSPRESET:
// case ASSET_TYPE_UI_MAP:
// case ASSET_TYPE_AITYPE:
// case ASSET_TYPE_MPTYPE:
// case ASSET_TYPE_CHARACTER:
// case ASSET_TYPE_XMODELALIAS:
// default:
// break;
// }
// }
2025-07-10 00:05:44 -04:00
return true;
}
2025-07-10 00:05:44 -04:00
Utils::AssetType ZoneFile_COD4_360::AssetStrToEnum(const QString aAssetType) {
const QString cleanedType = aAssetType.toUpper();
2025-07-10 00:05:44 -04:00
if (cleanedType == "00000000") {
return Utils::ASSET_XMODELPIECES;
} else if (cleanedType == "00000001") {
return Utils::ASSET_PHYSPRESET;
} else if (cleanedType == "00000002") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_Animation;
} else if (cleanedType == "00000003") {
return Utils::ASSET_XMODEL;
} else if (cleanedType == "00000004") {
return Utils::ASSET_MATERIAL;
} else if (cleanedType == "00000005") {
return Utils::ASSET_PIXELSHADER;
} else if (cleanedType == "00000006") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_TECHNIQUE_SET;
} else if (cleanedType == "00000007") {
return Utils::ASSET_IMAGE;
} else if (cleanedType == "00000008") {
return Utils::ASSET_SOUND;
} else if (cleanedType == "00000009") {
return Utils::ASSET_SOUND_CURVE;
} else if (cleanedType == "0000000A") {
return Utils::ASSET_LOADED_SOUND;
} else if (cleanedType == "0000000B") {
return Utils::ASSET_CLIPMAP;
} else if (cleanedType == "0000000C") {
return Utils::ASSET_CLIPMAP_PVS;
} else if (cleanedType == "0000000D") {
return Utils::ASSET_COMWORLD;
} else if (cleanedType == "0000000E") {
return Utils::ASSET_GAMEWORLD_SP;
} else if (cleanedType == "0000000F") {
return Utils::ASSET_GAMEWORLD_MP;
} else if (cleanedType == "00000010") {
return Utils::ASSET_MAP_ENTS;
} else if (cleanedType == "00000011") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_GFXWORLD;
} else if (cleanedType == "00000012") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_LIGHT_DEF;
} else if (cleanedType == "00000013") {
return Utils::ASSET_UI_MAP;
} else if (cleanedType == "00000014") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_FONT;
} else if (cleanedType == "00000015") {
return Utils::ASSET_MENULIST;
} else if (cleanedType == "00000016") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_MENU;
} else if (cleanedType == "00000017") {
return Utils::ASSET_LOCALIZE_ENTRY;
} else if (cleanedType == "00000018") {
return Utils::ASSET_WEAPON;
} else if (cleanedType == "00000019") {
2025-07-10 00:05:44 -04:00
return Utils::ASSET_SNDDRIVER_GLOBALS;
} else if (cleanedType == "0000001A") {
return Utils::ASSET_FX;
} else if (cleanedType == "0000001B") {
return Utils::ASSET_IMPACT_FX;
} else if (cleanedType == "0000001C") {
return Utils::ASSET_AITYPE;
} else if (cleanedType == "0000001D") {
return Utils::ASSET_MPTYPE;
} else if (cleanedType == "0000001E") {
return Utils::ASSET_CHARACTER;
} else if (cleanedType == "0000001F") {
return Utils::ASSET_XMODELALIAS;
} else if (cleanedType == "00000020") {
return Utils::ASSET_RAWFILE;
} else if (cleanedType == "00000021") {
return Utils::ASSET_STRINGTABLE;
} else if (cleanedType == "00000022") {
return Utils::ASSET_COUNT;
} else if (cleanedType == "00000022") {
return Utils::ASSET_STRING;
} else if (cleanedType == "00000023") {
return Utils::ASSET_ASSETLIST;
}
return Utils::ASSET_NONE;
}