90 lines
2.3 KiB
C#
90 lines
2.3 KiB
C#
using DTLib.Extensions;
|
||
|
||
namespace Млаумчерб.Клиент.классы;
|
||
|
||
public class Пролетариат
|
||
{
|
||
|
||
}
|
||
|
||
public class ArgumentsWithPlaceholders
|
||
{
|
||
protected List<string> raw_args = new();
|
||
|
||
public List<string> FillPlaceholders(Dictionary<string, string> values)
|
||
{
|
||
List<string> result = new();
|
||
foreach (var a in raw_args)
|
||
{
|
||
var f = a;
|
||
int begin = a.IndexOf('$');
|
||
if (begin != -1)
|
||
{
|
||
int keyBegin = begin + 2;
|
||
int end = a.IndexOf('}', keyBegin);
|
||
if (end != -1)
|
||
{
|
||
var key = a.Substring(keyBegin, end - keyBegin);
|
||
if (!values.TryGetValue(key, out var v))
|
||
throw new Exception($"can't find value for placeholder '{key}'");
|
||
f = v;
|
||
}
|
||
}
|
||
result.Add(f);
|
||
}
|
||
|
||
return result;
|
||
}
|
||
}
|
||
|
||
public class JavaArguments : ArgumentsWithPlaceholders
|
||
{
|
||
private static readonly string[] _initial_arguments =
|
||
[
|
||
|
||
];
|
||
|
||
private static readonly string[] _enabled_features =
|
||
[
|
||
|
||
];
|
||
|
||
public JavaArguments(MinecraftVersionDescriptor d)
|
||
{
|
||
raw_args.AddRange(_initial_arguments);
|
||
if (d.arguments is not null)
|
||
{
|
||
foreach (var av in d.arguments.jvm)
|
||
{
|
||
if(Буржуазия.CheckRules(av.rules, _enabled_features))
|
||
raw_args.Add(av.value);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public class GameArguments : ArgumentsWithPlaceholders
|
||
{
|
||
private static readonly string[] _enabled_features =
|
||
[
|
||
"has_custom_resolution"
|
||
];
|
||
|
||
public GameArguments(MinecraftVersionDescriptor d)
|
||
{
|
||
if (d.minecraftArguments is not null)
|
||
{
|
||
raw_args.AddRange(d.minecraftArguments.SplitToList(' ', quot: '"'));
|
||
}
|
||
else if (d.arguments is not null)
|
||
{
|
||
foreach (var av in d.arguments.game)
|
||
{
|
||
if(Буржуазия.CheckRules(av.rules, _enabled_features))
|
||
raw_args.Add(av.value);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|