Ignore invalid metatiles in selection calls to metatile selectors

This commit is contained in:
GriffinR 2020-07-08 03:56:27 -04:00 committed by garak
parent 35af5557d3
commit 8b600fb59c
6 changed files with 19 additions and 14 deletions

View file

@ -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<uint16_t>* getSelectedMetatiles();
QList<QPair<uint16_t, uint16_t>>* getSelectedCollisions();

View file

@ -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);

View file

@ -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();

View file

@ -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<uint16_t, uint16_t>(collision, elevation));
return true;
}
void MetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {

View file

@ -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) {

View file

@ -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) {