diff --git a/Assets/Scripts/Menus/CreateLobbyPopup.cs b/Assets/Scripts/Menus/CreateLobbyPopup.cs index 7ec5421..2a9f0ef 100644 --- a/Assets/Scripts/Menus/CreateLobbyPopup.cs +++ b/Assets/Scripts/Menus/CreateLobbyPopup.cs @@ -26,7 +26,7 @@ private void OnCreateButtonClicked() { if (string.IsNullOrEmpty(lobbyNameInput.text)) return; - RoomOptions roomOptions = new RoomOptions { IsOpen = true, MaxPlayers = 4 }; + RoomOptions roomOptions = new RoomOptions { IsVisible = !IsPrivate, IsOpen = true, MaxPlayers = 4 }; PhotonNetwork.CreateRoom(lobbyNameInput.text, roomOptions, TypedLobby.Default); } diff --git a/Assets/Scripts/Menus/JoinPrivateLobbyPopup.cs b/Assets/Scripts/Menus/JoinPrivateLobbyPopup.cs index ca5ffbc..876084a 100644 --- a/Assets/Scripts/Menus/JoinPrivateLobbyPopup.cs +++ b/Assets/Scripts/Menus/JoinPrivateLobbyPopup.cs @@ -1,3 +1,4 @@ +using Photon.Pun; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -33,7 +34,7 @@ private void OnEnterClicked() if (string.IsNullOrEmpty(lobbyNameInput.text)) return; LoadingGraphics.Enable(); - // TODO: Join target room + PhotonNetwork.JoinRoom(lobbyNameInput.text); } } } \ No newline at end of file diff --git a/Assets/Scripts/Menus/PlayerLobbyEntry.cs b/Assets/Scripts/Menus/PlayerLobbyEntry.cs index 576ac16..34a48bf 100644 --- a/Assets/Scripts/Menus/PlayerLobbyEntry.cs +++ b/Assets/Scripts/Menus/PlayerLobbyEntry.cs @@ -50,7 +50,7 @@ public void Setup(Player entryPlayer) if (IsLocalPlayer) { - PlayerTeam = (player.ActorNumber - 1) % PhotonNetwork.CurrentRoom.MaxPlayers; + PlayerTeam = GetAvailableTeam(0); } playerName.text = player.NickName; @@ -82,9 +82,33 @@ private void Start() readyButton.gameObject.SetActive(false); } + private int GetAvailableTeam(int desiredTeam) + { + while (true) + { + bool available = true; + + foreach (var currentPlayer in PhotonNetwork.PlayerList) + { + if (currentPlayer == PhotonNetwork.LocalPlayer) continue; + + int team = currentPlayer.CustomProperties.ContainsKey("Team") ? + (int) currentPlayer.CustomProperties["Team"] : 0; + + if (team == desiredTeam) + { + available = false; + desiredTeam = (desiredTeam + 1) % PhotonNetwork.CurrentRoom.MaxPlayers; + } + } + + if (available) return desiredTeam; + } + } + private void OnChangeTeamButtonClicked() { - PlayerTeam = (PlayerTeam + 1) % PhotonNetwork.CurrentRoom.MaxPlayers; + PlayerTeam = GetAvailableTeam((PlayerTeam + 1) % PhotonNetwork.CurrentRoom.MaxPlayers); } private void OnReadyButtonClick(bool isReady) diff --git a/Assets/Scripts/Menus/SettingsController.cs b/Assets/Scripts/Menus/SettingsController.cs index 497e57f..7c24582 100644 --- a/Assets/Scripts/Menus/SettingsController.cs +++ b/Assets/Scripts/Menus/SettingsController.cs @@ -1,3 +1,4 @@ +using Photon.Pun; using TMPro; using UnityEngine; using UnityEngine.Audio; @@ -56,8 +57,7 @@ private void OnCloseButtonClicked() gameObject.SetActive(false); PlayerPrefs.SetString("PlayerName", playerNameInput.text); - - // TODO: Update photon local player nickname + PhotonNetwork.NickName = playerNameInput.text; } private void SetSound(string id, bool newValue, Button disabledButton, Button enabledButton)