#ifndef ZONEFILE_H
#define ZONEFILE_H

#include "xasset.h"
#include "utils.h"

#include <QStringList>
#include <QIcon>

class ZoneFile
{
public:
    ZoneFile();
    ~ZoneFile();
    ZoneFile(const ZoneFile &aZoneFile);
    ZoneFile &operator=(const ZoneFile &other);

    virtual bool Load(const QByteArray aFileData) = 0;
    virtual Utils::AssetType AssetStrToEnum(const QString aAssetType) = 0;
    virtual QByteArray GetBinaryData() {
        return {};
    }

    QString GetStem();
    QString GetBaseStem();
    quint32 GetSize();
    quint32 GetTagCount();
    QStringList GetTags();
    quint32 GetRecordCount();
    QStringList GetRecords();
    QVector<XAsset> GetAssetList();

    void SetStem(const QString aStem);
    void SetSize(quint32 aSize);
    void SetTagCount(quint32 aTagCount);
    void SetTags(const QStringList aTags);
    void SetRecordCount(quint32 aRecordCount);
    void SetRecords(const QStringList aRecords);
    void SetAssetList(const QVector<XAsset> aAssetList);

private:
    QString mStem;
    quint32 mSize;
    quint32 mTagCount;
    QStringList mTags;
    quint32 mRecordCount;
    QStringList mRecords;
    QVector<XAsset> mAssetList;
    QString mPlatform;
    QString mGame;
};

#endif // ZONEFILE_H
