#pragma once #ifndef TILESET_H #define TILESET_H #include "metatile.h" #include "tile.h" #include #include struct MetatileLabelPair { QString owned; QString shared; }; class Tileset { public: Tileset() = default; Tileset(const Tileset &other); Tileset &operator=(const Tileset &other); public: QString name; bool is_secondary; QString tiles_label; QString palettes_label; QString metatiles_label; QString metatiles_path; QString metatile_attrs_label; QString metatile_attrs_path; QString tilesImagePath; QImage tilesImage; QStringList palettePaths; QList tiles; QList metatiles; QHash metatileLabels; QList> palettes; QList> palettePreviews; bool hasUnsavedTilesImage; static Tileset* getMetatileTileset(int, Tileset*, Tileset*); static Tileset* getTileTileset(int, Tileset*, Tileset*); static Metatile* getMetatile(int, Tileset*, Tileset*); static Tileset* getMetatileLabelTileset(int, Tileset*, Tileset*); static QString getMetatileLabel(int, Tileset *, Tileset *); static QString getOwnedMetatileLabel(int, Tileset *, Tileset *); static MetatileLabelPair getMetatileLabelPair(int metatileId, Tileset *primaryTileset, Tileset *secondaryTileset); static bool setMetatileLabel(int, QString, Tileset *, Tileset *); QString getMetatileLabelPrefix(); static QString getMetatileLabelPrefix(const QString &name); static QList> getBlockPalettes(Tileset*, Tileset*, bool useTruePalettes = false); static QList getPalette(int, Tileset*, Tileset*, bool useTruePalettes = false); static bool metatileIsValid(uint16_t metatileId, Tileset *, Tileset *); static QHash getHeaderMemberMap(bool usingAsm); static QString getExpectedDir(QString tilesetName, bool isSecondary); QString getExpectedDir(); bool appendToHeaders(QString root, QString friendlyName, bool usingAsm); bool appendToGraphics(QString root, QString friendlyName, bool usingAsm); bool appendToMetatiles(QString root, QString friendlyName, bool usingAsm); }; #endif // TILESET_H