From 8b600fb59c138d4c6e7798c9c07e2fbedf54b34e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jul 2020 03:56:27 -0400 Subject: [PATCH] Ignore invalid metatiles in selection calls to metatile selectors --- include/ui/metatileselector.h | 4 ++-- include/ui/tileseteditor.h | 2 +- include/ui/tileseteditormetatileselector.h | 2 +- src/ui/metatileselector.cpp | 8 ++++++-- src/ui/tileseteditor.cpp | 12 ++++++------ src/ui/tileseteditormetatileselector.cpp | 5 +++-- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/include/ui/metatileselector.h b/include/ui/metatileselector.h index 7b57eb2c..47f3f2ba 100644 --- a/include/ui/metatileselector.h +++ b/include/ui/metatileselector.h @@ -23,8 +23,8 @@ public: } QPoint getSelectionDimensions(); void draw(); - void select(uint16_t metatile); - void selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation); + bool select(uint16_t metatile); + bool selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation); void setTilesets(Tileset*, Tileset*); QList* getSelectedMetatiles(); QList>* getSelectedCollisions(); diff --git a/include/ui/tileseteditor.h b/include/ui/tileseteditor.h index 2dedcb39..fde5a4be 100644 --- a/include/ui/tileseteditor.h +++ b/include/ui/tileseteditor.h @@ -39,7 +39,7 @@ public: ~TilesetEditor(); void setMap(Map*); void setTilesets(QString, QString); - void selectMetatile(uint16_t metatileId); + bool selectMetatile(uint16_t metatileId); private slots: void onHoveredMetatileChanged(uint16_t); diff --git a/include/ui/tileseteditormetatileselector.h b/include/ui/tileseteditormetatileselector.h index 253bc360..87133a0b 100644 --- a/include/ui/tileseteditormetatileselector.h +++ b/include/ui/tileseteditormetatileselector.h @@ -17,7 +17,7 @@ public: } Map *map = nullptr; void draw(); - void select(uint16_t metatileId); + bool select(uint16_t metatileId); void setTilesets(Tileset*, Tileset*); uint16_t getSelectedMetatile(); void updateSelectedMetatile(); diff --git a/src/ui/metatileselector.cpp b/src/ui/metatileselector.cpp index 781f7730..e95ae854 100644 --- a/src/ui/metatileselector.cpp +++ b/src/ui/metatileselector.cpp @@ -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; QPoint coords = this->getMetatileIdCoords(metatileId); SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0); 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->selectedCollisions->append(QPair(collision, elevation)); + return true; } void MetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) { diff --git a/src/ui/tileseteditor.cpp b/src/ui/tileseteditor.cpp index aa58d533..c9d1dfe5 100644 --- a/src/ui/tileseteditor.cpp +++ b/src/ui/tileseteditor.cpp @@ -105,12 +105,12 @@ void TilesetEditor::init(Project *project, Map *map) { metatileHistory.push(commit); } -void TilesetEditor::selectMetatile(uint16_t metatileId) { - if (Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) { - this->metatileSelector->select(metatileId); - QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId); - this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y()); - } +bool TilesetEditor::selectMetatile(uint16_t metatileId) { + if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false; + this->metatileSelector->select(metatileId); + QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId); + this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y()); + return true; } void TilesetEditor::setMap(Map *map) { diff --git a/src/ui/tileseteditormetatileselector.cpp b/src/ui/tileseteditormetatileselector.cpp index 31e34531..dddfdbbd 100644 --- a/src/ui/tileseteditormetatileselector.cpp +++ b/src/ui/tileseteditormetatileselector.cpp @@ -42,12 +42,13 @@ void TilesetEditorMetatileSelector::draw() { this->drawSelection(); } -void TilesetEditorMetatileSelector::select(uint16_t metatileId) { - if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return; +bool TilesetEditorMetatileSelector::select(uint16_t metatileId) { + if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false; QPoint coords = this->getMetatileIdCoords(metatileId); SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0); this->selectedMetatile = metatileId; emit selectedMetatileChanged(metatileId); + return true; } void TilesetEditorMetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {