public static void WriteTo(Sided <Equivalencies> equivs, string file)
    {
        var root       = new YamlMappingNode();
        var equiv_node = new YamlMappingNode();

        var(eclient, eserver, ejoined) = Split(equivs);
        var esides = new[] { ("client", eclient), ("server", eserver), ("joined", ejoined) };
Esempio n. 2
0
    private Sided <Mappings> ParseTsrgs(string version)
    {
        var sided = new Sided <Mappings>();

        using var client_file = File.OpenText(Path.Combine(Folder, version, "client.tsrg"));
        using var server_file = File.OpenText(Path.Combine(Folder, version, "server.tsrg"));
        MappingsIO.ParseTsrg(sided.Client, client_file);
        MappingsIO.ParseTsrg(sided.Server, server_file);
        return(sided);
    }
Esempio n. 3
0
 public Sided <Mappings> CreateMappings(string version)
 {
     if (!Directory.Exists(Path.Combine(Folder, version)))
     {
         return(null);
     }
     var final = new Sided <Mappings>();
     var local = ParseTsrgs(version);
     var sides = new (
         Func <Sided <Mappings>, Mappings> map,
         Func <Sided <FlatMap>, FlatMap> flat,
         Equivalencies eq,
         Func <VersionedRenames, Func <string, string, Equivalencies, string> > class_getter,
         Func <VersionedRenames, Func <string, string, Equivalencies, string> > method_getter,
         Func <VersionedRenames, Func <string, string, Equivalencies, string> > field_getter
         )[]
    public static Sided <Equivalencies> Parse(YamlMappingNode node)
    {
        var eq = new Sided <Equivalencies>();

        foreach (var side in new[] { "client", "server", "joined" })
        {
            var classes = node.Go("equivalencies", side, "classes").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new();
            var fields  = node.Go("equivalencies", side, "fields").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new();
            var methods = node.Go("equivalencies", side, "methods").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new();
            if (side == "client" || side == "joined")
            {
                foreach (var item in classes)
                {
                    eq.Client.AddClasses(item);
                }
                foreach (var item in fields)
                {
                    eq.Client.AddFields(item);
                }
                foreach (var item in methods)
                {
                    eq.Client.AddMethods(item);
                }
            }
            if (side == "server" || side == "joined")
            {
                foreach (var item in classes)
                {
                    eq.Server.AddClasses(item);
                }
                foreach (var item in fields)
                {
                    eq.Server.AddFields(item);
                }
                foreach (var item in methods)
                {
                    eq.Server.AddMethods(item);
                }
            }
        }
        return(eq);
    }
Esempio n. 5
0
    public RetroMCP(string folder, string matched_version)
    {
        Folder = folder;
        var mcp = ParseTsrgs(matched_version);

        MatchedMCP            = new(mcp.Client.Reversed(), mcp.Server.Reversed());
        MatchedMojang         = new();
        using var client_file = File.OpenText(Path.Combine(Folder, "matched_client.txt"));
        using var server_file = File.OpenText(Path.Combine(Folder, "matched_server.txt"));
        MappingsIO.ParseProguard(MatchedMojang.Client, client_file);
        MappingsIO.ParseProguard(MatchedMojang.Server, server_file);
        FoundRenames  = new((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "mappings_found.yaml")));
        CustomRenames = new((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "mappings_custom.yaml")));
        var found_equivs  = Equivalencies.Parse((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "equivalencies_custom.yaml")));
        var custom_equivs = Equivalencies.Parse((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "equivalencies_custom.yaml")));
        var client_equivs = new Equivalencies(found_equivs.Client, custom_equivs.Client);
        var server_equivs = new Equivalencies(found_equivs.Server, custom_equivs.Server);

        MergedEquivalencies = new(client_equivs, server_equivs);
    }