diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2016-09-11 18:53:04 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2016-09-11 18:53:04 +0200 |
| commit | f596d04d6751aa726c779d1581114ff9731d84cb (patch) | |
| tree | f8bda238fcb8898fbe8f451d8933ade11efc38eb /src/CRSMPackCompatibility.cpp | |
| parent | 4042f87a31b7060a99c99bc9dbf81aa54fe405eb (diff) | |
| download | manager-f596d04d6751aa726c779d1581114ff9731d84cb.tar.gz manager-f596d04d6751aa726c779d1581114ff9731d84cb.zip | |
Add possibility to assign certain Clonk-Arguments to certain scenarios
(or folders)
Diffstat (limited to 'src/CRSMPackCompatibility.cpp')
| -rw-r--r-- | src/CRSMPackCompatibility.cpp | 62 |
1 files changed, 55 insertions, 7 deletions
diff --git a/src/CRSMPackCompatibility.cpp b/src/CRSMPackCompatibility.cpp index 9d171a8..b301288 100644 --- a/src/CRSMPackCompatibility.cpp +++ b/src/CRSMPackCompatibility.cpp @@ -3,6 +3,21 @@ #include <QDir> #include <QFile> +namespace { + QStringList getScenarioPathParts(const QString& scenario) + { + QStringList parts; + parts.append(scenario); + int position = scenario.length(); + while((position = scenario.lastIndexOf('/', position - 1)) != -1) + { + parts.append(scenario.left(position)); + } + + return parts; + } +} + void CRSMPackCompatibility::clear() { auto configVals = configValues; @@ -12,14 +27,8 @@ void CRSMPackCompatibility::clear() QString CRSMPackCompatibility::linkScenarioPacks(const QString &scenario) { - QStringList parts; - parts.append(scenario); QString ret; - int position = scenario.length(); - while((position = scenario.lastIndexOf('/', position - 1)) != -1) - { - parts.append(scenario.left(position)); - } + const QStringList& parts = getScenarioPathParts(scenario); QMap<QString, QString> packs = PackDefaultVersion; foreach(const QString& filePathPart, parts) @@ -46,6 +55,31 @@ QString CRSMPackCompatibility::linkScenarioPacks(const QString &scenario) return ret; } +QString CRSMPackCompatibility::getScenarioCmdOptions(const QString& scenario, bool all) +{ + QString ret; + + QStringList parts; + if(all) + { + parts = getScenarioPathParts(scenario); + } + else + { + parts.append(scenario); + } + + foreach(const QString& part, parts) + { + if(ScenarioCmdOptions.contains(part)) + { + ret.append(' '); + ret.append(ScenarioCmdOptions[part]); + } + } + return ret; +} + QString CRSMPackCompatibility::read(const QString &fileName, const QString& clonkPath, bool writeDefault) { this->clonkPath = clonkPath; @@ -155,6 +189,20 @@ QString CRSMPackCompatibility::applyConfig() return ret; } +QString CRSMPackCompatibility::setScenarioCmdOptions(const QString& scenario, const QString& options) +{ + if(options.isEmpty()) + { + ScenarioCmdOptions.remove(scenario); + return "Removed ScenOptions for \"" + scenario + "\".\n"; + } + else + { + ScenarioCmdOptions[scenario] = options; + return "Set ScenOptions for \"" + scenario + "\" to \"" + options + "\".\n"; + } +} + QString CRSMPackCompatibility::checkPackVersion(const QString &packVersion, const QString &pack) { if(!QFile(clonkPath + PacksDirectory + QDir::separator() + packVersion).exists()) |
