Ejemplo n.º 1
0
 public virtual void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromClient))
     {
         LoginToken = reader.ReadString();
     }
 }
Ejemplo n.º 2
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     base.Deserialize(reader);
     var idCount = reader.ReadByte();
     GobIDs.Clear();
     GobIDs.Capacity = idCount;
     for (int i = 0; i < idCount; i++) GobIDs.Add(reader.ReadInt16());
 }
Ejemplo n.º 3
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     GameplayMode = reader.ReadCanonicalString();
     ArenaID = reader.ReadByte();
     ArenaToPlay = reader.ReadString();
     ArenaTimeLeft = reader.ReadTimeSpan();
     WallCount = reader.ReadInt32();
 }
Ejemplo n.º 4
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0)
     {
         actionGobName = reader.ReadString();
     }
 }
Ejemplo n.º 5
0
 public void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0)
     {
         weight = reader.ReadSingle();
         spawnTypeName = reader.ReadCanonicalString();
     }
 }
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     int count = reader.ReadByte();
     int totalByteCount = reader.ReadUInt16();
     _ids.Clear();
     for (int i = 0; i < count; i++) _ids.Add(reader.ReadByte());
     StreamedData = reader.ReadBytes(totalByteCount);
 }
Ejemplo n.º 7
0
 public void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer))
     {
         Name = reader.ReadString();
         Color = reader.ReadColor();
     }
     ArenaStatistics.Deserialize(reader, mode, framesAgo);
 }
Ejemplo n.º 8
0
 public void TestByteOrderSingle()
 {
     byte[] data = { 1, 2, 3, 4 };
     NetworkBinaryReader reader = new NetworkBinaryReader(new MemoryStream(data));
     float value = reader.ReadSingle();
     if (BitConverter.IsLittleEndian)
         Array.Reverse(data);
     Assert.AreEqual(BitConverter.ToSingle(data, 0), value);
 }
Ejemplo n.º 9
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     base.Deserialize(reader);
     PlayerID = reader.ReadInt16();
     int byteCount = reader.ReadUInt16();
     StreamedData = reader.ReadBytes(byteCount);
     Message = new PlayerMessage();
     Read(Message, SerializationModeFlags.AllFromServer, 0);
 }
Ejemplo n.º 10
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer))
     {
         _propModelName = reader.ReadCanonicalString();
         ModelName = _propModelName;
     }
 }
Ejemplo n.º 11
0
 public void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     var packedValue = reader.ReadUInt16();
     Weapon1 = (ShipDevice.FiringResult)(packedValue & 0x07);
     if (!Enum.IsDefined(typeof(ShipDevice.FiringResult), Weapon1)) Weapon1 = ShipDevice.FiringResult.Void;
     Weapon2 = (ShipDevice.FiringResult)((packedValue >> 4) & 0x07);
     if (!Enum.IsDefined(typeof(ShipDevice.FiringResult), Weapon2)) Weapon2 = ShipDevice.FiringResult.Void;
     ExtraDevice = (ShipDevice.FiringResult)((packedValue >> 8) & 0x07);
     if (!Enum.IsDefined(typeof(ShipDevice.FiringResult), ExtraDevice)) ExtraDevice = ShipDevice.FiringResult.Void;
 }
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     int canonicalStringCount = reader.ReadInt32();
     CanonicalStrings = new List<string>(canonicalStringCount);
     CanonicalStrings.Add(null);
     for (int i = 1; i < canonicalStringCount; ++i)
         CanonicalStrings.Add(reader.ReadString());
     int keyLength = reader.ReadInt16();
     GameClientKey = reader.ReadBytes(keyLength);
 }
Ejemplo n.º 13
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0)
     {
         _wallModelName = reader.ReadCanonicalString();
         var model = Game.Content.Load<Model>(_wallModelName);
         Effect = GetEffect(model);
         Texture = GetTexture(model);
     }
 }
Ejemplo n.º 14
0
 public void TestByteOrderInt32()
 {
     byte[][] datas = { new byte[] { 1, 2, 3, 4 }, new byte[] { 255, 253, 251, 247 } };
     foreach (byte[] data in datas)
     {
         NetworkBinaryReader reader = new NetworkBinaryReader(new MemoryStream(data));
         int value = reader.ReadInt32();
         if (BitConverter.IsLittleEndian)
             Array.Reverse(data);
         Assert.AreEqual(BitConverter.ToInt32(data, 0), value);
     }
 }
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     base.Deserialize(reader);
     PlayerID = reader.ReadByte();
     for (int i = 0; i < PlayerControls.CONTROL_COUNT; ++i)
     {
         var value = reader.ReadByte();
         var force = (value & 0x7f) / 127f;
         var pulse = (value & 0x80) != 0;
         ControlStates[i] = new ControlState(force, pulse);
     }
 }
