public virtual void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo) { if (mode.HasFlag(SerializationModeFlags.ConstantDataFromClient)) { LoginToken = reader.ReadString(); } }
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()); }
protected override void Deserialize(NetworkBinaryReader reader) { GameplayMode = reader.ReadCanonicalString(); ArenaID = reader.ReadByte(); ArenaToPlay = reader.ReadString(); ArenaTimeLeft = reader.ReadTimeSpan(); WallCount = reader.ReadInt32(); }
public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo) { base.Deserialize(reader, mode, framesAgo); if ((mode & SerializationModeFlags.ConstantDataFromServer) != 0) { actionGobName = reader.ReadString(); } }
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); }
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); }
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); }
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); }
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; } }
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); }
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); } }
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); } }
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); } }
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); }
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); }
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; } }
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); } }
protected override void Deserialize(NetworkBinaryReader reader) { FrameNumber = reader.ReadInt32(); }
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); }
protected override void Deserialize(NetworkBinaryReader reader) { SpectatorLocalID = reader.ReadByte(); SpectatorID = reader.ReadByte(); FailMessage = reader.ReadString(); }
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); }
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); } } }
protected override void Deserialize(NetworkBinaryReader reader) { Info = reader.ReadString(); }
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; } }
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); } }
/// <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(); }