Esempio n. 1
0
    void AddPlayerToServer(Net_PlayerInfo pi)
    {
        if (pi.playerType == "host")
        {
            CreateHub(pi);
        }
        Net_HubInfo hub = GetPlayerHub(pi);

        if (hub != null)
        {
            hub.players.Add(pi);
            for (int i = 0; i < hub.players.Count; i++)
            {
                Net_PlayerInfo currentPlayer = hub.players[i];
                if (currentPlayer != pi)
                {
                    SendClient(pi.connectionId, currentPlayer);
                    Debug.Log("sending players to joined client");
                }
            }
            SendActivePlayers(pi, hub.players, reliableChannel);
        }
        else
        {
            for (int i = 0; i < hubs.Count; i++)
            {
                SendClient(pi.connectionId, hubs[i]);
                Debug.Log("sending " + pi.userName + " the hub");
            }
        }
    }
Esempio n. 2
0
    void SendMovement(Net_Movement msg)
    {
        Net_HubInfo           hub    = GetPlayerHub(msg.player);
        List <Net_PlayerInfo> temp   = new List <Net_PlayerInfo>(hub.players);
        Net_PlayerInfo        sender = temp.Find(x => x.connectionId == msg.player.connectionId);

        temp.Remove(sender);
        SendActivePlayers(msg, temp, unreliableChannel);
    }
Esempio n. 3
0
    void CreateHub(Net_PlayerInfo host)
    {
        Debug.Log("Creating Hub");
        Net_HubInfo hub = (new Net_HubInfo(string.Format("{0}'s game", host.userName), host)
        {
            players = new List <Net_PlayerInfo>(),
        });

        hubs.Add(hub);
    }
Esempio n. 4
0
    Net_HubInfo GetPlayerHub(Net_PlayerInfo player)
    {
        Net_HubInfo hub = hubs.Find(x => x.hubName == player.joinedHub);

        if (hub != null)
        {
            return(hub);
        }
        else
        {
            return(null);
        }
    }
Esempio n. 5
0
    void ReadyUp(Net_ReadyUp msg)
    {
        Net_PlayerInfo player = GetCurrentPlayer(msg.connectionId);
        Net_HubInfo    hub    = GetPlayerHub(player);

        player.ready = msg.ready;
        Debug.Log(player.userName + " " + player.ready);
        Debug.Log("Players are: " + hub.players.TrueForAll(IsEveryPlayerReady));

        if (hub.players.TrueForAll(IsEveryPlayerReady))
        {
            SendActivePlayers(new Net_ReadyUp(0, true), hub.players, reliableChannel);
        }
    }
 void AddHub(Net_HubInfo hub)
 {
     if (!hubs.Contains(hub))
     {
         hubs.Add(hub);
         if (HubSelectScene.Instance != null)
         {
             HubSelectScene.Instance.ShowHubs();
         }
     }
     else
     {
         hubs.Remove(hub);
     }
 }
Esempio n. 7
0
    private void UpdateMessagePump()
    {
        if (!isStarted)
        {
            return;
        }

        int recHostId;                          //Id for the platform where the message comes from
        int connectionId;                       //Which user is sending the message?
        int channelId;                          //Which lane is he sending that message from

        byte[] recBuffer = new byte[BYTE_SIZE]; //Holds the message that comes through
        int    dataSize;                        //Size of the message

        NetworkEventType type = NetworkTransport.Receive(out recHostId, out connectionId, out channelId, recBuffer, BYTE_SIZE, out dataSize, out error);

        switch (type)
        {
        case NetworkEventType.Nothing:
            break;

        case NetworkEventType.ConnectEvent:
            Debug.Log(string.Format("User {0} has connected through host {1}", connectionId, recHostId));
            playerCount.Add(connectionId);
            break;

        case NetworkEventType.DisconnectEvent:
            Debug.Log(string.Format("User {0} has disconnected ;-;", connectionId));
            if (playerCount.Count > 0)
            {
                playerCount.Remove(connectionId);
            }

            Net_PlayerInfo player = GetCurrentPlayer(connectionId);
            if (player != null)
            {
                Net_HubInfo hub = GetPlayerHub(player);
                if (hub != null)
                {
                    Net_PlayerDisconnected discPlayer = new Net_PlayerDisconnected(player);
                    hub.players.Remove(player);
                    SendActivePlayers(discPlayer, hub.players, reliableChannel);
                    if (player.playerType == "host")
                    {
                        Debug.Log("remove hubs!~!!");
                        SendClients(hub);
                        hubs.Remove(hub);
                    }
                }
            }
            break;

        case NetworkEventType.DataEvent:
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream    ms        = new MemoryStream(recBuffer);
            NetMsg          msg       = (NetMsg)formatter.Deserialize(ms);

            OnData(connectionId, channelId, recHostId, msg);
            break;

        default:
        case NetworkEventType.BroadcastEvent:
            Debug.Log("Unexpected network event type");
            break;
        }
    }