Add Engine.LaunchWrapper launch argument for mod switching.

This commit is contained in:
Paul Chote
2019-10-02 20:34:23 +01:00
committed by abcdefg30
parent bdd0f68a4a
commit 3bda890f7b

View File

@@ -41,6 +41,7 @@ namespace OpenRA
public static ICursor Cursor; public static ICursor Cursor;
public static bool HideCursor; public static bool HideCursor;
static WorldRenderer worldRenderer; static WorldRenderer worldRenderer;
static string modLaunchWrapper;
internal static OrderManager OrderManager; internal static OrderManager OrderManager;
static Server.Server server; static Server.Server server;
@@ -351,6 +352,8 @@ namespace OpenRA
foreach (var mod in Mods) foreach (var mod in Mods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Metadata.Title, mod.Value.Metadata.Version); Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Metadata.Title, mod.Value.Metadata.Version);
modLaunchWrapper = args.GetValue("Engine.LaunchWrapper", null);
ExternalMods = new ExternalMods(); ExternalMods = new ExternalMods();
Manifest currentMod; Manifest currentMod;
@@ -509,8 +512,15 @@ namespace OpenRA
{ {
try try
{ {
var path = mod.LaunchPath;
var args = launchArguments != null ? mod.LaunchArgs.Append(launchArguments) : mod.LaunchArgs; var args = launchArguments != null ? mod.LaunchArgs.Append(launchArguments) : mod.LaunchArgs;
var p = Process.Start(mod.LaunchPath, args.Select(a => "\"" + a + "\"").JoinWith(" ")); if (modLaunchWrapper != null)
{
path = modLaunchWrapper;
args = new[] { mod.LaunchPath }.Concat(args);
}
var p = Process.Start(path, args.Select(a => "\"" + a + "\"").JoinWith(" "));
if (p == null || p.HasExited) if (p == null || p.HasExited)
onFailed(); onFailed();
else else