Add `--userdata` CLI flag
This commit is contained in:
parent
cb71de8de1
commit
825c144d6a
|
@ -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
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue