Esempio n. 1
0
 public Decompiler(ScriptObjContainer soc)
 {
     scriptContainer = soc;
 }
 public void UpdateForMap(NoxShared.Map map)
 {
     scriptContainer = new ScriptObjContainer(map.Scripts);
     UpdateFunctionsList();
     richTextBoxCode.SetScriptContainer(scriptContainer);
 }
Esempio n. 3
0
        static void ExportMapScripts()
        {
            Directory.CreateDirectory("noxmaps");
            Directory.CreateDirectory("luamaps");

            DirectoryInfo di = new DirectoryInfo("noxmaps");
            foreach (var dir in di.GetDirectories())
            {
                foreach (var file in dir.GetFiles())
                {
                    if (file.Extension == ".map")
                    {
                        Console.WriteLine(file.Name);
                        string code = "";
                        Map map = new Map(file.FullName, thingdb);
                        var soc = new ScriptObjContainer(map.Scripts);

                        code = code + "_functions = {";

                        for(int i = 0; i < soc.Functions.Count;i++)
                        {
                            if (i + 1 == soc.Functions.Count)
                            {
                                code = code + "\t" + soc.Functions[i].Name + " = " + i.ToString() + "\r\n";
                            }
                            else
                            {
                                code = code + "\t" + soc.Functions[i].Name + " = " + i.ToString() + ",\r\n";
                            }

                        }
                        code = code + "}\r\n";

                        for(int i = 0; i < soc.Functions.Count;i++)
                        {

                            code = code + "\r\n";
                            code = code + "function " + soc.Functions[i].Name + "(";
                            for(int j = 0; j < soc.Functions[i].NumArgs;j++)
                            {
                                if(j > 0)
                                    code = code + ",";
                                code = code + "arg_" + j.ToString();
                            }

                            code = code + ")\r\n";
                            foreach (string line in new LineReader(() => new StringReader(soc.Decompile(i))))
                            {
                                code = code + "\t" + line + "\r\n";
                            }
                            code = code + "end";
                        }

                        System.IO.File.WriteAllText("luamaps/" + file.Name + ".lua", code);
                    }
                }
            }
        }
Esempio n. 4
0
 public void SetScriptContainer(ScriptObjContainer soc)
 {
     scripts = soc;
 }