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();
|
||||
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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue