using DTLib.Extensions; namespace Млаумчерб.Клиент.классы; public class Пролетариат { } public class ArgumentsWithPlaceholders { protected List raw_args = new(); public List FillPlaceholders(Dictionary values) { List 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); } } } }