Exemplo n.º 1
0
        private void AddPlayerListViewElement(PhotonPlayer player)
        {
            ListViewElementPhotonPlayer element = null;

            if (null != ListViewElementPool)
            {
                element = ListViewElementPool.GetObject();
            }

            if (null == element)
            {
                element = GameObject.Instantiate <ListViewElementPhotonPlayer>(ListViewElementPrefab);
            }
            else
            {
                element.gameObject.SetActive(true);
            }

            ListViewPlayers.AddControl(element.gameObject);

            string buttonText = GetPlayerListViewElementText(player);

            element.Text.text = buttonText;
            element.Player    = player;

            if (false == PhotonNetwork.offlineMode)
            {
                RoomLobbyPlayerState playerState =
                    (RoomLobbyPlayerState)player.CustomProperties[PlayerCustomPropertiesKey.RoomLobbyPlayerState.ToString()];
                SetListViewElementImageColor(element, playerState);
            }
        }
Exemplo n.º 2
0
        public void OnButtonReadyClicked()
        {
            RoomLobbyPlayerState state =
                (RoomLobbyPlayerState)PhotonNetwork.player.CustomProperties[PlayerCustomPropertiesKey.RoomLobbyPlayerState.ToString()];

            state = (state == RoomLobbyPlayerState.Ready) ? RoomLobbyPlayerState.NotReady : RoomLobbyPlayerState.Ready;
            UIRoom.SetPhotonPlayerRoomLobbyState(state);
            SetReadyButtonText(state);
        }
Exemplo n.º 3
0
        /*Private consts fields*/

        /*Private fields*/

        /*Public consts fields*/

        /*Public fields*/

        /*Private methods*/

        /*Public methods*/

        public static void SetPhotonPlayerRoomLobbyState(RoomLobbyPlayerState state)
        {
            if (false == PhotonNetwork.offlineMode)
            {
                Hashtable customProperties = PhotonNetwork.player.CustomProperties;
                customProperties.Clear();
                customProperties.Add(PlayerCustomPropertiesKey.RoomLobbyPlayerState.ToString(), state);
                PhotonNetwork.player.SetCustomProperties(customProperties);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Indexes of array defined in PUN documentation see:
        /// https://doc-api.photonengine.com/en/pun/v1/group__public_api.html#ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941
        /// </summary>
        public override void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps)
        {
            base.OnPhotonPlayerPropertiesChanged(playerAndUpdatedProps);

            PhotonPlayer player           = (PhotonPlayer)playerAndUpdatedProps[0];
            Hashtable    customProperties = (Hashtable)playerAndUpdatedProps[1];

            ListViewElementPhotonPlayer playerElement = GetPhotonPlayerListViewElement(ListViewPlayers, player);
            RoomLobbyPlayerState        state         =
                (RoomLobbyPlayerState)customProperties[PlayerCustomPropertiesKey.RoomLobbyPlayerState.ToString()];

            SetListViewElementImageColor(playerElement, state);
            playerElement.Text.text = GetPlayerListViewElementText(player);
            NumberOfReadyClients    = (state == RoomLobbyPlayerState.Ready) ? ++NumberOfReadyClients : --NumberOfReadyClients;
            SetStartButtonState();
        }
Exemplo n.º 5
0
        private void SetReadyButtonText(RoomLobbyPlayerState state)
        {
            string text = string.Empty;

            switch (state)
            {
            case RoomLobbyPlayerState.Ready:
                text = "Not ready";
                break;

            case RoomLobbyPlayerState.NotReady:
                text = "Ready";
                break;

            default:
                break;
            }

            TextButtonReady.text = text;
        }
Exemplo n.º 6
0
        /// <summary>
        /// Returns button's text of single player in a room lobby. Text contains
        /// player's nickname and role in a room lobby
        /// </summary>
        private string GetPlayerListViewElementText(PhotonPlayer player)
        {
            string buttonText = player.NickName + " ";

            if (true == player.IsLocal)
            {
                buttonText += "(You) ";
            }

            if (true == player.IsMasterClient)
            {
                buttonText += "(Room master) ";
            }

            if (false == PhotonNetwork.offlineMode)
            {
                RoomLobbyPlayerState playerState =
                    (RoomLobbyPlayerState)player.CustomProperties[PlayerCustomPropertiesKey.RoomLobbyPlayerState.ToString()];

                switch (playerState)
                {
                case RoomLobbyPlayerState.Ready:
                    buttonText += "\nReady";
                    break;

                case RoomLobbyPlayerState.NotReady:
                    buttonText += "\nNot ready";
                    break;

                default:
                    break;
                }
            }

            return(buttonText);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Sets color if image according to player state
        /// </summary>
        private void SetListViewElementImageColor(ListViewElementPhotonPlayer element, RoomLobbyPlayerState state)
        {
            switch (state)
            {
            case RoomLobbyPlayerState.Ready:
                element.BackgroundImage.color = ListViewElementPlayerReadyColor;
                break;

            case RoomLobbyPlayerState.NotReady:
                element.BackgroundImage.color = ListViewElementPlayerNotReadyColor;
                break;

            default:
                break;
            }
        }