Ejemplo n.º 16
0
 public void TestByteOrderUint16()
 {
     byte[][] datas = { new byte[] { 1, 2 }, new byte[] { 253, 255 } };
     foreach (byte[] data in datas)
     {
         NetworkBinaryReader reader = new NetworkBinaryReader(new MemoryStream(data));
         ushort value = reader.ReadUInt16();
         if (BitConverter.IsLittleEndian)
             Array.Reverse(data);
         Assert.AreEqual(BitConverter.ToUInt16(data, 0), value);
     }
 }
Ejemplo n.º 17
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     base.Deserialize(reader);
     ArenaID = reader.ReadByte();
     int gobCount = reader.ReadInt16();
     _layerIndices = new List<int>(gobCount);
     _gobTypeNames = new List<CanonicalString>(gobCount);
     for (int i = 0; i < gobCount; ++i) _layerIndices.Add(reader.ReadByte());
     for (int i = 0; i < gobCount; ++i) _gobTypeNames.Add(reader.ReadCanonicalString());
     int byteCount = reader.ReadUInt16();
     StreamedData = reader.ReadBytes(byteCount);
 }
Ejemplo n.º 18
0
 public void TestHalf()
 {
     var data = new[]
     {
         0f, -0f, 1f, -1f, 65504f, -65504f, 0.000061035156f, -0.000061035156f, 12.3359375f, -12.3359375f,
         float.NaN, float.PositiveInfinity, float.NegativeInfinity,
     };
     var stream = new MemoryStream();
     var writer = NetworkBinaryWriter.Create(stream);
     foreach (float value in data)
         writer.Write((Half)value);
     writer.Flush();
     var bytes = stream.GetBuffer();
     Assert.That(bytes.Any(x => x != 0), "Something wrong with memory stream usage?");
     stream = new MemoryStream(bytes);
     var reader = new NetworkBinaryReader(stream);
     var result = new float[data.Length];
     for (int i = 0; i < data.Length; ++i)
         result[i] = reader.ReadHalf();
     Assert.AreEqual(data, result);
 }
Ejemplo n.º 19
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if ((mode & SerializationModeFlags.VaryingDataFromServer) != 0)
     {
         var maybeHoverAroundPos = reader.ReadHalfVector2();
         if (float.IsNaN(maybeHoverAroundPos.X))
             _hoverAroundPos = null;
         else
             _hoverAroundPos = maybeHoverAroundPos;
     }
 }
Ejemplo n.º 20
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0)
     {
         _spawnInterval = reader.ReadSingle();
         int spawnTypesCount = reader.ReadByte();
         _spawnTypes = new SpawnType[spawnTypesCount];
         for (int i = 0; i < spawnTypesCount; ++i)
             _spawnTypes[i].Deserialize(reader, SerializationModeFlags.ConstantDataFromServer, framesAgo);
     }
 }
Ejemplo n.º 21
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     FrameNumber = reader.ReadInt32();
 }
Ejemplo n.º 22
0
 public virtual void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer) ||
         mode.HasFlag(SerializationModeFlags.ConstantDataFromClient))
     {
         Name = reader.ReadString();
     }
     if (mode.HasFlag(SerializationModeFlags.VaryingDataFromServer))
     {
         var isDisconnected = reader.ReadBoolean();
         if (IsRemote && isDisconnected) ConnectionStatus = ConnectionStatusType.Disconnected;
         if (IsDisconnected && !isDisconnected) ConnectionStatus = ConnectionStatusType.Remote;
         var oldTeam = Team;
         TeamProxy = reader.ReadTeamID(FindTeam);
         if (oldTeam != Team)
         {
             // Resign from old team now while we still have a direct reference to it.
             // The new team may not exist yet, so assign to it later in Update().
             if (oldTeam != null) oldTeam.UpdateAssignment(this);
             _teamAssignmentDeserialized = true;
         }
     }
     StatsData.Deserialize(reader, mode, framesAgo);
     ArenaStatistics.Deserialize(reader, mode, framesAgo);
 }
Ejemplo n.º 23
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     SpectatorLocalID = reader.ReadByte();
     SpectatorID = reader.ReadByte();
     FailMessage = reader.ReadString();
 }
