protected override void Collect() { if (vmData != null) { IEnumerable <string> keys = vmData.GetKeys <string>(); foreach (string k in keys) { LuaTable data = vmData.Get <LuaTable>(k); this.AddData(k, XLuaData.GenerateDataWithLuaTable(data)); } } if (vmCommand != null) { IEnumerable <string> keys = vmCommand.GetKeys <string>(); foreach (string k in keys) { LuaTable command = vmCommand.Get <LuaTable>(k); this.AddCommand(k, XLuaCommand.GenerateCommandWithLuaTable(vmTable, command)); } } if (this.BindRoot == null) { this.BindRoot = this.gameObject; } this.BindRoot.GetComponentsInChildren <AbstractDataBinder>(true, allDataBinders); this.BindRoot.GetComponentsInChildren <AbstractCommandBinder>(true, allCommandBinders); }
public static StructData GenerateVMData(LuaTable luaData) { LuaTable strct = luaData.Get <LuaTable>("__vm_value"); StructData strctData = new StructData(); strct.ForEach <string, LuaTable>(delegate(string key, LuaTable el) { strctData.AddField(key, XLuaData.GenerateDataWithLuaTable(el)); }); return(strctData); }
public static IListData GenerateVMData(LuaTable luaData) { LuaTable listLua = luaData.Get <LuaTable>("__vm_value"); LuaTable first = listLua.Get <int, LuaTable>(1); IListData listData = CreateListDataInstanceWithItemLuaTable(first); listData.DisableValueChangeHandler = true; listLua.ForEach <int, LuaTable>(delegate(int index, LuaTable item) { listData.Add(XLuaData.GenerateDataWithLuaTable(item)); }); listData.DisableValueChangeHandler = false; listData.InvokeValueChanged(); luaData.Set <string, Action <LuaTable> >("__vm_list_add", delegate(LuaTable item) { listData.AddItem(XLuaData.GenerateDataWithLuaTable(item)); }); luaData.Set <string, Action <int, LuaTable> >("__vm_list_insert", delegate(int index, LuaTable item) { listData.InsertItem(index - 1, XLuaData.GenerateDataWithLuaTable(item)); }); luaData.Set <string, Action>("__vm_list_pop", delegate() { listData.RemoveAt(listData.Count - 1); }); luaData.Set <string, Action <int> >("__vm_list_remove", delegate(int index) { listData.RemoveAt(index - 1); }); luaData.Set <string, Action>("__vm_list_reorder", delegate() { listData.DisableValueChangeHandler = true; LuaTable newListLua = luaData.Get <LuaTable>("__vm_value"); listData.Clear(); newListLua.ForEach <int, LuaTable>(delegate(int index, LuaTable item) { listData.Add(XLuaData.GenerateDataWithLuaTable(item)); }); listData.DisableValueChangeHandler = false; listData.InvokeValueChanged(); }); return(listData); }