void LoadScene(string id) { if (lua != null) { lua.Dispose(); } Elements = new List <XmlUIElement>(); lua = new Lua(); env = lua.CreateEnvironment(); env.DoChunk("events = {}", "$internal"); env.Add(apiname, api); env.Add("dom", new LuaDom(this)); env.Add("sound", new LuaSound(this)); LuaStyleEnvironment.RegisterFuncs(env); _g = (dynamic)env; var scn = xml.Scenes.Where((x) => x.ID == id).First(); if (scn.Scripts != null) { foreach (var script in scn.Scripts) { env.DoChunk(script, "$xml"); } } foreach (var item in scn.Items) { if (item is XInt.Button) { var btn = (XInt.Button)item; Elements.Add(new XmlUIButton(this, btn, styles.Where((x) => x.ID == btn.Style).First())); } else if (item is XInt.Image) { Elements.Add(new XmlUIImage((XInt.Image)item, this)); } else if (item is XInt.ServerList) { var sl = (XInt.ServerList)item; Elements.Add(new XmlUIServerList(sl, styles.Where((x) => x.ID == sl.Style).First(), this)); } else if (item is XInt.Panel) { var pnl = (XInt.Panel)item; Elements.Add(new XmlUIPanel(pnl, styles.Where((x) => x.ID == pnl.Style).First(), this)); } else if (item is XInt.ChatBox) { var cb = (XInt.ChatBox)item; Elements.Add(new XmlChatBox(cb, styles.Where((x) => x.ID == cb.Style).First(), this)); } } }
public static void RegisterFuncs(LuaGlobalPortable gp) { gp.Add("mixcolor", (Func <float, string, string, Color4>)MixColor); gp.Add("color", (Func <string, Color4>)Color); }