Ejemplo n.º 24
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     base.Deserialize(reader);
     var gobCount = reader.ReadByte();
     _collisionEventCount = reader.ReadByte();
     var totalByteCount = reader.ReadUInt16();
     _gobIds.Clear();
     for (int i = 0; i < gobCount; i++) _gobIds.Add(reader.ReadInt16());
     StreamedData = reader.ReadBytes(totalByteCount);
 }
Ejemplo n.º 25
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     var reducedMode = mode.HasFlag(SerializationModeFlags.ConstantDataFromServer)
         ? SerializationModeFlags.AllFromServer
         : SerializationModeFlags.None;
     base.Deserialize(reader, reducedMode, framesAgo);
     if (mode.HasFlag(SerializationModeFlags.VaryingDataFromServer))
     {
         var repairingCount = reader.ReadByte();
         _repairingGobsOnClient.Clear();
         for (int i = 0; i < repairingCount; i++)
         {
             var proxy = new LazyProxy<int, Gob>(FindGob);
             proxy.SetData(reader.ReadInt16());
             _repairingGobsOnClient.Add(proxy);
         }
     }
 }
Ejemplo n.º 26
0
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     Info = reader.ReadString();
 }
Ejemplo n.º 27
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer) ||
         mode.HasFlag(SerializationModeFlags.ConstantDataFromClient))
     {
         var newShipName = reader.ReadCanonicalString();
         var newWeapon2Name = reader.ReadCanonicalString();
         var newExtraDeviceName = reader.ReadCanonicalString();
         if (Game.DataEngine.GetTypeTemplate(newShipName) is Ship) ShipName = newShipName;
         if (Game.DataEngine.GetTypeTemplate(newWeapon2Name) is Weapon) Weapon2Name = newWeapon2Name;
         if (Game.DataEngine.GetTypeTemplate(newExtraDeviceName) is ShipDevice) ExtraDeviceName = newExtraDeviceName;
     }
 }
Ejemplo n.º 28
0
        public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
        {
            var oldRotation = Rotation;
            base.Deserialize(reader, mode, framesAgo);
            if (Owner != null) Owner.SeizeShip(this);

            // Client alone decides on the rotation of his own ship.
            if (LocationPredicter == null)
            {
                if (!float.IsNaN(oldRotation)) Rotation = oldRotation;
                DrawRotationOffset = 0;
            }

            // HACK to avoid null references:
            //   - ForwardShot using Ship.Model before LoadContent() is called
            //   - Thrust() using _thrusterSound before Activate() is called
            var shipMode = mode.HasFlag(SerializationModeFlags.ConstantDataFromServer)
                ? mode & ~SerializationModeFlags.VaryingDataFromServer
                : mode;

            if (shipMode.HasFlag(SerializationModeFlags.VaryingDataFromServer))
            {
                var visualThrustForceAndFlags = reader.ReadByte();
                _visualThrustForce = (visualThrustForceAndFlags & 0x7f) / 127f;
                var updateDeviceTypes = (visualThrustForceAndFlags & 0x80) != 0;
                Action<ShipDevice> deserializeDevice = device =>
                {
                    var data = reader.ReadByte();
                    if (device == null) return;
                    device.Charge = data * device.ChargeMax / byte.MaxValue;
                    if (!updateDeviceTypes) return;
                    var deviceTypeName = reader.ReadCanonicalString();
                    if (deviceTypeName != device.TypeName) SetDeviceType(device.OwnerHandle, deviceTypeName);
                };
                deserializeDevice(Weapon1);
                deserializeDevice(Weapon2);
                deserializeDevice(ExtraDevice);
                DeviceUsagesToClients.Deserialize(reader, mode, framesAgo);
                ApplyDeviceUsages(DeviceUsagesToClients);
                DeviceUsagesToClients.Clear();
            }
            if (shipMode.HasFlag(SerializationModeFlags.VaryingDataFromClient))
            {
                var rotationByte = reader.ReadByte();
                Rotation = rotationByte * MathHelper.TwoPi / (byte.MaxValue + 1);
            }
        }
Ejemplo n.º 29
0
 /// <summary>
 /// Reads the body of the message from serialised form.
 /// </summary>
 /// <param name="reader">Reader of serialised data.</param>
 protected abstract void Deserialize(NetworkBinaryReader reader);
 protected override void Deserialize(NetworkBinaryReader reader)
 {
     SpectatorOrTeamID = reader.ReadSByte();
 }