// -------------------------------------------------------------------------------------------------------------------- // // Part of: Pun Cockpit // // developer@exitgames.com // -------------------------------------------------------------------------------------------------------------------- using System.Collections; using UnityEngine; using UnityEngine.UI; using Photon.Realtime; namespace Photon.Pun.Demo.Cockpit { /// /// Roomlist cell. /// public class RoomListCell : MonoBehaviour { public RoomListView ListManager; public Text RoomNameText; public Text PlayerCountText; public Text OpenText; public CanvasGroup JoinButtonCanvasGroup; public LayoutElement LayoutElement; public RoomInfo info; public void RefreshInfo(RoomInfo info) { this.info = info; RoomNameText.text = info.Name; PlayerCountText.text = info.PlayerCount + "/" + info.MaxPlayers; if (info.IsOpen) { OpenText.text = "Open"; OpenText.color = Color.green; JoinButtonCanvasGroup.blocksRaycasts = true; JoinButtonCanvasGroup.alpha = 1f; } else { OpenText.text = "Closed"; OpenText.color = Color.red; JoinButtonCanvasGroup.blocksRaycasts = false; JoinButtonCanvasGroup.alpha = 0f; } } public void OnJoinRoomButtonClick() { ListManager.OnRoomCellJoinButtonClick(info.Name); } public void AddToList(RoomInfo info, bool animate = false) { RefreshInfo(info); if (animate) { StartCoroutine("AnimateAddition"); } else { LayoutElement.minHeight = 30f; } } public void RemoveFromList() { StartCoroutine("AnimateRemove"); } IEnumerator AnimateAddition() { LayoutElement.minHeight = 0f; while (LayoutElement.minHeight != 30f) { LayoutElement.minHeight = Mathf.MoveTowards(LayoutElement.minHeight, 30f, 2f); yield return new WaitForEndOfFrame(); } } IEnumerator AnimateRemove() { while (LayoutElement.minHeight != 0f) { LayoutElement.minHeight = Mathf.MoveTowards(LayoutElement.minHeight, 0f, 2f); yield return new WaitForEndOfFrame(); } Destroy(this.gameObject); } } }