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); } } } }
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; } }
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); }
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); }
bool IsEveryPlayerReady(Net_PlayerInfo player) { Debug.Log(player.userName + " is " + player.ready); if (player.ready == true) { return(true); } else { return(false); } }
Net_HubInfo GetPlayerHub(Net_PlayerInfo player) { Net_HubInfo hub = hubs.Find(x => x.hubName == player.joinedHub); if (hub != null) { return(hub); } else { return(null); } }
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); }
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; }
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; }
public Net_HubInfo(string hubName, Net_PlayerInfo host) { this.hubName = hubName; this.host = host; OperationCode = NetOperationCode.hubInfo; }