summaryrefslogtreecommitdiffstats
path: root/src/CRSMPackCompatibility.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CRSMPackCompatibility.cpp')
-rw-r--r--src/CRSMPackCompatibility.cpp62
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())