XPlor/zonefile.h
2025-02-08 19:58:54 -05:00

76 lines
3.0 KiB
C++

#ifndef ZONEFILE_H
#define ZONEFILE_H
#include "asset_structs.h"
#include <QStringList>
class ZoneFile
{
public:
ZoneFile();
~ZoneFile();
ZoneFile(const ZoneFile &aZoneFile);
ZoneFile &operator=(const ZoneFile &other);
bool Load(const QString aFilePath, FF_PLATFORM platform = FF_PLATFORM_PC);
bool Load(const QByteArray aFileData, const QString aFileStem, FF_PLATFORM platform = FF_PLATFORM_PC);
QString GetFileStem();
quint32 GetSize();
quint32 GetTagCount();
QStringList GetTags();
quint32 GetRecordCount();
QStringList GetRecords();
AssetMap GetAssetMap();
private slots:
void pParseZoneHeader(QDataStream *aZoneFileStream);
quint32 pParseZoneSize(QDataStream *aZoneFileStream);
void pParseZoneUnknownsA(QDataStream *aZoneFileStream);
quint32 pParseZoneTagCount(QDataStream *aZoneFileStream);
quint32 pParseZoneRecordCount(QDataStream *aZoneFileStream);
void pParseZoneUnknownsB(QDataStream *aZoneFileStream);
void pParseZoneUnknownsC(QDataStream *aZoneFileStream);
QStringList pParseZoneTags(QDataStream *aZoneFileStream, quint32 tagCount);
QStringList pParseZoneIndex(QDataStream *aZoneFileStream, quint32 recordCount);
AssetMap pParseAssets(QDataStream *aZoneFileStream, QStringList assetOrder);
LocalString pParseAsset_LocalString(QDataStream *aZoneFileStream);
RawFile pParseAsset_RawFile(QDataStream *aZoneFileStream);
void pParseAsset_PhysPreset(QDataStream *aZoneFileStream);
Model pParseAsset_Model(QDataStream *aZoneFileStream);
void pParseAsset_Material(QDataStream *aZoneFileStream);
Shader pParseAsset_Shader(QDataStream *aZoneFileStream);
bool pReadUntilString(QDataStream* stream, const QString& targetString);
bool pReadUntilHex(QDataStream* stream, const QString& hexString);
TechSet pParseAsset_TechSet(QDataStream *aZoneFileStream);
Image pParseAsset_Image(QDataStream *aZoneFileStream);
void pParseAsset_LoadedSound(QDataStream *aZoneFileStream);
void pParseAsset_ColMapMP(QDataStream *aZoneFileStream);
void pParseAsset_GameMapSP(QDataStream *aZoneFileStream);
void pParseAsset_GameMapMP(QDataStream *aZoneFileStream);
void pParseAsset_LightDef(QDataStream *aZoneFileStream);
void pParseAsset_UIMap(QDataStream *aZoneFileStream);
void pParseAsset_SNDDriverGlobals(QDataStream *aZoneFileStream);
void pParseAsset_AIType(QDataStream *aZoneFileStream);
void pParseAsset_FX(QDataStream *aZoneFileStream);
Animation pParseAsset_Animation(QDataStream *aZoneFileStream);
MenuFile pParseAsset_MenuFile(QDataStream *aZoneFileStream);
void pParseAsset_Weapon(QDataStream *aZoneFileStream);
void pParseAsset_D3DBSP(QDataStream *aZoneFileStream);
StringTable pParseAsset_StringTable(QDataStream *aZoneFileStream);
private:
QString fileStem;
quint32 size;
quint32 tagCount;
QStringList tags;
quint32 recordCount;
QStringList records;
AssetMap assetMap;
QString platform;
QString game;
};
#endif // ZONEFILE_H