public ThnScript(string scriptfile) { var runner = new LuaRunner(ThnEnv); var output = runner.DoFile(scriptfile); Duration = (float)output["duration"]; var entities = (LuaTable)output["entities"]; for (int i = 0; i < entities.Capacity; i++) { var ent = (LuaTable)entities[i]; var e = GetEntity(ent); if (Entities.ContainsKey(e.Name)) { FLLog.Error("Thn", "Overwriting entity: \"" + e.Name + '"'); Entities[e.Name] = e; } else { Entities.Add(e.Name, e); } } var events = (LuaTable)output["events"]; for (int i = 0; i < events.Capacity; i++) { var ev = (LuaTable)events[i]; var e = GetEvent(ev); Events.Add(e); } Events.Sort((x, y) => x.Time.CompareTo(y.Time)); }
static string Decompile(string file) { var builder = new StringBuilder(); var runner = new LuaRunner(ThnEnv); var output = runner.DoFile(file); foreach (var kv in output) { switch (kv.Key.ToLowerInvariant()) { case "events": ProcessEvents((LuaTable)kv.Value); break; case "entities": ProcessEntities((LuaTable)kv.Value); break; } builder.AppendLine(string.Format("{0} = {1}", kv.Key, kv.Value)); } return(builder.ToString()); }