diff --git a/include/project.h b/include/project.h index 28c3a296..8d892cfd 100644 --- a/include/project.h +++ b/include/project.h @@ -108,7 +108,8 @@ public: QMap tilesetCache; Tileset* loadTileset(QString, Tileset *tileset = nullptr); Tileset* getTileset(QString, bool forceLoad = false); - QMap tilesetLabels; + QStringList primaryTilesetLabels; + QStringList secondaryTilesetLabels; QStringList tilesetLabelsOrdered; Blockdata readBlockdata(QString); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 3c10824f..bea01b5d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -961,9 +961,9 @@ bool MainWindow::loadProjectCombos() { ui->comboBox_Location->clear(); ui->comboBox_Location->addItems(project->mapSectionValueToName.values()); ui->comboBox_PrimaryTileset->clear(); - ui->comboBox_PrimaryTileset->addItems(project->tilesetLabels.value("primary")); + ui->comboBox_PrimaryTileset->addItems(project->primaryTilesetLabels); ui->comboBox_SecondaryTileset->clear(); - ui->comboBox_SecondaryTileset->addItems(project->tilesetLabels.value("secondary")); + ui->comboBox_SecondaryTileset->addItems(project->secondaryTilesetLabels); ui->comboBox_Weather->clear(); ui->comboBox_Weather->addItems(project->weatherNames); ui->comboBox_BattleScene->clear(); @@ -1266,8 +1266,7 @@ void MainWindow::on_actionNew_Tileset_triggered() { msgBox.exec(); return; } - if (editor->project->tilesetLabels.value("primary").contains(createTilesetDialog->fullSymbolName) - || editor->project->tilesetLabels.value("secondary").contains(createTilesetDialog->fullSymbolName)) { + if (editor->project->tilesetLabelsOrdered.contains(createTilesetDialog->fullSymbolName)) { logError(QString("Could not create tileset \"%1\", the symbol \"%2\" already exists.").arg(createTilesetDialog->friendlyName, createTilesetDialog->fullSymbolName)); QMessageBox msgBox(this); msgBox.setText("Failed to add new tileset."); @@ -2547,7 +2546,7 @@ void MainWindow::on_comboBox_EmergeMap_currentTextChanged(const QString &mapName void MainWindow::on_comboBox_PrimaryTileset_currentTextChanged(const QString &tilesetLabel) { - if (editor->project->tilesetLabels["primary"].contains(tilesetLabel) && editor->map) { + if (editor->project->primaryTilesetLabels.contains(tilesetLabel) && editor->map) { editor->updatePrimaryTileset(tilesetLabel); redrawMapScene(); on_horizontalSlider_MetatileZoom_valueChanged(ui->horizontalSlider_MetatileZoom->value()); @@ -2559,7 +2558,7 @@ void MainWindow::on_comboBox_PrimaryTileset_currentTextChanged(const QString &ti void MainWindow::on_comboBox_SecondaryTileset_currentTextChanged(const QString &tilesetLabel) { - if (editor->project->tilesetLabels["secondary"].contains(tilesetLabel) && editor->map) { + if (editor->project->secondaryTilesetLabels.contains(tilesetLabel) && editor->map) { editor->updateSecondaryTileset(tilesetLabel); redrawMapScene(); on_horizontalSlider_MetatileZoom_valueChanged(ui->horizontalSlider_MetatileZoom->value()); diff --git a/src/project.cpp b/src/project.cpp index f5f58261..2486f7bc 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -601,8 +601,8 @@ void Project::setNewMapLayout(Map* map) { layout->border_height = DEFAULT_BORDER_HEIGHT; layout->border_path = QString("%2%1/border.bin").arg(map->name).arg(projectConfig.getFilePath(ProjectFilePath::data_layouts_folders)); layout->blockdata_path = QString("%2%1/map.bin").arg(map->name).arg(projectConfig.getFilePath(ProjectFilePath::data_layouts_folders)); - layout->tileset_primary_label = tilesetLabels["primary"].value(0, "gTileset_General"); - layout->tileset_secondary_label = tilesetLabels["secondary"].value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg"); + layout->tileset_primary_label = this->primaryTilesetLabels.value(0, "gTileset_General"); + layout->tileset_secondary_label = this->secondaryTilesetLabels.value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg"); map->layout = layout; map->layoutId = layout->id; @@ -1046,7 +1046,7 @@ void Project::saveTilesetPalettes(Tileset *tileset) { bool Project::loadLayoutTilesets(MapLayout *layout) { layout->tileset_primary = getTileset(layout->tileset_primary_label); if (!layout->tileset_primary) { - QString defaultTileset = tilesetLabels["primary"].value(0, "gTileset_General"); + QString defaultTileset = primaryTilesetLabels.value(0, "gTileset_General"); logWarn(QString("Map layout %1 has invalid primary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_primary_label).arg(defaultTileset)); layout->tileset_primary_label = defaultTileset; layout->tileset_primary = getTileset(layout->tileset_primary_label); @@ -1058,7 +1058,7 @@ bool Project::loadLayoutTilesets(MapLayout *layout) { layout->tileset_secondary = getTileset(layout->tileset_secondary_label); if (!layout->tileset_secondary) { - QString defaultTileset = tilesetLabels["secondary"].value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg"); + QString defaultTileset = secondaryTilesetLabels.value(0, projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered ? "gTileset_PalletTown" : "gTileset_Petalburg"); logWarn(QString("Map layout %1 has invalid secondary tileset '%2'. Using default '%3'").arg(layout->id).arg(layout->tileset_secondary_label).arg(defaultTileset)); layout->tileset_secondary_label = defaultTileset; layout->tileset_secondary = getTileset(layout->tileset_secondary_label); @@ -1851,8 +1851,10 @@ Project::DataQualifiers Project::getDataQualifiers(QString text, QString label) } void Project::insertTilesetLabel(QString label, bool isSecondary) { - QString category = isSecondary ? "secondary" : "primary"; - this->tilesetLabels[category].append(label); + if (isSecondary) + this->primaryTilesetLabels.append(label); + else + this->secondaryTilesetLabels.append(label); this->tilesetLabelsOrdered.append(label); } @@ -1869,9 +1871,8 @@ void Project::insertTilesetLabel(QString label, QString isSecondaryStr) { bool Project::readTilesetLabels() { QStringList primaryTilesets; QStringList secondaryTilesets; - this->tilesetLabels.clear(); - this->tilesetLabels.insert("primary", primaryTilesets); - this->tilesetLabels.insert("secondary", secondaryTilesets); + this->primaryTilesetLabels.clear(); + this->secondaryTilesetLabels.clear(); this->tilesetLabelsOrdered.clear(); QString filename = projectConfig.getFilePath(ProjectFilePath::tilesets_headers); @@ -1903,11 +1904,11 @@ bool Project::readTilesetLabels() { } bool success = true; - if (this->tilesetLabels["secondary"].isEmpty()) { + if (this->secondaryTilesetLabels.isEmpty()) { logError(QString("Failed to find any secondary tilesets in %1").arg(filename)); success = false; } - if (this->tilesetLabels["primary"].isEmpty()) { + if (this->primaryTilesetLabels.isEmpty()) { logError(QString("Failed to find any primary tilesets in %1").arg(filename)); success = false; } diff --git a/src/scriptapi/apiutility.cpp b/src/scriptapi/apiutility.cpp index c37fb2c5..7445a67d 100644 --- a/src/scriptapi/apiutility.cpp +++ b/src/scriptapi/apiutility.cpp @@ -226,13 +226,13 @@ QList ScriptUtility::getTilesetNames() { QList ScriptUtility::getPrimaryTilesetNames() { if (!window || !window->editor || !window->editor->project) return QList(); - return window->editor->project->tilesetLabels["primary"]; + return window->editor->project->primaryTilesetLabels; } QList ScriptUtility::getSecondaryTilesetNames() { if (!window || !window->editor || !window->editor->project) return QList(); - return window->editor->project->tilesetLabels["secondary"]; + return window->editor->project->secondaryTilesetLabels; } QList ScriptUtility::getMetatileBehaviorNames() { diff --git a/src/ui/newmappopup.cpp b/src/ui/newmappopup.cpp index 1ffabf68..9f0c765f 100644 --- a/src/ui/newmappopup.cpp +++ b/src/ui/newmappopup.cpp @@ -108,8 +108,8 @@ void NewMapPopup::useLayout(QString layoutId) { void NewMapPopup::setDefaultValues(int groupNum, QString mapSec) { ui->lineEdit_NewMap_Name->setText(project->getNewMapName()); - ui->comboBox_NewMap_Primary_Tileset->addItems(project->tilesetLabels.value("primary")); - ui->comboBox_NewMap_Secondary_Tileset->addItems(project->tilesetLabels.value("secondary")); + ui->comboBox_NewMap_Primary_Tileset->addItems(project->primaryTilesetLabels); + ui->comboBox_NewMap_Secondary_Tileset->addItems(project->secondaryTilesetLabels); ui->comboBox_NewMap_Group->addItems(project->groupNames); ui->comboBox_NewMap_Group->setCurrentText(project->groupNames.at(groupNum)); @@ -147,8 +147,8 @@ void NewMapPopup::setDefaultValues(int groupNum, QString mapSec) { void NewMapPopup::setDefaultValuesImportMap(MapLayout *mapLayout) { ui->lineEdit_NewMap_Name->setText(project->getNewMapName()); - ui->comboBox_NewMap_Primary_Tileset->addItems(project->tilesetLabels.value("primary")); - ui->comboBox_NewMap_Secondary_Tileset->addItems(project->tilesetLabels.value("secondary")); + ui->comboBox_NewMap_Primary_Tileset->addItems(project->primaryTilesetLabels); + ui->comboBox_NewMap_Secondary_Tileset->addItems(project->secondaryTilesetLabels); ui->comboBox_NewMap_Group->addItems(project->groupNames); ui->comboBox_NewMap_Group->setCurrentText(project->groupNames.at(0));