diff --git a/include/config.h b/include/config.h index 624f87cd..1fa0be3f 100644 --- a/include/config.h +++ b/include/config.h @@ -96,9 +96,12 @@ class ProjectConfig: public KeyValueConfigBase public: ProjectConfig() { this->baseGameVersion = BaseGameVersion::pokeemerald; + this->useEncounterJson = true; } void setBaseGameVersion(BaseGameVersion baseGameVersion); BaseGameVersion getBaseGameVersion(); + void setEncounterJsonActive(bool active); + bool getEncounterJsonActive(); void setProjectDir(QString projectDir); protected: QString getConfigFilepath(); @@ -108,6 +111,7 @@ protected: private: BaseGameVersion baseGameVersion; QString projectDir; + bool useEncounterJson; }; extern ProjectConfig projectConfig; diff --git a/src/config.cpp b/src/config.cpp index e689b91e..9ca25a9b 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -337,6 +337,12 @@ void ProjectConfig::parseConfigKeyValue(QString key, QString value) { this->baseGameVersion = BaseGameVersion::pokeemerald; logWarn(QString("Invalid config value for base_game_version: '%1'. Must be 'pokeruby' or 'pokeemerald'.").arg(value)); } + } else if (key == "use_encounter_json") { + bool ok; + this->useEncounterJson = value.toInt(&ok); + if (!ok) { + logWarn(QString("Invalid config value for use_encounter_json: '%1'. Must be 0 or 1.").arg(value)); + } } else { logWarn(QString("Invalid config key found in config file %1: '%2'").arg(this->getConfigFilepath()).arg(key)); } @@ -345,6 +351,7 @@ void ProjectConfig::parseConfigKeyValue(QString key, QString value) { QMap ProjectConfig::getKeyValueMap() { QMap map; map.insert("base_game_version", baseGameVersionMap.value(this->baseGameVersion)); + map.insert("use_encounter_json", QString::number(this->useEncounterJson)); return map; } @@ -373,6 +380,7 @@ void ProjectConfig::onNewConfigFileCreated() { this->baseGameVersion = static_cast(baseGameVersionComboBox->currentData().toInt()); } } + this->useEncounterJson = true; } void ProjectConfig::setProjectDir(QString projectDir) { @@ -387,3 +395,12 @@ void ProjectConfig::setBaseGameVersion(BaseGameVersion baseGameVersion) { BaseGameVersion ProjectConfig::getBaseGameVersion() { return this->baseGameVersion; } + +void ProjectConfig::setEncounterJsonActive(bool active) { + this->useEncounterJson = active; + this->save(); +} + +bool ProjectConfig::getEncounterJsonActive() { + return this->useEncounterJson; +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 07df271c..3e43c655 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -149,6 +149,9 @@ void MainWindow::initMapSortOrder() { void MainWindow::setProjectSpecificUIVisibility() { + if (!projectConfig.getEncounterJsonActive()) + ui->tabWidget->removeTab(4); + switch (projectConfig.getBaseGameVersion()) { case BaseGameVersion::pokeruby: @@ -2216,6 +2219,7 @@ void MainWindow::closeEvent(QCloseEvent *event) { this->ui->splitter_main->saveState() ); porymapConfig.save(); + projectConfig.save(); QMainWindow::closeEvent(event); } diff --git a/src/project.cpp b/src/project.cpp index 22b9623f..57866281 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -521,6 +521,8 @@ void Project::saveMapGroups() { } void Project::saveWildMonData() { + if (!projectConfig.getEncounterJsonActive()) return; + QString wildEncountersJsonFilepath = QString("%1/src/data/wild_encounters.json").arg(root); QFile wildEncountersFile(wildEncountersJsonFilepath); if (!wildEncountersFile.open(QIODevice::WriteOnly)) { @@ -1378,6 +1380,8 @@ void Project::deleteFile(QString path) { } void Project::readWildMonData() { + if (!projectConfig.getEncounterJsonActive()) return; + QString wildMonJsonFilepath = QString("%1/src/data/wild_encounters.json").arg(root); QJsonDocument wildMonsJsonDoc; if (!parser.tryParseJsonFile(&wildMonsJsonDoc, wildMonJsonFilepath)) {