Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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;
            }
        }