Add scripting api for metatile layer draw order

This commit is contained in:
Marcus Huderle
2020-07-01 20:19:08 -05:00
parent 08bc85dde0
commit dac4a0e8f7
16 changed files with 85 additions and 31 deletions

View File

@@ -8,7 +8,8 @@
QImage getCollisionMetatileImage(Block);
QImage getCollisionMetatileImage(int, int);
QImage getMetatileImage(uint16_t, Tileset*, Tileset*, bool useTruePalettes = false);
QImage getMetatileImage(uint16_t, Tileset*, Tileset*, QList<int>, bool useTruePalettes = false);
QImage getMetatileImage(uint16_t tile, Tileset*, Tileset*, bool useTruePalettes = false);
QImage getTileImage(uint16_t, Tileset*, Tileset*);
QImage getPalettedTileImage(uint16_t, Tileset*, Tileset*, int, bool useTruePalettes = false);
QImage getGreyscaleTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTileset);

View File

@@ -3,17 +3,19 @@
#include <QPair>
#include "selectablepixmapitem.h"
#include "map.h"
#include "tileset.h"
#include "maplayout.h"
class MetatileSelector: public SelectablePixmapItem {
Q_OBJECT
public:
MetatileSelector(int numMetatilesWide, Tileset *primaryTileset, Tileset *secondaryTileset): SelectablePixmapItem(16, 16) {
MetatileSelector(int numMetatilesWide, Map *map): SelectablePixmapItem(16, 16) {
this->externalSelection = false;
this->numMetatilesWide = numMetatilesWide;
this->primaryTileset = primaryTileset;
this->secondaryTileset = secondaryTileset;
this->map = map;
this->primaryTileset = map->layout->tileset_primary;
this->secondaryTileset = map->layout->tileset_secondary;
this->selectedMetatiles = new QList<uint16_t>();
this->selectedCollisions = new QList<QPair<uint16_t, uint16_t>>();
this->externalSelectedMetatiles = new QList<uint16_t>();
@@ -37,6 +39,7 @@ protected:
private:
bool externalSelection;
int numMetatilesWide;
Map *map;
Tileset *primaryTileset;
Tileset *secondaryTileset;
QList<uint16_t> *selectedMetatiles;

View File

@@ -8,6 +8,7 @@
#include "tileseteditormetatileselector.h"
#include "tileseteditortileselector.h"
#include "metatilelayersitem.h"
#include "map.h"
namespace Ui {
class TilesetEditor;
@@ -34,10 +35,10 @@ class TilesetEditor : public QMainWindow
Q_OBJECT
public:
explicit TilesetEditor(Project*, QString, QString, QWidget *parent = nullptr);
explicit TilesetEditor(Project*, Map*, QWidget *parent = nullptr);
~TilesetEditor();
void setMap(Map*);
void setTilesets(QString, QString);
void init(Project*, QString, QString);
void selectMetatile(uint16_t metatileId);
private slots:
@@ -91,8 +92,9 @@ private slots:
void on_actionImport_Secondary_Metatiles_triggered();
private:
void init(Project*, Map*);
void closeEvent(QCloseEvent*);
void initMetatileSelector();
void initMetatileSelector(Map*);
void initTileSelector();
void initSelectedTileItem();
void initMetatileLayersItem();

View File

@@ -3,16 +3,19 @@
#include "selectablepixmapitem.h"
#include "tileset.h"
#include "map.h"
class TilesetEditorMetatileSelector: public SelectablePixmapItem {
Q_OBJECT
public:
TilesetEditorMetatileSelector(Tileset *primaryTileset, Tileset *secondaryTileset): SelectablePixmapItem(32, 32, 1, 1) {
TilesetEditorMetatileSelector(Tileset *primaryTileset, Tileset *secondaryTileset, Map *map): SelectablePixmapItem(32, 32, 1, 1) {
this->primaryTileset = primaryTileset;
this->secondaryTileset = secondaryTileset;
this->numMetatilesWide = 8;
this->map = map;
setAcceptHoverEvents(true);
}
Map *map = nullptr;
void draw();
void select(uint16_t metatileId);
void setTilesets(Tileset*, Tileset*);