public void GetNames()
    {
        for (int i = 0; i < Client.Instance.roPlayers.Count; i++)
        {
            Net_PlayerInfo player = Client.Instance.roPlayers[i];

            bool playerSpawned = false;
            for (int j = 0; j < playerObjects.Count; j++)
            {
                if (playerObjects[j].ContainsValue(player.userName))
                {
                    playerSpawned = true;
                    break;
                }
            }

            if (!playerSpawned)
            {
                if (player.playerType == "host")
                {
                    InstantiatePrefab(player, hostInformationPrefab);
                }

                if (player.playerType == "join")
                {
                    InstantiatePrefab(player, playerInformationPrefab);
                }
            }
        }
    }
Beispiel #2
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");
            }
        }
    }
    IEnumerator LoadGameScene()
    {
        SceneManager.LoadScene("Game");

        yield return(new WaitUntil(() => SceneManager.GetActiveScene().name == "Game"));

        for (int i = 0; i < players.Count; i++)
        {
            Net_PlayerInfo temp = players[i];
            GameObject     obj  = Instantiate(playerPrefab, new Vector3(0, 3, spawnOffset), Quaternion.identity);
            obj.name = temp.userName;
            Debug.Log("spawning object");

            if (temp.userName == self.userName)
            {
                myObj = obj;
                myObj.GetComponent <Renderer>().material.color = Color.red;
                selfMov = new Net_Movement(temp)
                {
                    xMov = myObj.transform.position.x,
                    zMov = myObj.transform.position.z,
                };
                FindObjectOfType <CameraMovement>().followObject = myObj;
            }
            playerObjects.Add(new PlayerObject(obj, temp));
            spawnOffset += 5;
        }
    }
Beispiel #4
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);
    }
Beispiel #5
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);
    }
Beispiel #6
0
 bool IsEveryPlayerReady(Net_PlayerInfo player)
 {
     Debug.Log(player.userName + " is " + player.ready);
     if (player.ready == true)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #7
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);
        }
    }
Beispiel #8
0
    Net_PlayerInfo GetCurrentPlayer(int playerId)
    {
        for (int i = 0; i < hubs.Count; i++)
        {
            Net_PlayerInfo player = hubs[i].players.Find(x => x.connectionId == playerId);

            if (player != null)
            {
                return(player);
            }
        }
        return(null);
    }
Beispiel #9
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 InstantiatePrefab(Net_PlayerInfo player, GameObject prefab)
    {
        GameObject playerList = GameObject.Find("PlayerList");

        GameObject user = Instantiate(prefab, playerList.transform, false);

        user.GetComponentInChildren <TextMeshProUGUI>().text = player.userName;
        user.transform.position = new Vector3(user.transform.position.x, user.transform.position.y - y, user.transform.position.z);

        Dictionary <GameObject, string> playerDictionary = new Dictionary <GameObject, string>();

        playerDictionary.Add(user, player.userName);
        playerObjects.Add(playerDictionary);
        y += 25;
    }
 void PlayersInfo(Net_PlayerInfo playerInf)
 {
     for (int i = 0; i < players.Count; i++)
     {
         if (players[i] == playerInf)
         {
             players.Remove(playerInf);
         }
     }
     players.Add(playerInf);
     Debug.Log("Player added: " + playerInf.userName + " Players:  " + players.Count);
     if (HubScene.Instance != null)
     {
         HubScene.Instance.GetNames();
     }
 }
    void RemovePlayer(Net_PlayerDisconnected discPlayer)
    {
        Debug.Log("Removing thing");
        Net_PlayerInfo player = discPlayer.player;

        for (int i = 0; i < players.Count; i++)
        {
            if (players[i].userName == player.userName)
            {
                players.Remove(players[i]);
                break;
            }
        }
        players.Remove(player);
        HubScene.Instance.RemovePlayers(player.userName);

        if (player.playerType == "host" && HubScene.Instance != null)
        {
            DisconnectFromServer();
        }
    }
    void OnCreateAccount(Net_OnCreateAccount oca)
    {
        //Save the data about the player
        self = new Net_PlayerInfo(oca.connectionId, oca.userName, oca.playerType);

        switch (oca.playerType)
        {
        case ("host"):
        {
            self.joinedHub = string.Format("{0}'s game", self.userName);
            SendServer(self, reliableChannel);
            SceneManager.LoadScene("Hub");
        }
        break;

        case ("join"):
        {
            SendServer(self, reliableChannel);
            SceneManager.LoadScene("HubSelect");
        }
        break;
        }
    }
 public PlayerObject(GameObject obj, Net_PlayerInfo player)
 {
     this.obj    = obj;
     this.player = player;
 }
Beispiel #15
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;
        }
    }
 public Net_PlayerDisconnected(Net_PlayerInfo player)
 {
     this.player   = player;
     OperationCode = NetOperationCode.playerDisconnected;
 }
 public Net_Movement(Net_PlayerInfo player)
 {
     this.player   = player;
     OperationCode = NetOperationCode.movement;
 }
Beispiel #18
0
 public Net_HubInfo(string hubName, Net_PlayerInfo host)
 {
     this.hubName  = hubName;
     this.host     = host;
     OperationCode = NetOperationCode.hubInfo;
 }