Exemplo n.º 1
0
        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));
            }
        }