public void OnUdpReceived(BitBuffer buffer, ushort packetTimestamp) { if (!DoubleProtocol.IsPacketNewest(ref _newestPacketTimestamp, packetTimestamp)) { return; } foreach (Player player in _players.Values) { player.LoopOverCells((x, y) => _cellMap.Set(x, y, CellMap.DefaultBrush)); } for (ulong i = buffer.ReadBits(2); i > 0; i--) { if (_players.TryGetValue((byte)buffer.ReadBits(2), out Player player)) { player.X = (byte)buffer.ReadBits(4); player.Y = (byte)buffer.ReadBits(4); } else { buffer.AdvanceReader(8); } } foreach (Player player in _players.Values) { player.LoopOverCells((x, y) => _cellMap.Set(x, y, player.Brush)); } }