summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index af4c212..e77ee3c 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -738,6 +738,9 @@ void CRSM::startScen(const ScenarioSettings &scen, QStringList argList)
{
argList << "/noleague";
}
+
+ argList << Packs.getScenarioCmdOptions(filename).split(' ');
+
argList << filename;
processManager->setWorkingDirectory(Config.Auto.Volatile.Clonk.Directory);
out(Packs.linkScenarioPacks(filename));
@@ -1533,6 +1536,10 @@ void CRSM::setupCmds()
addCommand("packs scenarios add", &CRSM::packsScenariosAdd, Management, UserType::Max, "Aktiviert für das <Szenario> die <Packversion>.", "<Szenario> <Packversion>");
addCommand("packs scenarios delete", &CRSM::packsScenariosDelete, Management, UserType::Max, "Löscht für das <Szenario> die <Packversion>.", "<Szenario> <Packversion>");
addCommand("packs scenarios list", &CRSM::packsScenariosList, Management, UserType::Max, "Listet alle Szenarien mit ihren Packversionen auf.");
+ addCommandGroup("packs scenoptions", Management, UserType::Max, "Über die packs scenoptions-Befehlsgruppe werden zusätzliche Clonk-Argumente für einzelne Szenarien/Rundenordner verwaltet.");
+ addCommand("packs scenoptions get", &CRSM::packsScenOptionsGet, Management, UserType::Max, "Fragt die Clonk-Argumente nur für <Szenario> ab.", "<Szenario>");
+ addCommand("packs scenoptions all", &CRSM::packsScenOptionsGet, Management, UserType::Max, "Fragt die Clonk-Argumente ab, die im Endeffekt für <Szenario> gültig sind.", "<Szenario>");
+ addCommand("packs scenoptions set", &CRSM::packsScenOptionsSet, Management, UserType::Max, "Setzt die Clonk-Argumente für <Szenario> auf [Argumente], entfernt sie, wenn keine Argumente angegeben sind.", "<Szenario> [Argumente]");
addCommand("relist", &CRSM::relist, Management, UserType::Max, "Durchsucht veränderte Rundenordner erneut.");
}
@@ -3314,6 +3321,45 @@ CMD_FUNCTION_IMPL(packsScenariosList)
return Success;
}
+CMD_FUNCTION_IMPL(packsScenOptionsGet)
+ bool all = cmd == "packs scenoptions all";
+
+ const QString& scen = args.trimmed();
+ if(scen.isEmpty())
+ {
+ respond(client, "Eine Szenarioangabe ist notwendig!\n");
+ return SyntaxFail;
+ }
+ else
+ {
+ respond(client, "\"" + Packs.getScenarioCmdOptions(scen, all) + "\"\n");
+ return Success;
+ }
+}
+
+CMD_FUNCTION_IMPL(packsScenOptionsSet)
+ if(args.trimmed().isEmpty())
+ {
+ respond(client, "Eine Szenarioangabe ist notwendig!\n");
+ return SyntaxFail;
+ }
+
+ QStringList argList = Util::splitEscaped(args, ' ');
+ QString scen = argList.first();
+ argList.removeFirst();
+
+ QString scenOptions;
+
+ if(argList.length() > 0)
+ {
+ scenOptions = Util::joinEscape(argList, ' ');
+ }
+
+ respond(client, Packs.setScenarioCmdOptions(scen, scenOptions));
+
+ return Success;
+}
+
CMD_FUNCTION_IMPL(dccConnect)
dccChatRequest(client);
return Success;