Beispiel #1
0
 public void RequestSyncData(ServiceType type, ulong characterId, uint id, Action <float> setter)
 {
     RequestSyncDataImpl(type, characterId, id, ms =>
     {
         ms.Read(mBuffer, 0, 4);
         setter(SerializerUtility.ReadInt(this.mBuffer) / 10000.0f);
     });
 }
Beispiel #2
0
        public static ServiceDesc Deserialize(Stream s)
        {
            ServiceDesc desc = new ServiceDesc();

            byte[] buffer = new byte[9];
            s.Read(buffer, 0, 1);
            byte mask = buffer[0];

            s.Read(buffer, 0, 1);
            desc._Type = buffer[0];
            if ((mask & 1) != 0)
            {
                s.Read(buffer, 0, 1);
                desc._ServiceType = buffer[0];
            }
            if ((mask & 2) != 0)
            {
                s.Read(buffer, 0, 4);
                desc._FuncId = (uint)SerializerUtility.ReadInt(buffer);
            }
            if ((mask & 4) != 0)
            {
                s.Read(buffer, 0, 4);
                desc._PacketId = (uint)SerializerUtility.ReadInt(buffer);
            }
            if ((mask & 8) != 0)
            {
                s.Read(buffer, 0, 2);
                desc._Error = (uint)SerializerUtility.ReadShort(buffer);
            }
            if ((mask & 16) != 0)
            {
                desc._ClientId = (ulong)SerializerUtility.ReadLongOpt(s, buffer);
            }
            if ((mask & 32) != 0)
            {
                desc._CharacterId = (ulong)SerializerUtility.ReadLongOpt(s, buffer);
            }
            if ((mask & 64) != 0)
            {
                s.Read(buffer, 0, 2);
                var   length = SerializerUtility.ReadShort(buffer);
                ulong l;
                if (desc._Routing == null)
                {
                    desc._Routing = new List <ulong>();
                }
                for (int i = 0; i < length; i++)
                {
                    l = (ulong)SerializerUtility.ReadLongOpt(s, buffer);
                    desc._Routing.Add(l);
                }
            }
            if ((mask & 128) != 0)
            {
                s.Read(buffer, 0, 4);
                var length = SerializerUtility.ReadInt(buffer);
                desc.Data = new byte[length];
                s.Read(desc.Data, 0, length);
            }
            else
            {
                desc._Data = sEmptyByteArray;
            }

            return(desc);
        }