Update zonefile class logic.

This commit is contained in:
= 2025-04-04 20:37:07 -04:00
parent 810c6b9f95
commit 608f0c9d7b
8 changed files with 82 additions and 77 deletions

View File

@ -14,9 +14,7 @@ ZoneFile_COD2::~ZoneFile_COD2()
}
bool ZoneFile_COD2::Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) {
SetStem(aStem);
bool ZoneFile_COD2::Load(const QByteArray aFileData, FF_PLATFORM aPlatform) {
// Open zone file as little endian stream
QDataStream zoneFileStream(aFileData);
if (aPlatform == FF_PLATFORM_PC) {
@ -26,14 +24,14 @@ bool ZoneFile_COD2::Load(const QByteArray aFileData, const QString aStem, FF_PLA
}
// Parse data from zone file header
pParseZoneHeader(&zoneFileStream);
pParseZoneHeader(&zoneFileStream, aPlatform);
SetRecords(pParseZoneIndex(&zoneFileStream, GetRecordCount()));
SetAssetMap(pParseAssets(&zoneFileStream, GetRecords()));
return true;
}
void ZoneFile_COD2::pParseZoneHeader(QDataStream *aZoneFileStream) {
void ZoneFile_COD2::pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) {
SetTagCount(pParseZoneTagCount(aZoneFileStream));
pParseZoneUnknownsB(aZoneFileStream);
pParseZoneUnknownsC(aZoneFileStream);
@ -1080,44 +1078,14 @@ StringTable ZoneFile_COD2::pParseAsset_StringTable(QDataStream *aZoneFileStream)
QString ZoneFile_COD2::AssetTypeToString(const QString aAssetType) {
const QString cleanedType = aAssetType.toUpper();
if (cleanedType == "00000012") { // localized string PARTIALLY VERIFIED
return "LOCAL STRING";
} else if (cleanedType == "00000010") { // raw_file PARTIALLY VERIFIED
return "RAW FILE";
} else if (cleanedType == "0000000E") { // fx PARTIALLY VERIFIED
return "EFFECT";
} else if (cleanedType == "00000004") { // loaded_sound PARTIALLY VERIFIED
return "SOUND";
} else if (cleanedType == "04000000") { // x_anim PARTIALLY VERIFIED
return "ANIMATION";
} else if (cleanedType == "0C000000") { // collision_map PARTIALLY VERIFIED
return "COLLISION MAP";
} else if (cleanedType == "21000000") { // string_table PARTIALLY VERIFIED
return "STRING TABLE";
} else if (cleanedType == "0000000B") { // menu_file PARTIALLY VERIFIED
return "MENU";
} else if (cleanedType == "07000000") { // tech set PARTIALLY VERIFIED
return "TECH SET";
} else if (cleanedType == "0000000D") { // weapon PARTIALLY VERIFIED
return "WEAPON";
} else if (cleanedType == "11000000") { // gfx map PARTIALLY VERIFIED
return "GFX MAP";
} else if (cleanedType == "12000000") { // light_def PARTIALLY VERIFIED
return "LIGHT DEF";
} else if (cleanedType == "00000009") { // font PARTIALLY VERIFIED
return "FONT";
} else if (cleanedType == "00000001") { // xmodel PARTIALLY VERIFIED
return "MODEL";
} else if (cleanedType == "0D000000") { // d3dbsp PARTIALLY VERIFIED
return "D3DBSP";
} else if (cleanedType == "00000002") { // material PARTIALLY VERIFIED
return "MATERIAL";
} else if (cleanedType == "00000003") { // material PARTIALLY VERIFIED
return "IMAGE";
} else if (cleanedType == "0E000000") { // game map sp PARTIALLY VERIFIED
return "GAME MAP SP";
} else if (cleanedType == "0B000000") { // col map sp PARTIALLY VERIFIED
return "COL MAP SP";
if (cleanedType == "") { // localized string PARTIALLY VERIFIED
return "";
}
return aAssetType;
}
QByteArray ZoneFile_COD2::GetBinaryData() {
QByteArray result;
return result;
}

View File

@ -9,11 +9,13 @@ public:
ZoneFile_COD2();
~ZoneFile_COD2();
bool Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) override;
bool Load(const QByteArray aFileData, FF_PLATFORM aPlatform) override;
QString AssetTypeToString(const QString aAssetType);
QByteArray GetBinaryData() override;
protected:
void pParseZoneHeader(QDataStream *aZoneFileStream) override;
void pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) override;
quint32 pParseZoneSize(QDataStream *aZoneFileStream) override;
void pParseZoneUnknownsA(QDataStream *aZoneFileStream) override;
quint32 pParseZoneTagCount(QDataStream *aZoneFileStream) override;

View File

@ -5,18 +5,15 @@
#include <QDebug>
ZoneFile_COD5::ZoneFile_COD5()
{
: ZoneFile() {
}
ZoneFile_COD5::~ZoneFile_COD5()
{
ZoneFile_COD5::~ZoneFile_COD5() {
}
bool ZoneFile_COD5::Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) {
SetStem(aStem);
bool ZoneFile_COD5::Load(const QByteArray aFileData, FF_PLATFORM aPlatform) {
// Open zone file as little endian stream
QDataStream zoneFileStream(aFileData);
if (aPlatform == FF_PLATFORM_PC) {
@ -26,14 +23,14 @@ bool ZoneFile_COD5::Load(const QByteArray aFileData, const QString aStem, FF_PLA
}
// Parse data from zone file header
pParseZoneHeader(&zoneFileStream);
pParseZoneHeader(&zoneFileStream, aPlatform);
SetRecords(pParseZoneIndex(&zoneFileStream, GetRecordCount()));
SetAssetMap(pParseAssets(&zoneFileStream, GetRecords()));
return true;
}
void ZoneFile_COD5::pParseZoneHeader(QDataStream *aZoneFileStream) {
void ZoneFile_COD5::pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) {
SetSize(pParseZoneSize(aZoneFileStream));
pParseZoneUnknownsA(aZoneFileStream);
@ -1047,9 +1044,9 @@ StringTable ZoneFile_COD5::pParseAsset_StringTable(QDataStream *aZoneFileStream)
QString ZoneFile_COD5::AssetTypeToString(const QString aAssetType) {
const QString cleanedType = aAssetType.toUpper();
if (cleanedType == "17000000") { // localized string PARTIALLY VERIFIED
return "LOCAL STRING";
} else if (cleanedType == "20000000") { // raw_file PARTIALLY VERIFIED
return "RAW FILE";
} else if (cleanedType == "20000000") { // raw_file PARTIALLY VERIFIED
return "GSC FILE";
} else if (cleanedType == "1A000000") { // fx PARTIALLY VERIFIED
return "EFFECT";
} else if (cleanedType == "09000000") { // loaded_sound PARTIALLY VERIFIED
@ -1082,6 +1079,16 @@ QString ZoneFile_COD5::AssetTypeToString(const QString aAssetType) {
return "GAME MAP SP";
} else if (cleanedType == "0B000000") { // col map sp PARTIALLY VERIFIED
return "COL MAP SP";
} else if (cleanedType == "01000000") { // physics preset PARTIALLY VERIFIED
return "PHYS PRESET";
} else if (cleanedType == "03000000") { // destructible def PARTIALLY VERIFIED
return "DESTRUCTIBLE";
}
return aAssetType;
}
QByteArray ZoneFile_COD5::GetBinaryData() {
QByteArray result;
return result;
}

View File

@ -1,6 +1,8 @@
#ifndef ZONEFILE_COD5_H
#define ZONEFILE_COD5_H
#include <QIcon>
#include "zonefile.h"
class ZoneFile_COD5 : public ZoneFile
@ -9,11 +11,13 @@ public:
ZoneFile_COD5();
~ZoneFile_COD5();
bool Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) override;
QString AssetTypeToString(const QString aAssetType);
bool Load(const QByteArray aFileData, FF_PLATFORM aPlatform) override;
QString AssetTypeToString(const QString aAssetType) override;
QByteArray GetBinaryData() override;
private:
void pParseZoneHeader(QDataStream *aZoneFileStream) override;
void pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) override;
quint32 pParseZoneSize(QDataStream *aZoneFileStream) override;
void pParseZoneUnknownsA(QDataStream *aZoneFileStream) override;
quint32 pParseZoneTagCount(QDataStream *aZoneFileStream) override;

View File

@ -14,9 +14,7 @@ ZoneFile_COD7::~ZoneFile_COD7()
}
bool ZoneFile_COD7::Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) {
SetStem(aStem);
bool ZoneFile_COD7::Load(const QByteArray aFileData, FF_PLATFORM aPlatform) {
// Open zone file as little endian stream
QDataStream zoneFileStream(aFileData);
if (aPlatform == FF_PLATFORM_PC) {
@ -26,23 +24,35 @@ bool ZoneFile_COD7::Load(const QByteArray aFileData, const QString aStem, FF_PLA
}
// Parse data from zone file header
pParseZoneHeader(&zoneFileStream);
pParseZoneHeader(&zoneFileStream, aPlatform);
zoneFileStream.device()->seek(zoneFileStream.device()->pos() - 1);
SetRecords(pParseZoneIndex(&zoneFileStream, GetRecordCount()));
SetAssetMap(pParseAssets(&zoneFileStream, GetRecords()));
return true;
}
void ZoneFile_COD7::pParseZoneHeader(QDataStream *aZoneFileStream) {
SetSize(pParseZoneSize(aZoneFileStream));
pParseZoneUnknownsA(aZoneFileStream);
void ZoneFile_COD7::pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) {
quint32 size = pParseZoneSize(aZoneFileStream);
SetSize(size);
if (aPlatform == FF_PLATFORM_WII) {
aZoneFileStream->skipRawData(36);
} else {
pParseZoneUnknownsA(aZoneFileStream);
}
quint32 tagCount = pParseZoneTagCount(aZoneFileStream);
SetTagCount(tagCount);
if (aPlatform == FF_PLATFORM_WII) {
SetTagCount(GetTagCount() - 1);
}
SetTagCount(pParseZoneTagCount(aZoneFileStream));
pParseZoneUnknownsB(aZoneFileStream);
SetRecordCount(pParseZoneRecordCount(aZoneFileStream));
quint32 recordCount = pParseZoneRecordCount(aZoneFileStream);
SetRecordCount(recordCount);
quint32 tagCount = GetTagCount();
if (tagCount) {
pParseZoneUnknownsC(aZoneFileStream);
SetTags(pParseZoneTags(aZoneFileStream, tagCount));
@ -1085,3 +1095,9 @@ QString ZoneFile_COD7::AssetTypeToString(const QString aAssetType) {
}
return aAssetType;
}
QByteArray ZoneFile_COD7::GetBinaryData() {
QByteArray result;
return result;
}

View File

@ -9,11 +9,13 @@ public:
ZoneFile_COD7();
~ZoneFile_COD7();
bool Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) override;
bool Load(const QByteArray aFileData, FF_PLATFORM aPlatform) override;
QString AssetTypeToString(const QString aAssetType);
QByteArray GetBinaryData() override;
protected:
void pParseZoneHeader(QDataStream *aZoneFileStream) override;
void pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) override;
quint32 pParseZoneSize(QDataStream *aZoneFileStream) override;
void pParseZoneUnknownsA(QDataStream *aZoneFileStream) override;
quint32 pParseZoneTagCount(QDataStream *aZoneFileStream) override;

View File

@ -14,9 +14,7 @@ ZoneFile_COD9::~ZoneFile_COD9()
}
bool ZoneFile_COD9::Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) {
SetStem(aStem);
bool ZoneFile_COD9::Load(const QByteArray aFileData, FF_PLATFORM aPlatform) {
// Open zone file as little endian stream
QDataStream zoneFileStream(aFileData);
if (aPlatform == FF_PLATFORM_PC) {
@ -26,14 +24,14 @@ bool ZoneFile_COD9::Load(const QByteArray aFileData, const QString aStem, FF_PLA
}
// Parse data from zone file header
pParseZoneHeader(&zoneFileStream);
pParseZoneHeader(&zoneFileStream, aPlatform);
SetRecords(pParseZoneIndex(&zoneFileStream, GetRecordCount()));
SetAssetMap(pParseAssets(&zoneFileStream, GetRecords()));
return true;
}
void ZoneFile_COD9::pParseZoneHeader(QDataStream *aZoneFileStream) {
void ZoneFile_COD9::pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) {
SetSize(pParseZoneSize(aZoneFileStream));
pParseZoneUnknownsA(aZoneFileStream);
@ -1085,3 +1083,9 @@ QString ZoneFile_COD9::AssetTypeToString(const QString aAssetType) {
}
return aAssetType;
}
QByteArray ZoneFile_COD9::GetBinaryData() {
QByteArray result;
return result;
}

View File

@ -9,11 +9,13 @@ public:
ZoneFile_COD9();
~ZoneFile_COD9();
bool Load(const QByteArray aFileData, const QString aStem, FF_PLATFORM aPlatform) override;
bool Load(const QByteArray aFileData, FF_PLATFORM aPlatform) override;
QString AssetTypeToString(const QString aAssetType);
QByteArray GetBinaryData() override;
protected:
void pParseZoneHeader(QDataStream *aZoneFileStream) override;
void pParseZoneHeader(QDataStream *aZoneFileStream, FF_PLATFORM aPlatform) override;
quint32 pParseZoneSize(QDataStream *aZoneFileStream) override;
void pParseZoneUnknownsA(QDataStream *aZoneFileStream) override;
quint32 pParseZoneTagCount(QDataStream *aZoneFileStream) override;