porymap/include/core/tileset.h

65 lines
2.2 KiB
C
Raw Normal View History

2020-09-13 23:37:55 +01:00
#pragma once
#ifndef TILESET_H
#define TILESET_H
2018-09-25 01:12:29 +01:00
#include "metatile.h"
#include "tile.h"
#include <QImage>
2023-02-14 19:10:05 +00:00
#include <QHash>
struct MetatileLabelPair {
QString owned;
QString shared;
};
class Tileset
{
public:
2021-02-17 02:45:54 +00:00
Tileset() = default;
Tileset(const Tileset &other);
Tileset &operator=(const Tileset &other);
2021-02-17 02:45:54 +00:00
public:
QString name;
2022-10-24 04:38:27 +01:00
bool is_secondary;
QString tiles_label;
QString palettes_label;
QString metatiles_label;
QString metatiles_path;
QString metatile_attrs_label;
QString metatile_attrs_path;
2018-10-03 01:01:24 +01:00
QString tilesImagePath;
QImage tilesImage;
2021-02-17 02:45:54 +00:00
QStringList palettePaths;
2021-02-17 02:45:54 +00:00
QList<QImage> tiles;
QList<Metatile*> metatiles;
2023-02-14 19:10:05 +00:00
QHash<int, QString> metatileLabels;
2021-02-17 02:45:54 +00:00
QList<QList<QRgb>> palettes;
QList<QList<QRgb>> palettePreviews;
2018-10-03 01:01:15 +01:00
2023-06-16 12:39:32 +01:00
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);
2023-02-14 19:10:05 +00:00
static bool setMetatileLabel(int, QString, Tileset *, Tileset *);
2023-02-14 20:28:18 +00:00
QString getMetatileLabelPrefix();
static QString getMetatileLabelPrefix(const QString &name);
2020-05-03 16:31:44 +01:00
static QList<QList<QRgb>> getBlockPalettes(Tileset*, Tileset*, bool useTruePalettes = false);
static QList<QRgb> getPalette(int, Tileset*, Tileset*, bool useTruePalettes = false);
static bool metatileIsValid(uint16_t metatileId, Tileset *, Tileset *);
static QHash<int, QString> getHeaderMemberMap(bool usingAsm);
2022-10-07 19:29:51 +01:00
static QString getExpectedDir(QString tilesetName, bool isSecondary);
QString getExpectedDir();
2022-09-28 01:17:55 +01:00
bool appendToHeaders(QString root, QString friendlyName, bool usingAsm);
2022-10-07 19:29:51 +01:00
bool appendToGraphics(QString root, QString friendlyName, bool usingAsm);
bool appendToMetatiles(QString root, QString friendlyName, bool usingAsm);
};
#endif // TILESET_H