/// <summary> /// 读取一个字典 /// </summary> /// <returns>字典对象</returns> /// <param name="decoder">对象解码器</param> private Dictionary <string, LuaValue> readHashtable(LuaObjectDecoder decoder) { int size = decoder.readInt32(); if (size > 0) { Dictionary <string, LuaValue> table = new Dictionary <string, LuaValue> (); for (int i = 0; i < size; i++) { string key = decoder.readString(); LuaValue item = decoder.readObject() as LuaValue; if (key != null && item != null) { table.Add(key, item); } } return(table); } return(null); }
/// <summary> /// 初始化LuaValue对象 /// </summary> /// <param name="decoder">对象解码器</param> public LuaValue(LuaObjectDecoder decoder) { _type = (LuaValueType)decoder.readInt16(); _value = null; switch (_type) { case LuaValueType.Integer: _value = decoder.readInt32(); break; case LuaValueType.Boolean: _value = decoder.readByte(); break; case LuaValueType.Number: _value = decoder.readDouble(); break; case LuaValueType.Data: _value = decoder.readBytes(); break; case LuaValueType.String: _value = decoder.readString(); break; case LuaValueType.Array: _value = readArrayList(decoder); break; case LuaValueType.Map: _value = readHashtable(decoder); break; } }