Ejemplo 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);
            }
        }
Ejemplo n.º 2
0
 private void OnDisable()
 {
     for (int i = ListViewPlayers.Controls.Count - 1; i >= 0; i--)
     {
         ListViewElementPhotonPlayer element =
             ListViewPlayers.Controls[i].GetComponent <ListViewElementPhotonPlayer>();
         DisablePlayerListViewElement(element);
     }
 }
Ejemplo n.º 3
0
        public override void OnPhotonPlayerDisconnected(PhotonPlayer disconnectedPlayer)
        {
            base.OnPhotonPlayerDisconnected(disconnectedPlayer);

            ListViewElementPhotonPlayer playerElement =
                GetPhotonPlayerListViewElement(ListViewPlayers, disconnectedPlayer);

            DisablePlayerListViewElement(playerElement);

            SetStartButtonState();
            SetListViewPlayersText();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Disables list view element and returns it back to pool
        /// </summary>
        /// <param name="element"></param>
        private void DisablePlayerListViewElement(ListViewElementPhotonPlayer element)
        {
            ListViewPlayers.RemoveControl(element.gameObject, false);

            if (null == ListViewElementPool)
            {
                ListViewElementPool = new ObjectPool <ListViewElementPhotonPlayer>();
            }

            element.gameObject.SetActive(false);
            ListViewElementPool.AddObject(element);
        }
Ejemplo n.º 5
0
        public override void OnMasterClientSwitched(PhotonPlayer newMasterClient)
        {
            base.OnMasterClientSwitched(newMasterClient);

            ListViewElementPhotonPlayer newMasterClientElement = GetPhotonPlayerListViewElement(ListViewPlayers, newMasterClient);

            newMasterClientElement.Text.text = GetPlayerListViewElementText(newMasterClient);

            if (true == PhotonNetwork.isMasterClient)
            {
                ButtonStartGame.interactable = true;
            }
        }
Ejemplo n.º 6
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();
        }
Ejemplo 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;
            }
        }