private static void TestSerializerPacketB() { Serializer sender = new WriterSerialize(); List <IActor> senderList = new List <IActor>(); Tank t = new Tank() { Name = "Toto", Life = 100, Position = new Vector2(150), ShouldBeSend = true }; t.Shoot(); senderList.Add(t); senderList.Add(new Loot() { NbOfAmmo = 1, AmmoType = eAmmoType.Grenada, Position = new Vector2(150), IsActive = true, ShouldBeSend = true }); senderList.Add(new Tank() { Name = "Tata", Life = 80, Position = new Vector2(100), ShouldBeSend = true }); senderList.Add(new Loot() { AmmoType = eAmmoType.Bullet, Position = new Vector2(360), IsActive = true, ShouldBeSend = true }); senderList.Add(new Tank() { Life = 50, Position = new Vector2(50), ShouldBeSend = true }); PacketB sendedPacket = new PacketB() { Actors = senderList }; bool sendingAuthorized = sendedPacket.Serialize(sender); sender.BitPacking.PushTempInBuffer(); byte[] dataSending = sender.BitPacking.GetByteBuffer(); if (sendingAuthorized) { Serializer receiver = new ReaderSerialize(); receiver.BitPacking = BitPacker.FromArray(dataSending); List <IActor> receiverList = new List <IActor>(); PacketB receivedPacket = new PacketB() { Actors = receiverList }; bool isValid = receivedPacket.Serialize(receiver); } }
public bool ProcessPacket(Packet pPacket) { pPacket.Header = PrepareFrame(_shouldClean); // CRC + Sequence Debug.Assert(!Program.StopOnSequence.HasValue || CurrentSequence != Program.StopOnSequence.Value); int bitCounter = FrameSerializer.BitPacking.BitLength; int id = dFactory.GetID(pPacket); #if TRACE_LOG Log("Packet ID : "); #endif FrameSerializer.Serialize(ref id, 0, dFactory.Count() - 1); // Packet ID #if TRACE_LOG Log("Packet Data : "); #endif if (!pPacket.Serialize(FrameSerializer)) // Data { #if DEBUG if (pPacket is PacketB) #endif { #if DEBUG PacketB p = (PacketB)pPacket; if (p.Actors.Count == 0) #endif { FrameSerializer.BitPacking.Clear(); FrameSerializer.Error = false; return(false); } } } if (FrameSerializer.BitPacking.ByteLength > MTU) { SplitPacketIntoFragments(); } else { AddCrcOnHeader(pPacket.Header); } CurrentSequence++; _shouldClean = true; return(!FrameSerializer.Error); }
private static Packet GetPacketB() { PacketB p = new PacketB(); p.Actors = new List <IActor>(); Tank t = new Tank() { Name = "Toto", Life = 100, Position = new Vector2(150), ShouldBeSend = true }; t.Shoot(); p.Actors.Add(t); for (int i = 0; i < 50; i++) { p.Actors.Add(new Loot() { NbOfAmmo = 0, AmmoType = eAmmoType.Grenada, Position = new Vector2(150), IsActive = true, ShouldBeSend = true }); } return(p); }