示例#1
0
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += sizeof(byte) + this.data.Count * marshal.size <EntityUpdate>();
            return(size);
        }
示例#2
0
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += marshal.size <byte>() + this.name.Length;
            return(size);
        }
示例#3
0
文件: LoginData.cs 项目: AErbis/Kumo
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + marshal.size <byte>() > packet.bufferSize())
     {
         return(false);
     }
     if (packet.bytesRead() + marshal.size <byte>() + packet.getData().peekByte() > packet.bufferSize())
     {
         return(false);
     }
     this.username = packet.getData().readString();
     if (packet.bytesRead() + marshal.size <ulong>() > packet.bufferSize())
     {
         return(false);
     }
     this.password0 = packet.getData().readUlong();
     if (packet.bytesRead() + marshal.size <ulong>() > packet.bufferSize())
     {
         return(false);
     }
     this.password1 = packet.getData().readUlong();
     if (packet.bytesRead() + marshal.size <ulong>() > packet.bufferSize())
     {
         return(false);
     }
     this.password2 = packet.getData().readUlong();
     if (packet.bytesRead() + marshal.size <ulong>() > packet.bufferSize())
     {
         return(false);
     }
     this.password3 = packet.getData().readUlong();
     return(true);
 }
示例#4
0
文件: Status.cs 项目: AErbis/Kumo
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += marshal.size <bool>();
            return(size);
        }
示例#5
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((ulong)this.id);
     packet.getData().write((ushort)this.type);
     packet.getData().write((float)this.x);
     packet.getData().write((float)this.z);
 }
示例#6
0
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + this.size(marshal) > packet.bufferSize())
     {
         return(false);
     }
     return(true);
 }
示例#7
0
文件: LoginData.cs 项目: AErbis/Kumo
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((string)this.username);
     packet.getData().write((ulong)this.password0);
     packet.getData().write((ulong)this.password1);
     packet.getData().write((ulong)this.password2);
     packet.getData().write((ulong)this.password3);
 }
示例#8
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((byte)this.data.Count);
     foreach (EntityUpdate val in this.data)
     {
         val.pack(marshal, packet);
     }
 }
示例#9
0
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += marshal.size <char>();
            size += marshal.size <char>();
            size += marshal.size <byte>();
            return(size);
        }
示例#10
0
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += marshal.size <ulong>();
            size += marshal.size <float>();
            size += marshal.size <float>();
            return(size);
        }
示例#11
0
文件: Status.cs 项目: AErbis/Kumo
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + this.size(marshal) > packet.bufferSize())
     {
         return(false);
     }
     this.success = packet.getData().readBool();
     return(true);
 }
示例#12
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((float)this.x);
     packet.getData().write((float)this.z);
     packet.getData().write((float)this.speed);
     packet.getData().write((float)this.vx);
     packet.getData().write((float)this.vz);
     packet.getData().write((byte)this.seq);
     packet.getData().write((ushort)this.frame);
 }
示例#13
0
文件: Complex.cs 项目: AErbis/Kumo
        public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
        {
            if (packet.bytesRead() + sizeof(byte) > packet.bufferSize())
            {
                return(false);
            }
            this.x = new Kaminari.Optional <uint>();
            if (packet.getData().readByte() == 1)
            {
                if (packet.bytesRead() + marshal.size <uint>() > packet.bufferSize())
                {
                    return(false);
                }
                this.x.setValue(packet.getData().readUint());
            }
            int size_y = packet.getData().readByte();

            this.y = new List <SpawnData>();
            for (int i = 0; i < size_y; ++i)
            {
                SpawnData data = new SpawnData();
                if (data.unpack(marshal, packet))
                {
                    this.y.Add(data);
                }
                else
                {
                    return(false);
                }
            }
            if (packet.bytesRead() + marshal.size <int>() > packet.bufferSize())
            {
                return(false);
            }
            this.z = packet.getData().readInt();
            if (packet.bytesRead() + sizeof(byte) > packet.bufferSize())
            {
                return(false);
            }
            this.w = new Kaminari.Optional <List <bool> >();
            if (packet.getData().readByte() == 1)
            {
                int size_w = packet.getData().readByte();
                if (packet.bytesRead() + size_w * marshal.size <bool>() > packet.bufferSize())
                {
                    return(false);
                }
                this.w.setValue(new List <bool>());
                for (int i = 0; i < size_w; ++i)
                {
                    this.w.getValue().Add(packet.getData().readBool());
                }
            }
            return(true);
        }
示例#14
0
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + this.size(marshal) > packet.bufferSize())
     {
         return(false);
     }
     this.id = packet.getData().readUlong();
     this.x  = packet.getData().readFloat();
     this.z  = packet.getData().readFloat();
     return(true);
 }
