// Called on the HOST to handle the PlayerConnection message from the client // This message is sent right after the client connects in XXX private void HandlePlayerConnection(NetworkMessage rawMessage) { // Parse the message back PlayerConnectionMessage currentPlayerMessage = rawMessage.ReadMessage <PlayerConnectionMessage>(); // Retreive all the data ConnectedPlayer currentPlayer = Players[rawMessage.conn]; currentPlayer.PlayerName = currentPlayerMessage.PlayerName; currentPlayer.CarName = currentPlayerMessage.CarName; currentPlayer.IsBusrider = currentPlayerMessage.IsBusrider; if (currentPlayer.IsBusrider) { currentPlayer.CarName = "the bus"; } // Instantiate the actual car foreach (GameObject prefab in Cars) { if (prefab.name == currentPlayer.CarName) { GameObject carInstance = Instantiate(prefab, currentPlayer.PlayerSpawn.transform.position, Quaternion.identity); currentPlayer.PlayerGO = carInstance; NetworkServer.AddPlayerForConnection(rawMessage.conn, carInstance, currentPlayer.PlayerControllerID); carInstance.GetComponent <CheckpointReader>().username = currentPlayer.PlayerName; break; } } // Update UI string newText = "Players: " + Players.Count + "\n"; foreach (ConnectedPlayer knownPlayer in Players.Values) { newText += knownPlayer.PlayerName + "\n"; } GameObject.Find("PlayerList").GetComponent <Text>().text = newText; // Send player list List <int> ids = new List <int>(); List <string> names = new List <string>(); foreach (var kvp in Players.Values) { ids.Add(kvp.PlayerID); names.Add(kvp.PlayerName); } PlayerListMessage playerListMessage = new PlayerListMessage() { NetworkID = ids.ToArray(), PlayerNames = names.ToArray() }; foreach (var connectedPlayer in Players.Keys) { connectedPlayer.Send(TGMessageTypes.PlayerList, playerListMessage); } }
public void PlayerConnected(PlayerConnectionMessage message) { _logger.LogInformation($"Welcome, {message.Sender.SteamId}!"); }