void OnStateDataChanged(UIStateData data)
        {
            if (data.selectedProjectOption != m_CurrentSelectedProject)
            {
                if (m_LastHighlightedItem != null)
                {
                    m_LastHighlightedItem.SetHighlight(false);
                    m_LastHighlightedItem = null;
                }

                if (data.selectedProjectOption != Project.Empty)
                {
                    var projectListItem = m_ProjectListItems.SingleOrDefault(e => e.room.project == data.selectedProjectOption);
                    if (projectListItem != null)
                    {
                        projectListItem.SetHighlight(true);
                        m_LastHighlightedItem = projectListItem;
                    }

                    m_ProjectOption.transform.SetParent(m_ScrollRect.transform);
                    m_ProjectOption.transform.localPosition = GetOptionPosition(projectListItem);
                    m_ProjectOption.transform.SetParent(m_ScrollRect.transform.parent);

                    m_ScrollRect.StopMovement();
                    m_ProjectOption.InitProjectOption(data.selectedProjectOption);
                    m_ProjectOption.gameObject.SetActive(true);
                    m_TapDetector.SetActive(true);
                }
                else
                {
                    m_ProjectOption.gameObject.SetActive(false);
                    m_TapDetector.SetActive(false);
                }
                m_CurrentSelectedProject = data.selectedProjectOption;
                m_CurrentOptionIndex     = data.projectOptionIndex;
            }
            else if (data.projectOptionIndex != m_CurrentOptionIndex)
            {
                m_ProjectOption.InitProjectOption(data.selectedProjectOption);
                m_CurrentOptionIndex = data.projectOptionIndex;
            }

            if (data.landingScreenFilterData != m_CurrentFilterData)
            {
                m_ScrollRect.verticalNormalizedPosition = 1;
                FilterProjectList(data.landingScreenFilterData);
                m_CurrentFilterData = data.landingScreenFilterData;

                if (data.landingScreenFilterData.projectServerType != m_CurrentServerType)
                {
                    m_ProjectTabController.SelectButtonType(data.landingScreenFilterData.projectServerType);
                    m_CurrentServerType = data.landingScreenFilterData.projectServerType;
                }
            }

            UpdateLayout(data);
        }
예제 #2
0
        void HideProjectOptionDialog()
        {
            if (m_ProjectOption.IsVisible())
            {
                m_ProjectOption.Hide();
                ProjectListItem.HideOptionButtonHighlight();

                m_TapDetector.SetActive(false);
            }
        }
예제 #3
0
        void ShowProjectOptionDialog(ProjectListItem item, Project project)
        {
            if (!m_ProjectOption.IsVisible())
            {
                var contentRectTransform = m_ScrollViewContent.GetComponent <RectTransform>();
                var itemRectTransform    = item.GetComponent <RectTransform>();

                var desiredHeight = itemRectTransform.anchoredPosition.y + contentRectTransform.anchoredPosition.y + itemRectTransform.rect.height;

                m_ProjectOption.Show(project, desiredHeight, m_ScrollRectTransform.rect.height);

                ProjectListItem.ShowOptionButtonHighlight(item);

                m_TapDetector.SetActive(true);
            }
        }
        Vector2 GetOptionPosition(ProjectListItem item)
        {
            var anchoredPositionY = m_ScrollViewContent.GetComponent <RectTransform>().anchoredPosition.y;
            var localPositionY    = item.transform.localPosition.y + anchoredPositionY;

            var itemHeight = item.GetComponent <RectTransform>().rect.height;
            var adjustY    = m_OptionPopupRectTransform.rect.height - itemHeight;

            if (localPositionY - m_OptionPopupRectTransform.rect.height < -m_ScrollRectTransform.rect.height)
            {
                return(new Vector2(m_ProjectOption.transform.localPosition.x, localPositionY + adjustY));
            }
            else
            {
                return(new Vector2(m_ProjectOption.transform.localPosition.x, localPositionY));
            }
        }
        void OnProjectStateDataChanged(UIProjectStateData data)
        {
            if (data.activeProject != m_CurrentActiveProject)
            {
                m_CurrentActiveProject  = data.activeProject;
                m_ActiveProjectListItem = m_ProjectListItems.FirstOrDefault(item => item.room.project == m_CurrentActiveProject);
            }

            if (m_ActiveProjectListItem != null && data.activeProjectThumbnail != m_ActiveProjectListItem.projectThumbnail)
            {
                m_ActiveProjectListItem.projectThumbnail = data.activeProjectThumbnail;
            }

            if (data.projectSortData != m_CurrentProjectSortData)
            {
                m_CurrentProjectSortData = data.projectSortData;
                SortProjects();
            }
        }
예제 #6
0
        void OnProjectStateDataChanged(UIProjectStateData data)
        {
            if (data.activeProject != m_CurrentActiveProject)
            {
                m_DialogButton.interactable = data.activeProject != Project.Empty;
                m_CurrentActiveProject      = data.activeProject;
                m_ActiveProjectListItem     = m_ProjectListItems.FirstOrDefault(item => item.project == m_CurrentActiveProject);
            }

            if (m_ActiveProjectListItem != null && data.activeProjectThumbnail != m_ActiveProjectListItem.projectThumbnail)
            {
                m_ActiveProjectListItem.projectThumbnail = data.activeProjectThumbnail;
            }

            if (data.projectSortMethod != m_CurrentProjectSortMethod)
            {
                m_CurrentProjectSortMethod = data.projectSortMethod;
                SortProjects();
            }
        }
예제 #7
0
 void OnProjectOptionButtonClick(ProjectListItem item, Project project)
 {
     ShowProjectOptionDialog(item, project);
 }
예제 #8
0
 void OnActiveProjectChanged(Project newData)
 {
     m_ActiveProjectListItem = m_ProjectListItems.FirstOrDefault(item => item.room.project.projectId == newData.projectId);
 }