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); }
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); }
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); }
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); }