Add get/setMetatileLabel to API
This commit is contained in:
parent
9cf0575914
commit
67af7e52da
4 changed files with 60 additions and 8 deletions
|
@ -112,6 +112,8 @@ public:
|
|||
Q_INVOKABLE void setMetatileLayerOrder(QList<int> order);
|
||||
Q_INVOKABLE QList<float> getMetatileLayerOpacity();
|
||||
Q_INVOKABLE void setMetatileLayerOpacity(QList<float> order);
|
||||
Q_INVOKABLE QString getMetatileLabel(int metatileId);
|
||||
Q_INVOKABLE void setMetatileLabel(int metatileId, QString label);
|
||||
|
||||
private slots:
|
||||
void on_action_Open_Project_triggered();
|
||||
|
|
|
@ -41,6 +41,8 @@ public:
|
|||
void updateMap(Map *map);
|
||||
void updateTilesets(QString primaryTilsetLabel, QString secondaryTilesetLabel);
|
||||
bool selectMetatile(uint16_t metatileId);
|
||||
uint16_t getSelectedMetatile();
|
||||
void setMetatileLabel(QString label);
|
||||
|
||||
QObjectList shortcutableObjects() const;
|
||||
|
||||
|
|
|
@ -539,3 +539,41 @@ void MainWindow::setMetatileLayerOpacity(QList<float> order) {
|
|||
this->editor->map->metatileLayerOpacity = order;
|
||||
this->refreshAfterPalettePreviewChange();
|
||||
}
|
||||
|
||||
QString MainWindow::getMetatileLabel(int metatileId) {
|
||||
if (!this->editor || !this->editor->map || !this->editor->map->layout)
|
||||
return QString();
|
||||
Tileset * primaryTileset = this->editor->map->layout->tileset_primary;
|
||||
Tileset * secondaryTileset = this->editor->map->layout->tileset_secondary;
|
||||
Metatile * metatile = Tileset::getMetatile(metatileId, primaryTileset, secondaryTileset);
|
||||
if (!metatile || metatile->label.size() == 0)
|
||||
return QString();
|
||||
|
||||
return metatile->label;
|
||||
}
|
||||
|
||||
void MainWindow::setMetatileLabel(int metatileId, QString label) {
|
||||
if (!this->editor || !this->editor->map || !this->editor->map->layout)
|
||||
return;
|
||||
Tileset * primaryTileset = this->editor->map->layout->tileset_primary;
|
||||
Tileset * secondaryTileset = this->editor->map->layout->tileset_secondary;
|
||||
Metatile * metatile = Tileset::getMetatile(metatileId, primaryTileset, secondaryTileset);
|
||||
if (!metatile)
|
||||
return;
|
||||
|
||||
// TODO: Verify input
|
||||
//label.remove(QRegularExpression("?![_A-Za-z0-9]*$"));
|
||||
|
||||
if (this->tilesetEditor && this->tilesetEditor->getSelectedMetatile() == metatileId) {
|
||||
this->tilesetEditor->setMetatileLabel(label);
|
||||
} else if (metatile->label != label) {
|
||||
metatile->label = label;
|
||||
|
||||
// TODO: Writing to file immediately.
|
||||
// Perhaps update tilesets to carry a "hasUnsavedChanges" field,
|
||||
// and on saving the project save all tilesets with unsaved changes.
|
||||
// saveTilesetMetatileLabels can be trivially updated to handle a single tileset at a time.
|
||||
if (editor->project)
|
||||
editor->project->saveTilesetMetatileLabels(primaryTileset, secondaryTileset);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,6 +76,10 @@ bool TilesetEditor::selectMetatile(uint16_t metatileId) {
|
|||
return true;
|
||||
}
|
||||
|
||||
uint16_t TilesetEditor::getSelectedMetatile() {
|
||||
return this->metatileSelector->getSelectedMetatile();
|
||||
}
|
||||
|
||||
void TilesetEditor::setTilesets(QString primaryTilesetLabel, QString secondaryTilesetLabel) {
|
||||
Tileset *primaryTileset = project->getTileset(primaryTilesetLabel);
|
||||
Tileset *secondaryTileset = project->getTileset(secondaryTilesetLabel);
|
||||
|
@ -173,7 +177,7 @@ void TilesetEditor::initMetatileSelector()
|
|||
}
|
||||
|
||||
void TilesetEditor::initMetatileLayersItem() {
|
||||
Metatile *metatile = Tileset::getMetatile(this->metatileSelector->getSelectedMetatile(), this->primaryTileset, this->secondaryTileset);
|
||||
Metatile *metatile = Tileset::getMetatile(this->getSelectedMetatile(), this->primaryTileset, this->secondaryTileset);
|
||||
this->metatileLayersItem = new MetatileLayersItem(metatile, this->primaryTileset, this->secondaryTileset);
|
||||
connect(this->metatileLayersItem, &MetatileLayersItem::tileChanged,
|
||||
this, &TilesetEditor::onMetatileLayerTileChanged);
|
||||
|
@ -278,7 +282,7 @@ void TilesetEditor::refresh() {
|
|||
this->metatileLayersItem->setTilesets(this->primaryTileset, this->secondaryTileset);
|
||||
this->tileSelector->setTilesets(this->primaryTileset, this->secondaryTileset);
|
||||
this->metatileSelector->setTilesets(this->primaryTileset, this->secondaryTileset);
|
||||
this->metatileSelector->select(this->metatileSelector->getSelectedMetatile());
|
||||
this->metatileSelector->select(this->getSelectedMetatile());
|
||||
this->drawSelectedTiles();
|
||||
|
||||
if (metatileSelector) {
|
||||
|
@ -415,7 +419,7 @@ void TilesetEditor::onMetatileLayerTileChanged(int x, int y) {
|
|||
this->metatileLayersItem->draw();
|
||||
this->hasUnsavedChanges = true;
|
||||
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
}
|
||||
|
@ -482,13 +486,19 @@ void TilesetEditor::on_comboBox_metatileBehaviors_textActivated(const QString &m
|
|||
if (this->metatile) {
|
||||
Metatile *prevMetatile = new Metatile(*this->metatile);
|
||||
this->metatile->behavior = static_cast<uint8_t>(project->metatileBehaviorMap[metatileBehavior]);
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
this->hasUnsavedChanges = true;
|
||||
}
|
||||
}
|
||||
|
||||
void TilesetEditor::setMetatileLabel(QString label)
|
||||
{
|
||||
this->ui->lineEdit_metatileLabel->setText(label);
|
||||
saveMetatileLabel();
|
||||
}
|
||||
|
||||
void TilesetEditor::on_lineEdit_metatileLabel_editingFinished()
|
||||
{
|
||||
saveMetatileLabel();
|
||||
|
@ -500,7 +510,7 @@ void TilesetEditor::saveMetatileLabel()
|
|||
if (this->metatile && this->metatile->label != this->ui->lineEdit_metatileLabel->text()) {
|
||||
Metatile *prevMetatile = new Metatile(*this->metatile);
|
||||
this->metatile->label = this->ui->lineEdit_metatileLabel->text();
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
this->hasUnsavedChanges = true;
|
||||
|
@ -512,7 +522,7 @@ void TilesetEditor::on_comboBox_layerType_activated(int layerType)
|
|||
if (this->metatile) {
|
||||
Metatile *prevMetatile = new Metatile(*this->metatile);
|
||||
this->metatile->layerType = static_cast<uint8_t>(layerType);
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
this->hasUnsavedChanges = true;
|
||||
|
@ -524,7 +534,7 @@ void TilesetEditor::on_comboBox_encounterType_activated(int encounterType)
|
|||
if (this->metatile) {
|
||||
Metatile *prevMetatile = new Metatile(*this->metatile);
|
||||
this->metatile->encounterType = static_cast<uint8_t>(encounterType);
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
this->hasUnsavedChanges = true;
|
||||
|
@ -536,7 +546,7 @@ void TilesetEditor::on_comboBox_terrainType_activated(int terrainType)
|
|||
if (this->metatile) {
|
||||
Metatile *prevMetatile = new Metatile(*this->metatile);
|
||||
this->metatile->terrainType = static_cast<uint8_t>(terrainType);
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(metatileSelector->getSelectedMetatile(),
|
||||
MetatileHistoryItem *commit = new MetatileHistoryItem(this->getSelectedMetatile(),
|
||||
prevMetatile, new Metatile(*this->metatile));
|
||||
metatileHistory.push(commit);
|
||||
this->hasUnsavedChanges = true;
|
||||
|
|
Loading…
Reference in a new issue