Ejemplo n.º 1
0
        public override void Run()
        {
            taskInterface.SetStatus("Deleting Old Src");
            if (Directory.Exists(srcDir))
            {
                Directory.Delete(srcDir, true);
            }

            var clientModule = serverOnly ? null : ReadModule(TerrariaPath, clientVersion);
            var serverModule = ReadModule(TerrariaServerPath, serverVersion);
            var mainModule   = serverOnly ? serverModule : clientModule;

            projectDecompiler = new ExtendedProjectDecompiler {
                Settings         = decompilerSettings,
                AssemblyResolver = new EmbeddedAssemblyResolver(mainModule, mainModule.Reader.DetectTargetFrameworkId())
            };


            var items     = new List <WorkItem>();
            var files     = new HashSet <string>();
            var resources = new HashSet <string>();

            if (!serverOnly)
            {
                AddModule(clientModule, projectDecompiler.AssemblyResolver, items, files, resources);
            }

            AddModule(serverModule, projectDecompiler.AssemblyResolver, items, files, resources, serverOnly ? null : "SERVER");

            items.Add(WriteProjectFile(mainModule, files, resources));

            ExecuteParallel(items);
        }
        public override void Run()
        {
            taskInterface.SetStatus("Deleting Old Src");
            if (Directory.Exists(srcDir))
            {
                Directory.Delete(srcDir, true);
            }

            var clientModule = serverOnly ? null : ReadModule(TerrariaPath, clientVersion);
            var serverModule = ReadModule(TerrariaServerPath, serverVersion);
            var mainModule   = serverOnly ? serverModule : clientModule;

            projectDecompiler = new ExtendedProjectDecompiler {
                Settings         = decompilerSettings,
                AssemblyResolver = new EmbeddedAssemblyResolver(mainModule, mainModule.Reader.DetectTargetFrameworkId())
            };


            var items     = new List <WorkItem>();
            var files     = new HashSet <string>();
            var resources = new HashSet <string>();
            var exclude   = new List <string>();

            // Decompile embedded library sources directly into Terraria project. Treated the same as Terraria source
            var decompiledLibraries = new [] { "ReLogic" };

            foreach (var lib in decompiledLibraries)
            {
                var libRes = mainModule.Resources.Single(r => r.Name.EndsWith(lib + ".dll"));
                AddEmbeddedLibrary(libRes, projectDecompiler.AssemblyResolver, items);
                exclude.Add(GetOutputPath(libRes.Name, mainModule));
            }

            if (!serverOnly)
            {
                AddModule(clientModule, projectDecompiler.AssemblyResolver, items, files, resources, exclude);
            }

            AddModule(serverModule, projectDecompiler.AssemblyResolver, items, files, resources, exclude, serverOnly ? null : "SERVER");

            items.Add(WriteTerrariaProjectFile(mainModule, files, resources, decompiledLibraries));
            items.Add(WriteCommonConfigurationFile());

#if AUTO
            ExecuteParallel(items, true, 1);
            return;
#endif
            ExecuteParallel(items);
        }