diff --git a/include/config.h b/include/config.h index a680c55d..bb740d41 100644 --- a/include/config.h +++ b/include/config.h @@ -61,7 +61,7 @@ public: void setMonitorFiles(bool monitor); void setRegionMapDimensions(int width, int height); void setTheme(QString theme); - void setTextEditorCommand(const QString &command); + void setTextEditorCommandTemplate(const QString &commandTemplate); QString getRecentProject(); QString getRecentMap(); MapSortOrder getMapSortOrder(); @@ -77,7 +77,7 @@ public: bool getMonitorFiles(); QSize getRegionMapDimensions(); QString getTheme(); - QString getTextEditorCommand(); + QString getTextEditorCommandTemplate(); protected: virtual QString getConfigFilepath() override; virtual void parseConfigKeyValue(QString key, QString value) override; @@ -109,7 +109,7 @@ private: bool monitorFiles; QSize regionMapDimensions; QString theme; - QString textEditorCommand; + QString textEditorCommandTemplate; }; extern PorymapConfig porymapConfig; diff --git a/include/project.h b/include/project.h index 179a5a93..2dcaa345 100644 --- a/include/project.h +++ b/include/project.h @@ -172,8 +172,9 @@ public: QString fixPalettePath(QString path); QString fixGraphicPath(QString path); - QString getScriptFileExtension(bool usePoryScript); - QString getScriptDefaultString(bool usePoryScript, QString mapName); + QString getScriptFileExtension(bool usePoryScript) const; + QString getScriptDefaultString(bool usePoryScript, QString mapName) const; + QString getMapScriptsFilePath(const QString &mapName) const; bool loadMapBorder(Map *map); diff --git a/src/config.cpp b/src/config.cpp index 2a1b16c7..24798f7c 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -188,7 +188,7 @@ void PorymapConfig::parseConfigKeyValue(QString key, QString value) { } else if (key == "theme") { this->theme = value; } else if (key == "text_editor") { - this->textEditorCommand = value; + this->textEditorCommandTemplate = value; } else { logWarn(QString("Invalid config key found in config file %1: '%2'").arg(this->getConfigFilepath()).arg(key)); } @@ -218,7 +218,7 @@ QMap PorymapConfig::getKeyValueMap() { map.insert("region_map_dimensions", QString("%1x%2").arg(this->regionMapDimensions.width()) .arg(this->regionMapDimensions.height())); map.insert("theme", this->theme); - map.insert("text_editor", this->textEditorCommand); + map.insert("text_editor", this->textEditorCommandTemplate); return map; } @@ -319,8 +319,8 @@ void PorymapConfig::setTheme(QString theme) { this->theme = theme; } -void PorymapConfig::setTextEditorCommand(const QString &command) { - this->textEditorCommand = command; +void PorymapConfig::setTextEditorCommandTemplate(const QString &commandTemplate) { + this->textEditorCommandTemplate = commandTemplate; this->save(); } @@ -406,8 +406,8 @@ QString PorymapConfig::getTheme() { return this->theme; } -QString PorymapConfig::getTextEditorCommand() { - return this->textEditorCommand; +QString PorymapConfig::getTextEditorCommandTemplate() { + return this->textEditorCommandTemplate; } const QMap baseGameVersionMap = { diff --git a/src/project.cpp b/src/project.cpp index 270e9346..6cbd7c92 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -2410,7 +2410,7 @@ QString Project::fixGraphicPath(QString path) { return path; } -QString Project::getScriptFileExtension(bool usePoryScript) { +QString Project::getScriptFileExtension(bool usePoryScript) const { if(usePoryScript) { return ".pory"; } else { @@ -2418,13 +2418,23 @@ QString Project::getScriptFileExtension(bool usePoryScript) { } } -QString Project::getScriptDefaultString(bool usePoryScript, QString mapName) { +QString Project::getScriptDefaultString(bool usePoryScript, QString mapName) const { if(usePoryScript) return QString("mapscripts %1_MapScripts {}").arg(mapName); else return QString("%1_MapScripts::\n\t.byte 0\n").arg(mapName); } +QString Project::getMapScriptsFilePath(const QString &mapName) const { + const bool usePoryscript = projectConfig.getUsePoryScript(); + auto path = QDir::cleanPath(root + "/data/maps/" + mapName + "/scripts"); + auto extension = getScriptFileExtension(usePoryscript); + if (usePoryscript && !QFile::exists(path + extension)) + extension = getScriptFileExtension(false); + path += extension; + return path; +} + void Project::loadEventPixmaps(QList objects) { bool needs_update = false; for (Event *object : objects) { diff --git a/src/ui/preferenceeditor.cpp b/src/ui/preferenceeditor.cpp index 42edd313..9a22a250 100644 --- a/src/ui/preferenceeditor.cpp +++ b/src/ui/preferenceeditor.cpp @@ -30,7 +30,7 @@ PreferenceEditor::~PreferenceEditor() } void PreferenceEditor::populateFields() { - ui->lineEdit_TextEditor->setText(porymapConfig.getTextEditorCommand()); + ui->lineEdit_TextEditor->setText(porymapConfig.getTextEditorCommandTemplate()); QStringList themes = { "default" }; QRegularExpression re(":/themes/([A-z0-9_-]+).qss"); @@ -44,7 +44,7 @@ void PreferenceEditor::populateFields() { } void PreferenceEditor::saveFields() { - porymapConfig.setTextEditorCommand(ui->lineEdit_TextEditor->text()); + porymapConfig.setTextEditorCommandTemplate(ui->lineEdit_TextEditor->text()); if (themeSelector->currentText() != porymapConfig.getTheme()) { const auto theme = themeSelector->currentText();