Add `--userdata` CLI flag

This commit is contained in:
YoshiRulz 2022-12-04 04:12:23 +10:00 committed by James Groom
parent cb71de8de1
commit 825c144d6a
3 changed files with 28 additions and 0 deletions

View File

@ -42,6 +42,7 @@ namespace BizHawk.Client.Common
string? urlPost = null;
bool? audiosync = null;
string? openExtToolDll = null;
List<(string Key, string Value)>? userdataUnparsedPairs = null;
string? cmdRom = null;
for (var i = 0; i < args.Length; i++)
@ -157,6 +158,16 @@ namespace BizHawk.Client.Common
// - dll path matches given string; or dll filename matches given string with or without `.dll`
openExtToolDll = arg.Substring(20);
}
else if (argDowncased.StartsWith("--userdata="))
{
userdataUnparsedPairs = new();
foreach (var s in arg.Substring(11).Split(';'))
{
var iColon = s.IndexOf(':');
if (iColon is -1) throw new ArgParserException("malformed userdata (';' without ':')");
userdataUnparsedPairs.Add((s.Substring(startIndex: 0, length: iColon), s.Substring(iColon + 1)));
}
}
else
{
cmdRom = arg;
@ -200,6 +211,7 @@ namespace BizHawk.Client.Common
httpAddresses: httpAddresses,
audiosync: audiosync,
openExtToolDll: openExtToolDll,
userdataUnparsedPairs: userdataUnparsedPairs,
cmdRom: cmdRom
);
}

View File

@ -36,6 +36,8 @@ namespace BizHawk.Client.Common
public readonly (string IP, int Port)? SocketAddress;
public readonly IReadOnlyList<(string Key, string Value)>? UserdataUnparsedPairs;
public readonly string? MMFFilename;
public readonly (string? UrlGet, string? UrlPost)? HTTPAddresses;
@ -66,6 +68,7 @@ namespace BizHawk.Client.Common
(string? UrlGet, string? UrlPost)? httpAddresses,
bool? audiosync,
string? openExtToolDll,
IReadOnlyList<(string Key, string Value)>? userdataUnparsedPairs,
string? cmdRom)
{
this.cmdLoadSlot = cmdLoadSlot;
@ -87,6 +90,7 @@ namespace BizHawk.Client.Common
HTTPAddresses = httpAddresses;
this.audiosync = audiosync;
this.openExtToolDll = openExtToolDll;
UserdataUnparsedPairs = userdataUnparsedPairs;
this.cmdRom = cmdRom;
}
}

View File

@ -690,6 +690,18 @@ namespace BizHawk.Client.EmuHawk
}
}
if (_argParser.UserdataUnparsedPairs is {} pairs) foreach (var (k, v) in pairs)
{
MovieSession.UserBag[k] = v switch
{
"true" => true,
"false" => false,
_ when int.TryParse(v, out var i) => i,
_ when double.TryParse(v, out var d) => d,
_ => v
};
}
//start Lua Console if requested in the command line arguments
if (_argParser.luaConsole)
{