Пример #1
0
    static int encodeWithRef(Stream stream, ReferenceLog refLog, object value)
    {
        AMF_TYPE amfType = Utils.utils.GetObjectType(value);

        switch (amfType)
        {
        case AMF_TYPE.Invalid:
            return(encodeNull(stream));

        case AMF_TYPE.Bool:
            return(encodeBool(stream, Convert.ToBoolean(value)));

        case AMF_TYPE.Int:
            return(encodeInt(stream, Convert.ToInt64(value)));

        case AMF_TYPE.Uint:
            return(encodeUint(stream, Convert.ToUInt64(value)));

        case AMF_TYPE.Float64:
            return(encodeFloat(stream, Convert.ToDouble(value)));

        case AMF_TYPE.Array:
            object[] obs = null;
            if (value is ArrayList)
            {
                obs = ((ArrayList)value).ToArray();
                throw new Exception("ArrayList Is Not Convert, Recommended byte[]");
            }
            else
            {
                List <object> list = new List <object>()
                {
                };

                Array array = (Array)(value);
                for (int i = 0; i < array.Length; i++)
                {
                    list.Add(array.GetValue(i));
                }
                obs = list.ToArray();
            }
            return(encodeArray(stream, obs, refLog));

        case AMF_TYPE.Struct:
            return(encodeArrayWithStruct(stream, value, refLog));

        case AMF_TYPE.String:
            return(encodeString(stream, Convert.ToString(value), refLog));

        case AMF_TYPE.Default:
            return(0);
        }


        return(0);
    }
Пример #2
0
        public static LuaTable ConvertLuaTable(object body, LuaTable luaTable = null)
        {
            AMF_TYPE tp = utils.GetObjectType(body);

            switch (tp)
            {
            case AMF_TYPE.Bool:
            case AMF_TYPE.Int:
            case AMF_TYPE.Float64:
            case AMF_TYPE.Uint:
            case AMF_TYPE.String:
                if (luaTable == null)
                {
                    luaTable = SGK.LuaController.GetLuaState()?.NewTable();
                }

                luaTable.Set <int, object>(luaTable.Length + 1, body);
                break;

            case AMF_TYPE.Array:
            case AMF_TYPE.Struct:
                object[] obs;
                if (tp == AMF_TYPE.Array)
                {
                    obs = Unpack((Array)body);
                }
                else
                {
                    obs = utils.ConvertStruct(body);
                }


                LuaTable tb = SGK.LuaController.GetLuaState()?.NewTable();
                for (int i = 0; i < obs.Length; i++)
                {
                    ConvertLuaTable(obs[i], tb);
                }

                if (luaTable == null)
                {
                    return(tb);
                }
                luaTable.Set <int, LuaTable>(luaTable.Length + 1, tb);
                break;
            }

            return(luaTable);
        }
Пример #3
0
    int encodeWithRef(Stream stream, ReferenceLog refLog, object value)
    {
        AMF_TYPE amfType = GetObjectType(value);

        Console.WriteLine(amfType);
        switch (amfType)
        {
        case AMF_TYPE.Invalid:
            return(encodeNull(stream));

        case AMF_TYPE.Bool:
            return(encodeBool(stream, Convert.ToBoolean(value)));

        case AMF_TYPE.Int:
            return(encodeInt(stream, Convert.ToInt64(value)));

        case AMF_TYPE.Uint:
            return(encodeUint(stream, Convert.ToUInt64(value)));

        case AMF_TYPE.Float64:
            return(encodeFloat(stream, Convert.ToDouble(value)));

        case AMF_TYPE.Array:
            return(encodeArray(stream, (Array)value, refLog));

        case AMF_TYPE.Struct:
            break;

        case AMF_TYPE.String:
            break;

        case AMF_TYPE.Default:
            break;
        }


        return(0);
    }
Пример #4
0
        public static string LogObject(object value, string filter)
        {
            string   msg  = filter;
            AMF_TYPE tYPE = GetObjectType(value);

            switch (tYPE)
            {
            case AMF_TYPE.Invalid:
                break;

            case AMF_TYPE.Bool:
            case AMF_TYPE.Int:
            case AMF_TYPE.Uint:
            case AMF_TYPE.Float64:
                msg += value;
                break;

            case AMF_TYPE.Array:
                msg += LogArray((Array)value, filter);
                break;

            case AMF_TYPE.Struct:
                return(LogArray(ConvertStruct(value), filter));

            case AMF_TYPE.String:
                msg += value;
                break;

            case AMF_TYPE.Default:
                msg += value;
                break;

            default:
                break;
            }
            return(msg);
        }