コード例 #1
0
 public void DisplayLoading()
 {
     if (modView != null)
     {
         modView.DisplayLoading();
     }
     if (selectedMediaPreview != null)
     {
         selectedMediaPreview.DisplayLoading();
     }
 }
コード例 #2
0
        private void DisplayProfiles(IEnumerable <ModProfile> profileCollection, RectTransform pageTransform)
        {
            #if DEBUG
            if (!Application.isPlaying)
            {
                return;
            }
            #endif

            foreach (Transform t in pageTransform)
            {
                ModView view = t.GetComponent <ModView>();
                if (view != null)
                {
                    m_modViews.Remove(view);
                }
                GameObject.Destroy(t.gameObject);
            }

            List <int>     missingStatsData = new List <int>();
            List <ModView> pageModViews     = new List <ModView>();
            if (profileCollection != null)
            {
                IList <int> subscribedModIds = ModManager.GetSubscribedModIds();
                IList <int> enabledModIds    = ModManager.GetEnabledModIds();

                foreach (ModProfile profile in profileCollection)
                {
                    if (pageModViews.Count >= itemsPerPage)
                    {
                        Debug.LogWarning("[mod.io] ProfileCollection contained more profiles than "
                                         + "can be displayed per page", this.gameObject);
                        break;
                    }

                    GameObject itemGO = GameObject.Instantiate(itemPrefab,
                                                               pageTransform);
                    itemGO.name = "Mod Tile [" + pageModViews.Count.ToString() + "]";

                    // initialize item
                    ModView view = itemGO.GetComponent <ModView>();

                    if (profile == null)
                    {
                        view.DisplayLoading();
                    }
                    else
                    {
                        // add listeners
                        view.onClick               += (v) => ViewManager.instance.InspectMod(v.data.profile.modId);
                        view.subscribeRequested    += (v) => ModBrowser.instance.SubscribeToMod(v.data.profile.modId);
                        view.unsubscribeRequested  += (v) => ModBrowser.instance.UnsubscribeFromMod(v.data.profile.modId);
                        view.enableModRequested    += (v) => ModBrowser.instance.EnableMod(v.data.profile.modId);
                        view.disableModRequested   += (v) => ModBrowser.instance.DisableMod(v.data.profile.modId);
                        view.ratePositiveRequested += (v) => ModBrowser.instance.AttemptRateMod(v.data.profile.modId, ModRatingValue.Positive);
                        view.rateNegativeRequested += (v) => ModBrowser.instance.AttemptRateMod(v.data.profile.modId, ModRatingValue.Negative);

                        // display
                        ModStatistics  stats           = ModStatisticsRequestManager.instance.TryGetValid(profile.id);
                        bool           isModSubscribed = subscribedModIds.Contains(profile.id);
                        bool           isModEnabled    = enabledModIds.Contains(profile.id);
                        ModRatingValue ratingValue     = ModBrowser.instance.GetModRating(profile.id);

                        view.DisplayMod(profile,
                                        stats,
                                        m_tagCategories,
                                        isModSubscribed,
                                        isModEnabled,
                                        ratingValue);

                        if (stats == null)
                        {
                            missingStatsData.Add(profile.id);
                        }
                    }

                    pageModViews.Add(view);
                }

                if (pageModViews.Count > 0)
                {
                    for (int i = pageModViews.Count; i < itemsPerPage; ++i)
                    {
                        GameObject spacer = new GameObject("Spacing Tile [" + i.ToString("00") + "]",
                                                           typeof(RectTransform));
                        spacer.transform.SetParent(pageTransform);
                    }
                }
            }
            m_modViews.AddRange(pageModViews);

            if (missingStatsData.Count > 0)
            {
                ModStatisticsRequestManager.instance.RequestModStatistics(missingStatsData,
                                                                          (statsArray) =>
                {
                    if (this != null)
                    {
                        UpdateStatisticsDisplays(statsArray);
                    }
                },
                                                                          WebRequestError.LogAsWarning);
            }

            // fix layouting
            if (this.isActiveAndEnabled)
            {
                LayoutRebuilder.MarkLayoutForRebuild(pageTransform);
            }
        }
コード例 #3
0
        private void DisplayProfiles(IEnumerable <ModProfile> profileCollection, RectTransform pageTransform)
        {
            #if DEBUG
            if (!Application.isPlaying)
            {
                return;
            }
            #endif

            foreach (Transform t in pageTransform)
            {
                ModView view = t.GetComponentInChildren <ModView>();
                if (view != null)
                {
                    m_modViews.Remove(view);
                }
                GameObject.Destroy(t.gameObject);
            }

            List <ModView> pageModViews = new List <ModView>();
            if (profileCollection != null)
            {
                IList <int> subscribedModIds = ModManager.GetSubscribedModIds();
                IList <int> enabledModIds    = ModManager.GetEnabledModIds();
                Vector2     centerVector     = new Vector2(0.5f, 0.5f);

                foreach (ModProfile profile in profileCollection)
                {
                    if (pageModViews.Count >= itemsPerPage)
                    {
                        // Debug.LogWarning("[mod.io] ProfileCollection contained more profiles than "
                        //                  + "can be displayed per page");
                        break;
                    }

                    GameObject resizeWrapper = new GameObject("Mod Tile", typeof(RectTransform));
                    resizeWrapper.transform.SetParent(pageTransform);
                    resizeWrapper.transform.localScale = Vector3.one;

                    GameObject itemGO = GameObject.Instantiate(itemPrefab,
                                                               new Vector3(),
                                                               Quaternion.identity,
                                                               resizeWrapper.transform);

                    RectTransform itemTransform = itemGO.transform as RectTransform;
                    itemTransform.pivot            = centerVector;
                    itemTransform.anchorMin        = centerVector;
                    itemTransform.anchorMax        = centerVector;
                    itemTransform.anchoredPosition = Vector2.zero;
                    itemTransform.localScale       = this.m_tileScale;

                    // initialize item
                    ModView view = itemGO.GetComponent <ModView>();
                    view.onClick              += NotifyInspectRequested;
                    view.subscribeRequested   += NotifySubscribeRequested;
                    view.unsubscribeRequested += NotifyUnsubscribeRequested;
                    view.enableModRequested   += NotifyEnableRequested;
                    view.disableModRequested  += NotifyDisableRequested;
                    view.Initialize();

                    if (profile == null)
                    {
                        view.DisplayLoading();
                    }
                    else
                    {
                        bool isModSubscribed = subscribedModIds.Contains(profile.id);
                        bool isModEnabled    = enabledModIds.Contains(profile.id);

                        view.DisplayMod(profile,
                                        null,
                                        m_tagCategories,
                                        isModSubscribed,
                                        isModEnabled);

                        ModManager.GetModStatistics(profile.id,
                                                    (s) =>
                        {
                            ModDisplayData data = view.data;
                            data.statistics     = ModStatisticsDisplayData.CreateFromStatistics(s);
                            view.data           = data;
                        },
                                                    null);
                    }

                    pageModViews.Add(view);
                }

                if (pageModViews.Count > 0)
                {
                    for (int i = pageModViews.Count; i < itemsPerPage; ++i)
                    {
                        GameObject spacer = new GameObject("Spacing Tile [" + i.ToString("00") + "]",
                                                           typeof(RectTransform));
                        spacer.transform.SetParent(pageTransform);
                    }
                }
            }
            m_modViews.AddRange(pageModViews);

            // fix layouting
            if (this.isActiveAndEnabled)
            {
                LayoutRebuilder.MarkLayoutForRebuild(pageTransform);
            }
        }