public static bool ReadTransform_Tbl(LuaTable tbl, string fieldName, out UnityEngine.Vector3 pos, out UnityEngine.Vector3 euler, out UnityEngine.Vector3 scale) { pos = euler = UnityEngine.Vector3.zero; scale = UnityEngine.Vector3.one; LuaTable val; if (!LuaReadHelper.GetTValue2Table(tbl, fieldName, out val)) { return(false); } if (val.ArrayPart.Length != 9) { return(false); } pos.x = (float)val.ArrayPart[0].V.NValue; pos.y = (float)val.ArrayPart[1].V.NValue; pos.z = (float)val.ArrayPart[2].V.NValue; euler.x = (float)val.ArrayPart[3].V.NValue; euler.y = (float)val.ArrayPart[4].V.NValue; euler.z = (float)val.ArrayPart[5].V.NValue; scale.x = (float)val.ArrayPart[6].V.NValue; scale.y = (float)val.ArrayPart[7].V.NValue; scale.z = (float)val.ArrayPart[8].V.NValue; return(true); }
public static bool ReadVector3_Tbl(LuaTable tbl, string fieldName, out UnityEngine.Vector3 value) { value = UnityEngine.Vector3.zero; LuaTable val; if (!LuaReadHelper.GetTValue2Table(tbl, fieldName, out val)) { return(false); } return(ReadVector3(val, out value)); }
protected override void OnEntryFileOvered(LuaTable entryTbl) { // load params LuaTable tbl = LuaReadHelper.GetSubTable(entryTbl, "__ClientParams"); if(null == tbl) { Debug.LogError("找不到参数表__ClientParams!!!"); return; } ServerHostCenterHost = LuaReadHelper.ReadUtf8String(tbl, "ServerHostCenterHost"); if (!LuaReadHelper.ReadNumber(tbl, "ServerHostCenterPort", out ServerHostCenterPort)) { Debug.LogError("读取参数 ServerHostCenterPort 失败!!!"); return; } ServerHostLoginAccount = LuaReadHelper.ReadUtf8String(tbl, "ServerHostLoginAccount"); ServerHostLoginPassword = LuaReadHelper.ReadUtf8String(tbl, "ServerHostLoginPassword"); }
public static bool ReadNumberArray_Tbl <T>(LuaTable tbl, string fieldName, out T[] value) { value = null; LuaTable val; if (!LuaReadHelper.GetTValue2Table(tbl, fieldName, out val)) { return(false); } if (val.ArrayPart.Length <= 0) { value = new T[0]; return(true); } value = new T[val.ArrayPart.Length]; for (int i = 0; i < val.ArrayPart.Length; ++i) { value[i] = (T)Convert.ChangeType(val.ArrayPart[i].V.NValue, typeof(T)); } return(true); }
public bool ReadTable(LuaTable tbl) { // KEY Index Dictionary <string, int> headerKeyDict = LuaReadHelper.ReadHeaderKey(tbl, "HK"); Dictionary <string, int> headerDataDict = LuaReadHelper.ReadHeaderKey(tbl, "HD"); if (null == headerKeyDict || null == headerDataDict) { return(false); } TKey tKey = new TKey(); TVal tVal = new TVal(); if (headerKeyDict.Count != tKey.Count || headerDataDict.Count != tVal.Count) { return(false); } tKey = default(TKey); tVal = default(TVal); // DATA LuaTable hTbl = LuaReadHelper.GetSubTable(tbl, "DATA"); if (null == hTbl) { return(false); } for (int i = 0; i < hTbl.ArrayPart.Length; ++i) { StkId stkID = hTbl.ArrayPart[i]; if ((null == stkID) || (default(TValue) == stkID.V)) { continue; } if (!stkID.V.TtIsTable()) { continue; } if (!ReadTableData(stkID)) { return(false); } } for (int i = 0; i < hTbl.HashPart.Length; ++i) { StkId stkID = hTbl.HashPart[i].Val; if ((null == stkID) || (default(TValue) == stkID.V)) { continue; } if (!stkID.V.TtIsTable()) { continue; } if (!ReadTableData(stkID)) { return(false); } } OnTableReadOvered(); return(true); }
public bool ReadTableData(StkId stkID) { LuaTable subTbl = stkID.V.OValue as LuaTable; LuaTable subKeyTbl = LuaReadHelper.GetSubTable(subTbl, "K"); if (null == subKeyTbl) { return(false); } TKey tKey = new TKey(); TVal tVal = new TVal(); tKey.Holder = this; tVal.Holder = this; int keyCount = 0; for (int c = 0; c < subKeyTbl.ArrayPart.Length; ++c) { if ((null == subKeyTbl.ArrayPart[c]) || (default(TValue) == subKeyTbl.ArrayPart[c].V)) { continue; } keyCount++; } if (keyCount != tKey.Count) { return(false); } tKey.Init(subKeyTbl.ArrayPart); OnKeyLoaded(tKey); LuaTable subDataTbl = LuaReadHelper.GetSubTable(subTbl, "D"); if (null == subDataTbl) { return(false); } int valCount = 0; for (int c = 0; c < subDataTbl.ArrayPart.Length; ++c) { if ((null == subDataTbl.ArrayPart[c]) || (default(TValue) == subDataTbl.ArrayPart[c].V)) { continue; } valCount++; } if (valCount != tVal.Count) { return(false); } if (tVal is ConstLuaTable.ValDesc) { tVal.Init(subDataTbl.ArrayPart, tKey); } else { tVal.Init(subDataTbl.ArrayPart); } OnDataLoaded(tKey, tVal); if (mTableDatas.ContainsKey(tKey)) { Debug.LogError(string.Format("读取数据表时出现相同的索引[{0}]", tKey.ToString())); return(false); } mTableDatas.Add(tKey, tVal); return(true); }