static public object Load(string pFile, object pValue) { LitEngine.IO.AESReader tloader = null; object ret = pValue; try { string tfullname = GameCore.AppPersistentAssetsPath + pFile; if (!File.Exists(tfullname)) { return(ret); } tloader = new LitEngine.IO.AESReader(tfullname); ret = ReadField(tloader, pValue, null); tloader.Close(); tloader = null; } catch (System.Exception pErro) { DLog.LogError(pErro.ToString()); } if (tloader != null) { tloader.Close(); } return(ret); }
override public void Load(LitEngine.IO.AESReader _loader) { Key = _loader.ReadString(); Attribut.Load(_loader); ValueType = GetValueTypeByString(_loader.ReadString()); LoadByType(_loader); }
static private object ReadList(LitEngine.IO.AESReader pReader, object pTarget) { bool thave = pReader.ReadBoolean(); if (!thave) { return(null); } string tfullname = pReader.ReadString(); int tcount = pReader.ReadInt32(); System.Type tselftype = pTarget.GetType(); MethodInfo tclear = tselftype.GetMethod("Clear"); tclear.Invoke(pTarget, null); MethodInfo tmethod = tselftype.GetMethod("Add"); for (int i = 0; i < tcount; i++) { object titem = null; System.Type[] genericArgTypes = tselftype.GetGenericArguments(); if (genericArgTypes != null && genericArgTypes.Length > 0) { titem = GetObjectByType(genericArgTypes[0], true); } object tobj = ReadField(pReader, titem, null); tmethod.Invoke(pTarget, new object[] { tobj }); } return(pTarget); }
override public void Load(LitEngine.IO.AESReader _loader) { TableName = _loader.ReadString(); Attribut.Load(_loader); int trowCount = _loader.ReadInt32(); for (int i = 0; i < trowCount; i++) { DataRow trow = new DataRow(); trow.Load(_loader); AddFromRow(trow); } }
override public void Load(LitEngine.IO.AESReader _loader) { Key = _loader.ReadString(); Attribut.Load(_loader); int tfieldCount = _loader.ReadInt32(); for (int i = 0; i < tfieldCount; i++) { DataField tfield = new DataField(null, null); tfield.Load(_loader); AddFromField(tfield); } }
static private object ReadDataObject(LitEngine.IO.AESReader pReader, object pTarget) { bool thave = pReader.ReadBoolean(); if (!thave) { return(null); } string tfullname = pReader.ReadString(); int tFieldCount = pReader.ReadInt32(); for (int i = 0; i < tFieldCount; i++) { ReadField(pReader, null, pTarget); } return(pTarget); }
static private object ReadField(LitEngine.IO.AESReader pReader, object pValue, object pParent) { DataType ttype = (DataType)pReader.ReadInt32(); string tFieldName = pReader.ReadString(); FieldInfo tinfo = pParent == null ? null : pParent.GetType().GetField(tFieldName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); if (pValue == null && tinfo != null) { pValue = tinfo.GetValue(pParent); if (pValue == null) { pValue = GetObjectByType(tinfo.FieldType, true); } } object ret = pValue; switch (ttype) { case DataType.baseType: ret = ReadBaseType(pReader); break; case DataType.DataObject: ret = ReadDataObject(pReader, pValue); break; case DataType.List: ret = ReadList(pReader, pValue); break; case DataType.Dictionary: ret = ReadDictionary(pReader, pValue); break; } if (tinfo != null) { tinfo.SetValue(pParent, ret); } return(ret); }
public void Load() { LitEngine.IO.AESReader tloader = null; try { string tfullname = GameCore.AppPersistentAssetsPath + cDatafile; if (!File.Exists(tfullname)) { return; } Clear(); tloader = new LitEngine.IO.AESReader(tfullname); int ttableCount = tloader.ReadInt32(); for (int i = 0; i < ttableCount; i++) { DataTable ttable = new DataTable(); ttable.Load(tloader); AddFromTable(ttable); } tloader.Close(); tloader = null; Error = null; } catch (System.Exception _e) { Error = _e.ToString(); Clear(); DLog.LogError(_e.ToString()); } if (tloader != null) { tloader.Close(); } }
private void LoadByType(LitEngine.IO.AESReader _loader) { switch (ValueType) { case FieldType.Boolean: dvalue = _loader.ReadBoolean(); break; case FieldType.Byte: dvalue = _loader.ReadByte(); break; case FieldType.SByte: dvalue = _loader.ReadSByte(); break; case FieldType.Int16: dvalue = _loader.ReadInt16(); break; case FieldType.UInt16: dvalue = _loader.ReadUInt16(); break; case FieldType.Int32: dvalue = _loader.ReadInt32(); break; case FieldType.UInt32: dvalue = _loader.ReadUInt32(); break; case FieldType.Int64: dvalue = _loader.ReadInt64(); break; case FieldType.UInt64: dvalue = _loader.ReadUInt64(); break; case FieldType.Single: dvalue = _loader.ReadSingle(); break; case FieldType.Double: dvalue = _loader.ReadDouble(); break; case FieldType.Decimal: dvalue = _loader.ReadDecimal(); break; case FieldType.String: dvalue = _loader.ReadString(); break; case FieldType.Char: dvalue = _loader.ReadChar(); break; case FieldType.BigInteger: { int tlen = _loader.ReadInt32(); byte[] tbytes = _loader.ReadBytes(tlen); dvalue = new System.Numerics.BigInteger(tbytes); } break; case FieldType.Bytes: { int tlen = _loader.ReadInt32(); dvalue = _loader.ReadBytes(tlen); } break; default: break; } }
public abstract void Load(LitEngine.IO.AESReader _loader);
static public object LoadByType(LitEngine.IO.AESReader pLoader) { FieldType ttype = GetValueTypeByString(pLoader.ReadString()); object ret = null; switch (ttype) { case FieldType.Boolean: ret = pLoader.ReadBoolean(); break; case FieldType.Byte: ret = pLoader.ReadByte(); break; case FieldType.SByte: ret = pLoader.ReadSByte(); break; case FieldType.Int16: ret = pLoader.ReadInt16(); break; case FieldType.UInt16: ret = pLoader.ReadUInt16(); break; case FieldType.Int32: ret = pLoader.ReadInt32(); break; case FieldType.UInt32: ret = pLoader.ReadUInt32(); break; case FieldType.Int64: ret = pLoader.ReadInt64(); break; case FieldType.UInt64: ret = pLoader.ReadUInt64(); break; case FieldType.Single: ret = pLoader.ReadSingle(); break; case FieldType.Double: ret = pLoader.ReadDouble(); break; case FieldType.Decimal: ret = pLoader.ReadDecimal(); break; case FieldType.String: ret = pLoader.ReadString(); break; case FieldType.Char: ret = pLoader.ReadChar(); break; case FieldType.BigInteger: { int tlen = pLoader.ReadInt32(); byte[] tbytes = pLoader.ReadBytes(tlen); ret = new System.Numerics.BigInteger(tbytes); } break; case FieldType.Bytes: { int tlen = pLoader.ReadInt32(); ret = pLoader.ReadBytes(tlen); } break; default: break; } return(ret); }
static private object ReadBaseType(LitEngine.IO.AESReader pReader) { return(LoadByType(pReader)); }