Esempio n. 1
0
    public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo)
    {
        if (Peers.Contains(peer))
        {
            Peers.Remove(peer);
        }

        LobbyPlayer lp = LobbyMenu.instance.GetPeer(peer);

        if (lp)
        {
            LobbyMenu.instance.RemovePlayer(lp);
        }

        PLobbyPlayer packet = new PLobbyPlayer();

        packet.id     = lp.id;
        packet.name   = lp.name;
        packet.action = false;

        for (int i = 0; i < Peers.Count; i++)
        {
            Peers[i].Send(serializer.Serialize <PLobbyPlayer>(packet), SendOptions.ReliableOrdered);
        }

        Debug.Log("Peer disconnected, reason: " + disconnectInfo.Reason.ToString());
    }
Esempio n. 2
0
 public void OnClientLobbyAction(PLobbyPlayer packet)
 {
     if (packet.action)
     {
         LobbyMenu.instance.CreatePlayer(packet.id, packet.name);
     }
     else
     {
         LobbyPlayer p = LobbyMenu.instance.GetPeer(packet.id);
         LobbyMenu.instance.RemovePlayer(p);
     }
 }
    // This method should be called whenever a new player is added to the lobby
    public void AddPlayer(PLobbyPlayer player)
    {
        if (playersList.Contains(player))   // Adding player that is already in the lobby!
        {
            return;
        }

        playersList.Add(player);
        player.setPlayerIndex(playersList.Count - 1);
        //GameObject newPlayerRow = Instantiate(playerRowPrefab) as GameObject;
        //newPlayerRow.transform.SetParent(playerListTransform, false);
        player.transform.SetParent(playerListTransform, false); // false to prevent the world position from changing
    }
Esempio n. 4
0
    public void OnReceiveHandshake(PClientHandshake packet, NetPeer peer)
    {
        int id = LobbyMenu.instance.Players.Count;

        LobbyMenu.instance.CreatePlayer(peer, packet.clientName, false);

        PLobby lobbyPacket             = new PLobby();
        List <SerializedLobbyPlayer> S = new List <SerializedLobbyPlayer>();

        for (int i = 0; i < LobbyMenu.instance.Players.Count; i++)
        {
            LobbyPlayer           p   = LobbyMenu.instance.Players[i];
            SerializedLobbyPlayer slp = new SerializedLobbyPlayer();
            slp.id   = p.id;
            slp.name = p.playerName;

            S.Add(slp);
        }

        lobbyPacket.serverName = serverName;
        lobbyPacket.players    = S.ToArray();

        peer.Send(serializer.Serialize(lobbyPacket), SendOptions.ReliableOrdered);

        PLobbyPlayer lp = new PLobbyPlayer();

        lp.id     = id;
        lp.name   = packet.clientName;
        lp.action = true;

        for (int i = 0; i < Peers.Count; i++)
        {
            if (Peers[i] != peer)
            {
                Peers[i].Send(serializer.Serialize(lp), SendOptions.ReliableOrdered);
            }
        }
    }
 // This method should be called whenever a player leaves the lobby
 public void RemovePlayer(PLobbyPlayer player)
 {
     playersList.Remove(player);
 }