public BeerPongDiscoveredServer(BeerPongBroadcastData aData)
 {
     version        = aData.version;
     peerId         = aData.peerId;
     isOpen         = aData.isOpen;
     numPlayers     = aData.numPlayers;
     serverScore    = aData.serverScore;
     privateTeamKey = aData.privateTeamKey;
 }
    public void Setup(BP_NetworkManager aNetworkManager)
    {
        networkManager = aNetworkManager;
        broadcastKey   = Mathf.Abs(aNetworkManager.broadcastIdentifier.GetHashCode());//Make sure broadcastKey matches client
        isOpen         = false;
        numPlayers     = 0;

        broadcastDataObject        = new BeerPongBroadcastData();
        broadcastDataObject.peerId = networkManager.peerId;
        UpdateBroadcastData();
    }
    public override void OnReceivedBroadcast(string aFromAddress, string aRawData)
    {
        BeerPongBroadcastData data = new BeerPongBroadcastData();

        data.FromString(aRawData);

        //Debug log
        broadcastLogCounter += 1;
        receivedBroadcastLog.Enqueue(broadcastLogTokens[broadcastLogCounter % broadcastLogTokens.Length] + " " + aRawData);
        if (receivedBroadcastLog.Count > maxLogLines)
        {
            receivedBroadcastLog.Dequeue();
        }

        var server = new BeerPongDiscoveredServer(data);

        server.rawData   = aRawData;
        server.ipAddress = aFromAddress;
        server.timestamp = Time.time;

        bool newData = false;

        if (!discoveredServers.ContainsKey(aFromAddress))
        {
            //New Server
            discoveredServers.Add(aFromAddress, server);
            newData = true;
        }
        else
        {
            if (discoveredServers[aFromAddress].rawData != aRawData)
            {
                //Old Server with new info
                discoveredServers[aFromAddress] = server;
                newData = true;
            }
            else
            {
                //Just update the timestamp
                discoveredServers[aFromAddress].timestamp = Time.time;
                newData = false;
            }
        }

        networkManager.OnReceivedBroadcast(aFromAddress, aRawData);

        if (newData)
        {
            networkManager.OnDiscoveredServer(server);
        }
    }