/// <summary>Switch that player's team to the one you assign.</summary> /// <remarks>Internally checks if this player is in that team already or not. Only team switches are actually sent.</remarks> /// <param name="player"></param> /// <param name="team"></param> public static void SetTeam(this Player player, PhotonTeams.Team team) { if (!PhotonNetwork.IsConnectedAndReady) { Debug.LogWarning("JoinTeam was called in state: " + PhotonNetwork.NetworkClientState + ". Not IsConnectedAndReady."); return; } PhotonTeams.Team currentTeam = player.GetTeam(); if (currentTeam != team) { player.SetCustomProperties(new Hashtable() { { PhotonTeams.TeamPlayerProp, (byte)team } }); } }
public void ChooseTeam(PhotonTeams.Team currentTeam, Player player) { switch (currentTeam) { case PhotonTeams.Team.Red: player.SetTeam(PhotonTeams.Team.Red); photonTeams.UpdateTeams(); if (player.GetCharacter() != PhotonCharacters.Character.None) { player.SetCharacter(PhotonCharacters.Character.None); } break; case PhotonTeams.Team.Blue: player.SetTeam(PhotonTeams.Team.Blue); photonTeams.UpdateTeams(); if (player.GetCharacter() != PhotonCharacters.Character.None) { player.SetCharacter(PhotonCharacters.Character.None); } break; case PhotonTeams.Team.Random: if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Red].Count == PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Blue].Count) { int random = Random.Range(0, 2); if (random == 0) { player.SetTeam(PhotonTeams.Team.Red); photonTeams.UpdateTeams(); } else { player.SetTeam(PhotonTeams.Team.Blue); photonTeams.UpdateTeams(); } } else { if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Red].Count < PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Blue].Count) { player.SetTeam(PhotonTeams.Team.Red); photonTeams.UpdateTeams(); } if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Red].Count > PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Blue].Count) { player.SetTeam(PhotonTeams.Team.Blue); photonTeams.UpdateTeams(); } } break; case PhotonTeams.Team.AutoChoose: if (player.GetTeam() == PhotonTeams.Team.Red) { player.SetTeam(PhotonTeams.Team.Blue); photonTeams.UpdateTeams(); if (player.GetCharacter() != PhotonCharacters.Character.None) { player.SetCharacter(PhotonCharacters.Character.None); } } else if (player.GetTeam() == PhotonTeams.Team.Blue) { player.SetTeam(PhotonTeams.Team.Red); photonTeams.UpdateTeams(); if (player.GetCharacter() != PhotonCharacters.Character.None) { player.SetCharacter(PhotonCharacters.Character.None); } } break; } if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Red].Count == maxPlayersInTeam) { uiManager.panelsLists[0].panelButtons[0].interactable = false; uiManager.panelsLists[0].panelButtons[2].interactable = false; } if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Blue].Count == maxPlayersInTeam) { uiManager.panelsLists[0].panelButtons[1].interactable = false; uiManager.panelsLists[0].panelButtons[2].interactable = false; } if (PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Red].Count == maxPlayersInTeam && PhotonTeams.PlayersPerTeam[PhotonTeams.Team.Blue].Count == maxPlayersInTeam) { uiManager.panelsLists[3].panelButtons[0].interactable = false; } }