Deserialize() public method

public Deserialize ( Stream input ) : void
input Stream
return void
Example #1
0
        public static void Main(string[] args)
        {
            using (var input = File.OpenRead(@"C:\src\w2\compiledscripts.w2scripts"))
            {
                var test = new CompiledScriptsFile();
                test.Deserialize(input);

                for (int i = 0; i < test.TypeDefs.Length; i++)
                {
                    Console.WriteLine(i + ". " + test.TypeDefs[i]);
                    if (test.TypeDefs[i] is FileFormats.Script.ClassDefinition)
                    {
                        var classDef = test.TypeDefs[i] as FileFormats.Script.ClassDefinition;
                        foreach (var propDef in classDef.Properties)
                        {
                            Console.WriteLine("    " + propDef.Value);
                        }
                        Console.WriteLine();
                        foreach (var funcDef in classDef.Functions)
                        {
                            Console.WriteLine("    " + funcDef.Value);
                        }
                    }
                }

                Console.WriteLine("\n\nFUNCTIONS:");
                for (int index = 0; index < test.FuncDefs.Length; index++)
                {
                    var funcDef = test.FuncDefs[index];
                    Console.WriteLine(index + ". " + funcDef);
                    funcDef.DisassembleToConsole();
                }
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: Gibbed.RED.ScriptDecompiler <path to compiledscripts.w2scripts>");
                return;
            }
            var input = File.OpenRead(args[0]);
            var scriptFile = new CompiledScriptsFile();
            scriptFile.Deserialize(input);
            input.Close();

            foreach(var typedef in scriptFile.TypeDefs)
            {
                if (typedef is ClassDefinition)
                {
                    DecompileClass((ClassDefinition) typedef, Console.Out);
                }
                else if (typedef is EnumDefinition)
                {
                    DecompileEnum((EnumDefinition) typedef, Console.Out);
                }
            }

            foreach (var func in scriptFile.FuncDefs)
            {
                if (func.ContainingClass == null)
                {
                    DecompileFunction(func, Console.Out, "");
                }
            }
        }
Example #3
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: Gibbed.RED.Diff <old.w2scripts> <new.w2scripts>");
                return;
            }
            var oldScripts = new CompiledScriptsFile();
            var newScripts = new CompiledScriptsFile();
            using(var oldInput = File.OpenRead(args[0]))
            {
                oldScripts.Deserialize(oldInput);
            }
            using(var newInput = File.OpenRead(args[1]))
            {
                newScripts.Deserialize(newInput);
            }

            var oldFunctions = new Dictionary<string, FunctionDefinition>();
            foreach(var def in oldScripts.FuncDefs)
            {
                oldFunctions[def.ToString()] = def;
            }

            foreach (var def in newScripts.FuncDefs)
            {
                if (!oldFunctions.ContainsKey(def.ToString()))
                {
                    Console.WriteLine("\n\n\nNew function: " + def);
                    def.DisassembleToConsole();
                }
                else
                {
                    var oldDef = oldFunctions[def.ToString()];
                    if (!oldDef.Equals(def))
                    {
                        Console.WriteLine("\n\n\nChanged function: " + def);
                        Console.WriteLine("Old bytecode: ");
                        oldDef.DisassembleToConsole();
                        Console.WriteLine("New bytecode: ");
                        def.DisassembleToConsole();
                    }
                }
            }
        }