Ignore invalid metatiles in selection calls to metatile selectors
This commit is contained in:
parent
35af5557d3
commit
8b600fb59c
6 changed files with 19 additions and 14 deletions
|
@ -23,8 +23,8 @@ public:
|
||||||
}
|
}
|
||||||
QPoint getSelectionDimensions();
|
QPoint getSelectionDimensions();
|
||||||
void draw();
|
void draw();
|
||||||
void select(uint16_t metatile);
|
bool select(uint16_t metatile);
|
||||||
void selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation);
|
bool selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation);
|
||||||
void setTilesets(Tileset*, Tileset*);
|
void setTilesets(Tileset*, Tileset*);
|
||||||
QList<uint16_t>* getSelectedMetatiles();
|
QList<uint16_t>* getSelectedMetatiles();
|
||||||
QList<QPair<uint16_t, uint16_t>>* getSelectedCollisions();
|
QList<QPair<uint16_t, uint16_t>>* getSelectedCollisions();
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
~TilesetEditor();
|
~TilesetEditor();
|
||||||
void setMap(Map*);
|
void setMap(Map*);
|
||||||
void setTilesets(QString, QString);
|
void setTilesets(QString, QString);
|
||||||
void selectMetatile(uint16_t metatileId);
|
bool selectMetatile(uint16_t metatileId);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onHoveredMetatileChanged(uint16_t);
|
void onHoveredMetatileChanged(uint16_t);
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
}
|
}
|
||||||
Map *map = nullptr;
|
Map *map = nullptr;
|
||||||
void draw();
|
void draw();
|
||||||
void select(uint16_t metatileId);
|
bool select(uint16_t metatileId);
|
||||||
void setTilesets(Tileset*, Tileset*);
|
void setTilesets(Tileset*, Tileset*);
|
||||||
uint16_t getSelectedMetatile();
|
uint16_t getSelectedMetatile();
|
||||||
void updateSelectedMetatile();
|
void updateSelectedMetatile();
|
||||||
|
|
|
@ -46,16 +46,20 @@ void MetatileSelector::draw() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetatileSelector::select(uint16_t metatileId) {
|
bool MetatileSelector::select(uint16_t metatileId) {
|
||||||
|
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false;
|
||||||
this->externalSelection = false;
|
this->externalSelection = false;
|
||||||
QPoint coords = this->getMetatileIdCoords(metatileId);
|
QPoint coords = this->getMetatileIdCoords(metatileId);
|
||||||
SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0);
|
SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0);
|
||||||
this->updateSelectedMetatiles();
|
this->updateSelectedMetatiles();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetatileSelector::selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation) {
|
bool MetatileSelector::selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation) {
|
||||||
|
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false;
|
||||||
this->select(metatileId);
|
this->select(metatileId);
|
||||||
this->selectedCollisions->append(QPair<uint16_t, uint16_t>(collision, elevation));
|
this->selectedCollisions->append(QPair<uint16_t, uint16_t>(collision, elevation));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {
|
void MetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {
|
||||||
|
|
|
@ -105,12 +105,12 @@ void TilesetEditor::init(Project *project, Map *map) {
|
||||||
metatileHistory.push(commit);
|
metatileHistory.push(commit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditor::selectMetatile(uint16_t metatileId) {
|
bool TilesetEditor::selectMetatile(uint16_t metatileId) {
|
||||||
if (Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) {
|
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false;
|
||||||
this->metatileSelector->select(metatileId);
|
this->metatileSelector->select(metatileId);
|
||||||
QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId);
|
QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId);
|
||||||
this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y());
|
this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y());
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditor::setMap(Map *map) {
|
void TilesetEditor::setMap(Map *map) {
|
||||||
|
|
|
@ -42,12 +42,13 @@ void TilesetEditorMetatileSelector::draw() {
|
||||||
this->drawSelection();
|
this->drawSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditorMetatileSelector::select(uint16_t metatileId) {
|
bool TilesetEditorMetatileSelector::select(uint16_t metatileId) {
|
||||||
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return;
|
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false;
|
||||||
QPoint coords = this->getMetatileIdCoords(metatileId);
|
QPoint coords = this->getMetatileIdCoords(metatileId);
|
||||||
SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0);
|
SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0);
|
||||||
this->selectedMetatile = metatileId;
|
this->selectedMetatile = metatileId;
|
||||||
emit selectedMetatileChanged(metatileId);
|
emit selectedMetatileChanged(metatileId);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditorMetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {
|
void TilesetEditorMetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {
|
||||||
|
|
Loading…
Reference in a new issue