示例#1
0
    protected virtual void OnPlayerJoined(SimplePeerInfo peerInfo)
    {
        // Add to lookups
        peersByConnectionId.Add(peerInfo.connection.connectionId, peerInfo);
        peersByPeerId.Add(peerInfo.peerId, peerInfo);

        if (onPlayerJoined != null)
        {
            onPlayerJoined.Invoke(peerInfo);
        }

        hasFirstPlayerShowedUp = true;
    }
示例#2
0
    protected virtual void OnPlayerLeft(SimplePeerInfo peerInfo)
    {
        // Remove from lookups
        peersByConnectionId.Remove(peerInfo.connection.connectionId);
        peersByPeerId.Remove(peerInfo.peerId);

        if (!isFirstRoom && terminateWhenLastPlayerQuits && peersByPeerId.Count == 0)
        {
            Application.Quit();
        }

        if (onPlayerLeft != null)
        {
            onPlayerLeft.Invoke(peerInfo);
        }

        // Notify controller that the player has left
        roomController.PlayerLeft(peerInfo.peerId);
    }
示例#3
0
    protected virtual void HandleReceivedAccess(NetworkMessage netmsg)
    {
        var token = netmsg.ReadMessage <StringMessage>().value;

        roomController.ValidateAccess(token, (validatedAccess, error) =>
        {
            if (validatedAccess == null)
            {
                logger.Error("Failed to confirm access token:" + error);
                // Confirmation failed, disconnect the user
                netmsg.conn.Disconnect();
                return;
            }

            logger.Debug("Confirmed token access for peer: " + validatedAccess);
            var peerInfo = new SimplePeerInfo()
            {
                peerId     = validatedAccess.PeerId,
                connection = netmsg.conn,
            };
            OnPlayerJoined(peerInfo);
        });
    }