示例#15
0
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + this.size(marshal) > packet.bufferSize())
     {
         return(false);
     }
     this.x     = packet.getData().readFloat();
     this.z     = packet.getData().readFloat();
     this.speed = packet.getData().readFloat();
     this.vx    = packet.getData().readFloat();
     this.vz    = packet.getData().readFloat();
     this.seq   = packet.getData().readByte();
     this.frame = packet.getData().readUshort();
     return(true);
 }
示例#16
0
        private bool handleClientUpdate(Kaminari.IMarshal marshal, Kaminari.PacketReader packet, IClient client, ushort blockId)
        {
            if (Overflow.leq(blockId, clientUpdateLastCalled))
            {
                // TODO: Returning true here means the packet is understood as correctly parsed, while we are ignoring it
                return(true);
            }
            var data = emplaceData(clientUpdate, blockId, packet.timestamp());

            if (!data.unpack(marshal, packet))
            {
                return(false);
            }
            // The user is assumed to provide all peek methods in C#
            // TODO: Test if the method exists in the class
            return(client.peekClientUpdate(data, packet.timestamp()));
        }
示例#17
0
文件: Complex.cs 项目: AErbis/Kumo
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            size += sizeof(byte);
            if (this.x.hasValue())
            {
                size += marshal.size <uint>();
            }
            size += sizeof(byte) + this.y.Count * marshal.size <SpawnData>();
            size += marshal.size <int>();
            size += sizeof(byte);
            if (this.w.hasValue())
            {
                size += sizeof(byte) + this.w.getValue().Count *marshal.size <bool>();
            }
            return(size);
        }
示例#18
0
文件: Character.cs 项目: AErbis/Kumo
 public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
 {
     if (packet.bytesRead() + marshal.size <byte>() > packet.bufferSize())
     {
         return(false);
     }
     if (packet.bytesRead() + marshal.size <byte>() + packet.getData().peekByte() > packet.bufferSize())
     {
         return(false);
     }
     this.name = packet.getData().readString();
     if (packet.bytesRead() + marshal.size <ushort>() > packet.bufferSize())
     {
         return(false);
     }
     this.level = packet.getData().readUshort();
     return(true);
 }
示例#19
0
        public bool unpack(Kaminari.IMarshal marshal, Kaminari.PacketReader packet)
        {
            int size_data = packet.getData().readByte();

            this.data = new List <EntityUpdate>();
            for (int i = 0; i < size_data; ++i)
            {
                EntityUpdate data = new EntityUpdate();
                if (data.unpack(marshal, packet))
                {
                    this.data.Add(data);
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }
示例#20
0
        private bool handleLoginCharacter(Kaminari.IMarshal marshal, Kaminari.PacketReader packet, IClient client, ushort blockId)
        {
            if (!client.check(client, "status", ingame_status::login_done))
            {
                return(client.handleClientError(client, packet.getOpcode()));
            }
            if (Overflow.leq(blockId, loginCharacterLastCalled))
            {
                // TODO: Returning true here means the packet is understood as correctly parsed, while we are ignoring it
                return(true);
            }
            var data = emplaceData(loginCharacter, blockId, packet.timestamp());

            if (!data.unpack(marshal, packet))
            {
                return(false);
            }
            // The user is assumed to provide all peek methods in C#
            // TODO: Test if the method exists in the class
            return(client.peekLoginCharacter(data, packet.timestamp()));
        }
示例#21
0
文件: Complex.cs 项目: AErbis/Kumo
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write(this.x.hasValue());
     if (this.x.hasValue())
     {
         packet.getData().write((uint)this.x.getValue());
     }
     packet.getData().write((byte)this.y.Count);
     foreach (SpawnData val in this.y)
     {
         val.pack(marshal, packet);
     }
     packet.getData().write((int)this.z);
     packet.getData().write(this.w.hasValue());
     if (this.w.hasValue())
     {
         packet.getData().write((byte)this.w.getValue().Count);
         foreach (bool val in this.w.getValue())
         {
             packet.getData().write((bool)val);
         }
     }
 }
示例#22
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((string)this.name);
 }
示例#23
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((ulong)this.id);
 }
示例#24
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((byte)this.index);
 }
示例#25
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
 }
示例#26
0
        public int size(Kaminari.IMarshal marshal)
        {
            int size = 0;

            return(size);
        }
示例#27
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((byte)this.num_characters);
 }
示例#28
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((char)this.x);
     packet.getData().write((char)this.y);
     packet.getData().write((byte)this.seq);
 }
示例#29
0
文件: Status.cs 项目: AErbis/Kumo
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((bool)this.success);
 }
示例#30
0
 public void pack(Kaminari.IMarshal marshal, Kaminari.Packet packet)
 {
     packet.getData().write((uint)this.version);
 }