2025-02-08 19:58:54 -05:00
|
|
|
#ifndef FASTFILE_H
|
|
|
|
|
#define FASTFILE_H
|
|
|
|
|
|
|
|
|
|
#include "enums.h"
|
2025-09-05 18:35:17 -04:00
|
|
|
#include "utils.h"
|
2025-02-08 19:58:54 -05:00
|
|
|
#include "zonefile.h"
|
|
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
#include <QCryptographicHash>
|
2025-05-03 09:57:47 -04:00
|
|
|
|
|
|
|
|
class ZoneFile;
|
2025-02-08 19:58:54 -05:00
|
|
|
|
|
|
|
|
class FastFile
|
|
|
|
|
{
|
|
|
|
|
public:
|
2025-02-19 19:17:31 -05:00
|
|
|
FastFile();
|
2025-05-03 09:57:47 -04:00
|
|
|
FastFile(const QByteArray& aData);
|
2025-02-19 19:17:31 -05:00
|
|
|
FastFile(FastFile &fastFile);
|
|
|
|
|
~FastFile();
|
2025-02-14 16:06:27 -05:00
|
|
|
|
|
|
|
|
virtual bool Load(const QString aFilePath) = 0;
|
|
|
|
|
virtual bool Load(const QByteArray aData) = 0;
|
|
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
virtual bool ExportFastFile(const QString aFastFilePath) const;
|
2025-02-14 16:06:27 -05:00
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
virtual QByteArray GetBinaryData() const = 0;
|
2025-04-04 20:40:37 -04:00
|
|
|
|
|
|
|
|
virtual QString GetStem() const;
|
2025-06-04 22:33:02 -04:00
|
|
|
virtual QString GetBaseStem() const;
|
2025-04-04 20:40:37 -04:00
|
|
|
virtual FF_FILETYPE GetType() const;
|
|
|
|
|
virtual FF_COMPANY GetCompany() const;
|
|
|
|
|
virtual FF_SIGNAGE GetSignage() const;
|
|
|
|
|
virtual QString GetMagic() const;
|
|
|
|
|
virtual quint32 GetVersion() const;
|
2025-09-05 18:35:17 -04:00
|
|
|
virtual const ZoneFile *GetZoneFile() const;
|
2025-04-04 20:40:37 -04:00
|
|
|
virtual QString GetGame() const;
|
|
|
|
|
virtual QString GetPlatform() const;
|
|
|
|
|
|
|
|
|
|
virtual void SetStem(const QString aStem);
|
|
|
|
|
virtual void SetType(const FF_FILETYPE aType);
|
|
|
|
|
virtual void SetCompany(const FF_COMPANY aCompany);
|
|
|
|
|
virtual void SetSignage(const FF_SIGNAGE aSignage);
|
|
|
|
|
virtual void SetMagic(const QString aMagic);
|
|
|
|
|
virtual void SetVersion(const quint32 aVersion);
|
2025-09-05 18:35:17 -04:00
|
|
|
virtual void SetZoneFile(const ZoneFile* aZoneFile);
|
2025-04-04 20:40:37 -04:00
|
|
|
virtual void SetGame(const QString aGame);
|
|
|
|
|
virtual void SetPlatform(const QString aPlatform);
|
2025-02-08 19:58:54 -05:00
|
|
|
|
2025-02-19 19:17:31 -05:00
|
|
|
static FF_COMPANY pParseFFCompany(QDataStream *afastFileStream, quint32 &aCompanyInt);
|
|
|
|
|
static FF_COMPANY pParseFFCompany(QDataStream *afastFileStream);
|
|
|
|
|
static FF_FILETYPE pParseFFFileType(QDataStream *afastFileStream);
|
|
|
|
|
static FF_SIGNAGE pParseFFSignage(QDataStream *afastFileStream);
|
|
|
|
|
static QString pParseFFMagic(QDataStream *afastFileStream);
|
|
|
|
|
static quint32 pParseFFVersion(QDataStream *afastFileStream);
|
|
|
|
|
static QString pCalculateFFPlatform(quint32 aVersion);
|
|
|
|
|
static QString pCalculateFFGame(quint32 aVersion);
|
|
|
|
|
|
2025-09-05 18:35:17 -04:00
|
|
|
static FastFile* Open(const QString& aFilePath);
|
2025-02-19 19:17:31 -05:00
|
|
|
|
2025-02-08 19:58:54 -05:00
|
|
|
private:
|
2025-02-14 16:06:27 -05:00
|
|
|
QString mStem;
|
|
|
|
|
FF_FILETYPE mType;
|
|
|
|
|
FF_COMPANY mCompany;
|
|
|
|
|
FF_SIGNAGE mSignage;
|
|
|
|
|
QString mMagic;
|
|
|
|
|
quint32 mVersion;
|
2025-09-05 18:35:17 -04:00
|
|
|
const ZoneFile* mZoneFile;
|
2025-02-14 16:06:27 -05:00
|
|
|
QString mGame;
|
|
|
|
|
QString mPlatform;
|
2025-02-08 19:58:54 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // FASTFILE_H
|