Пример #1
0
    /// <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 }
            });
        }
    }
Пример #2
0
    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;
        }
    }