diff --git a/include/config.h b/include/config.h index fb94c4be..2a14c399 100644 --- a/include/config.h +++ b/include/config.h @@ -106,6 +106,8 @@ public: BaseGameVersion getBaseGameVersion(); void setEncounterJsonActive(bool active); bool getEncounterJsonActive(); + void setUsePoryScript(bool usePoryScript); + bool getUsePoryScript(); void setProjectDir(QString projectDir); protected: QString getConfigFilepath(); @@ -116,6 +118,7 @@ private: BaseGameVersion baseGameVersion; QString projectDir; bool useEncounterJson; + bool usePoryScript; }; extern ProjectConfig projectConfig; diff --git a/include/project.h b/include/project.h index a0195b2f..f2194e83 100644 --- a/include/project.h +++ b/include/project.h @@ -151,6 +151,9 @@ public: QString fixPalettePath(QString path); QString fixGraphicPath(QString path); + QString getScriptFileExtension(bool usePoryScript); + QString getScriptDefaultString(bool usePoryScript, QString mapName); + void loadMapBorder(Map *map); void saveMapHealEvents(Map *map); diff --git a/src/config.cpp b/src/config.cpp index 5b974255..ed76cd1b 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -354,6 +354,12 @@ void ProjectConfig::parseConfigKeyValue(QString key, QString value) { if (!ok) { logWarn(QString("Invalid config value for use_encounter_json: '%1'. Must be 0 or 1.").arg(value)); } + } else if(key == "use_poryscript") { + bool ok; + this->usePoryScript = value.toInt(&ok); + if(!ok) { + logWarn(QString("Invalid config value for use_poryscript: '%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)); } @@ -363,6 +369,7 @@ QMap ProjectConfig::getKeyValueMap() { QMap map; map.insert("base_game_version", baseGameVersionMap.value(this->baseGameVersion)); map.insert("use_encounter_json", QString::number(this->useEncounterJson)); + map.insert("use_poryscript", QString::number(this->usePoryScript)); return map; } @@ -392,6 +399,7 @@ void ProjectConfig::onNewConfigFileCreated() { } } this->useEncounterJson = true; + this->usePoryScript = false; } void ProjectConfig::setProjectDir(QString projectDir) { @@ -415,3 +423,12 @@ void ProjectConfig::setEncounterJsonActive(bool active) { bool ProjectConfig::getEncounterJsonActive() { return this->useEncounterJson; } + +void ProjectConfig::setUsePoryScript(bool usePoryScript) { + this->usePoryScript = usePoryScript; + this->save(); +} + +bool ProjectConfig::getUsePoryScript() { + return this->usePoryScript; +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0ed00da2..81882671 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1062,7 +1062,7 @@ void MainWindow::redo() { // Open current map scripts in system default editor for .inc files void MainWindow::openInTextEditor() { - QString path = QDir::cleanPath("file://" + editor->project->root + QDir::separator() + "data/maps/" + editor->map->name + "/scripts.inc"); + QString path = QDir::cleanPath("file://" + editor->project->root + QDir::separator() + "data/maps/" + editor->map->name + "/scripts" + editor->project->getScriptFileExtension(projectConfig.getUsePoryScript())); QDesktopServices::openUrl(QUrl(path)); } diff --git a/src/project.cpp b/src/project.cpp index 0094e864..f173bd3a 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -962,12 +962,12 @@ void Project::saveMap(Map *map) { } // Create file data/maps//scripts.inc - QString text = QString("%1_MapScripts::\n\t.byte 0\n").arg(map->name); - saveTextFile(root + "/data/maps/" + map->name + "/scripts.inc", text); + QString text = this->getScriptDefaultString(projectConfig.getUsePoryScript(), map->name); + saveTextFile(root + "/data/maps/" + map->name + "/scripts" + this->getScriptFileExtension(projectConfig.getUsePoryScript()), text); if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokeruby) { // Create file data/maps//text.inc - saveTextFile(root + "/data/maps/" + map->name + "/text.inc", "\n"); + saveTextFile(root + "/data/maps/" + map->name + "/text" + this->getScriptFileExtension(projectConfig.getUsePoryScript()), "\n"); } // Simply append to data/event_scripts.s. @@ -1798,6 +1798,21 @@ QString Project::fixGraphicPath(QString path) { return path; } +QString Project::getScriptFileExtension(bool usePoryScript) { + if(usePoryScript) { + return ".pory"; + } else { + return ".inc"; + } +} + +QString Project::getScriptDefaultString(bool usePoryScript, QString mapName) { + if(usePoryScript) + return QString("mapscripts %1_MapScripts {}").arg(mapName); + else + return QString("%1_MapScripts::\n\t.byte 0\n").arg(mapName); +} + void Project::loadEventPixmaps(QList objects) { bool needs_update = false; for (Event *object : objects) {