Exemplo n.º 1
0
        private static void DumpPackage(string packageName, string gameDir, string outDir, bool scriptSource)
        {
            using (Stream s = new FileStream(packageName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var package = UE3PackageReader.ReadPackage(new BinaryReader(s, Encoding.ASCII), gameDir);
                foreach (var export in package.TopLevelExports)
                {
                    if (export.ClassName == "Class")
                    {
                        Directory.CreateDirectory(outDir);
                        if (scriptSource)
                        {
                            var scriptText = export.Children.SingleOrDefault(e => e.ObjectName == "ScriptText");
                            if (scriptText != null)
                            {
                                var text = (string) scriptText.ReadInstance();
                                DumpOutput(export, outDir, text);
                                continue;
                            }
                        }
                        var instance = (UnClass)export.ReadInstance();
                        var builder = new TextBuilder();
                        instance.Decompile(builder);
                        DumpOutput(export, outDir, builder.ToString());
                    }
                }

                ProblemRegistry.LogProblems(Path.Combine(outDir, "unhood.log"));
            }
        }
Exemplo n.º 2
0
 private static string PrintText(StatementListBuilder builder)
 {
     builder.List.CreateControlStatements();
     builder.List.RemoveRedundantReturns();
     var result = new TextBuilder();
     builder.List.Print(result, null, false);
     return result.ToString();
 }