Exemple #1
0
        protected virtual void Start()
        {
            Debug.Assert(modView != null);

            var tagCategories = ModBrowser.instance.gameProfile.tagCategories;

            if (tagCategories != null)
            {
                this.m_tagCategories = tagCategories;
            }

            if (modView.statisticsDisplay != null)
            {
                modView.statisticsDisplay.Initialize();
            }

            // add listeners
            modView.subscribeRequested    += (v) => ModBrowser.instance.SubscribeToMod(v.data.profile.modId);
            modView.unsubscribeRequested  += (v) => ModBrowser.instance.UnsubscribeFromMod(v.data.profile.modId);
            modView.enableModRequested    += (v) => ModBrowser.instance.EnableMod(v.data.profile.modId);
            modView.disableModRequested   += (v) => ModBrowser.instance.DisableMod(v.data.profile.modId);
            modView.ratePositiveRequested += (v) => ModBrowser.instance.AttemptRateMod(v.data.profile.modId, ModRatingValue.Positive);
            modView.rateNegativeRequested += (v) => ModBrowser.instance.AttemptRateMod(v.data.profile.modId, ModRatingValue.Negative);

            ModMediaContainer mediaContainer = modView.mediaContainer as ModMediaContainer;

            if (selectedMediaPreview != null)
            {
                selectedMediaPreview.Initialize();
                selectedMediaPreview.onClick += (d) =>
                {
                    if (d.data.descriptor == ImageDescriptor.YouTubeThumbnail)
                    {
                        UIUtilities.OpenYouTubeVideoURL(d.data.youTubeId);
                    }
                };

                if (mediaContainer != null)
                {
                    mediaContainer.logoClicked             += MediaPreview_Logo;
                    mediaContainer.galleryImageClicked     += MediaPreview_GalleryImage;
                    mediaContainer.youTubeThumbnailClicked += MediaPreview_YouTubeThumbnail;
                }
            }

            if ((versionHistoryContainer != null && versionHistoryItemPrefab == null) ||
                (versionHistoryItemPrefab != null && versionHistoryContainer == null))
            {
                Debug.LogWarning("[mod.io] In order to display a version history both the "
                                 + "versionHistoryItemPrefab and versionHistoryContainer variables must "
                                 + "be set for the InspectorView.", this);
            }

            Debug.Assert(!(versionHistoryItemPrefab != null && versionHistoryItemPrefab.GetComponent <ModfileDisplayComponent>() == null),
                         "[mod.io] The versionHistoryItemPrefab requires a ModfileDisplayComponent on the root Game Object.");

            this.m_isInitialized = true;
            Refresh();
        }
        private ImageDisplay InstantiatePrefab(GameObject imagePrefab)
        {
            Debug.Assert(imagePrefab != null);

            GameObject   media_go     = GameObject.Instantiate(imagePrefab, container);
            ImageDisplay mediaDisplay = media_go.GetComponent <ImageDisplay>();

            mediaDisplay.Initialize();

            return(mediaDisplay);
        }
        // ---------[ INITIALIZATION ]---------
        public void Initialize()
        {
            if (profileDisplay != null)
            {
                profileDisplay.Initialize();
            }

            if (avatarDisplay != null)
            {
                avatarDisplay.Initialize();
            }
        }
        // ---------[ INITIALIZATION ]---------
        public void Initialize()
        {
            // TODO(@jackson): Asserts
            ModMediaContainer mediaContainer = null;

            if (modView != null)
            {
                modView.Initialize();

                if (modView.statisticsDisplay != null)
                {
                    modView.statisticsDisplay.Initialize();
                }

                mediaContainer = modView.mediaContainer as ModMediaContainer;
            }

            if (selectedMediaPreview != null)
            {
                selectedMediaPreview.Initialize();
                selectedMediaPreview.onClick += (d) =>
                {
                    if (d.data.mediaType == ImageDisplayData.MediaType.YouTubeThumbnail)
                    {
                        UIUtilities.OpenYouTubeVideoURL(d.data.youTubeId);
                    }
                };

                if (mediaContainer != null)
                {
                    mediaContainer.logoClicked             += MediaPreview_Logo;
                    mediaContainer.galleryImageClicked     += MediaPreview_GalleryImage;
                    mediaContainer.youTubeThumbnailClicked += MediaPreview_YouTubeThumbnail;
                }
            }

            if ((versionHistoryContainer != null && versionHistoryItemPrefab == null) ||
                (versionHistoryItemPrefab != null && versionHistoryContainer == null))
            {
                Debug.LogWarning("[mod.io] In order to display a version history both the "
                                 + "versionHistoryItemPrefab and versionHistoryContainer variables must "
                                 + "be set for the InspectorView.", this);
            }

            Debug.Assert(!(versionHistoryItemPrefab != null && versionHistoryItemPrefab.GetComponent <ModfileDisplayComponent>() == null),
                         "[mod.io] The versionHistoryItemPrefab requires a ModfileDisplayComponent on the root Game Object.");
        }
        private void CollectDelegates()
        {
            m_getDelegates          = new List <GetDataDelegate>();
            m_setDelegates          = new List <SetDataDelegate>();
            m_displayDelegates      = new List <DisplayProfileDelegate>();
            m_missingDisplayParsers = new List <ProfileParserDelegate>();
            m_loadingDelegates      = new List <DisplayLoadingDelegate>();

            // - profile -
            if (profileDisplay != null)
            {
                profileDisplay.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.profile = profileDisplay.data;
                });
                m_setDelegates.Add((d) =>
                {
                    profileDisplay.data = d.profile;
                });

                m_displayDelegates.Add((p) => profileDisplay.DisplayProfile(p));
                m_loadingDelegates.Add(() => profileDisplay.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add((ModProfile p, ref ModDisplayData d) =>
                {
                    d.profile = ModProfileDisplayData.CreateFromProfile(p);
                });
            }

            // - media -
            if (mediaContainer != null)
            {
                mediaContainer.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.logo = mediaContainer.logoData;
                    d.youTubeThumbnails = mediaContainer.youTubeData.ToArray();
                    d.galleryImages     = mediaContainer.galleryData.ToArray();
                });
                m_setDelegates.Add((d) =>
                {
                    mediaContainer.logoData    = d.logo;
                    mediaContainer.youTubeData = d.youTubeThumbnails;
                    mediaContainer.galleryData = d.galleryImages;
                });

                m_displayDelegates.Add((p) => mediaContainer.DisplayMedia(p));
                m_loadingDelegates.Add(() => mediaContainer.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add(ParseProfileMedia);
            }

            // - logo -
            // NOTE(@jackson): Logo Data overrides Media Container Logo Data
            if (logoDisplay != null)
            {
                logoDisplay.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.logo = logoDisplay.data;
                });
                m_setDelegates.Add((d) =>
                {
                    logoDisplay.data = d.logo;
                });

                m_displayDelegates.Add((p) => logoDisplay.DisplayLogo(p.id, p.logoLocator));
                m_loadingDelegates.Add(() => logoDisplay.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add((ModProfile p, ref ModDisplayData d) =>
                {
                    ImageDisplayData logoData;
                    if (p.logoLocator != null)
                    {
                        logoData = ImageDisplayData.CreateForModLogo(p.id, p.logoLocator);
                    }
                    else
                    {
                        logoData = new ImageDisplayData();
                    }

                    d.logo = logoData;
                });
            }

            // - submittor -
            if (submittorDisplay.profile != null)
            {
                submittorDisplay.profile.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.submittorProfile = submittorDisplay.profile.data;
                });
                m_setDelegates.Add((d) =>
                {
                    submittorDisplay.profile.data = d.submittorProfile;
                });

                m_displayDelegates.Add((p) => submittorDisplay.profile.DisplayProfile(p.submittedBy));
                m_loadingDelegates.Add(() => submittorDisplay.profile.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add((ModProfile p, ref ModDisplayData d) =>
                {
                    d.submittorProfile = UserProfileDisplayData.CreateFromProfile(p.submittedBy);
                });
            }

            if (submittorDisplay.avatar != null)
            {
                submittorDisplay.avatar.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.submittorAvatar = submittorDisplay.avatar.data;
                });
                m_setDelegates.Add((d) =>
                {
                    submittorDisplay.avatar.data = d.submittorAvatar;
                });

                m_displayDelegates.Add((p) => submittorDisplay.avatar.DisplayAvatar(p.submittedBy.id,
                                                                                    p.submittedBy.avatarLocator));
                m_loadingDelegates.Add(() => submittorDisplay.avatar.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add((ModProfile p, ref ModDisplayData d) =>
                {
                    ImageDisplayData avatarData;
                    if (p.submittedBy != null &&
                        p.submittedBy.avatarLocator != null)
                    {
                        avatarData = ImageDisplayData.CreateForUserAvatar(p.submittedBy.id,
                                                                          p.submittedBy.avatarLocator);
                    }
                    else
                    {
                        avatarData = new ImageDisplayData();
                    }

                    d.submittorAvatar = avatarData;
                });
            }

            // - build -
            if (buildDisplay != null)
            {
                buildDisplay.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.currentBuild = buildDisplay.data;
                });
                m_setDelegates.Add((d) =>
                {
                    buildDisplay.data = d.currentBuild;
                });

                m_displayDelegates.Add((p) => buildDisplay.DisplayModfile(p.currentBuild));
                m_loadingDelegates.Add(() => buildDisplay.DisplayLoading());
            }
            else
            {
                m_missingDisplayParsers.Add((ModProfile p, ref ModDisplayData d) =>
                {
                    d.currentBuild = ModfileDisplayData.CreateFromModfile(p.currentBuild);
                });
            }

            // - tags -
            // NOTE(@jackson): tags has no display/missing parse delegate as it requires categories
            if (tagsDisplay != null)
            {
                tagsDisplay.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.tags = tagsDisplay.data.ToArray();
                });
                m_setDelegates.Add((d) =>
                {
                    tagsDisplay.data = d.tags;
                });

                m_loadingDelegates.Add(() => tagsDisplay.DisplayLoading());
            }

            // - stats -
            if (statisticsDisplay != null)
            {
                statisticsDisplay.Initialize();

                m_getDelegates.Add((ref ModDisplayData d) =>
                {
                    d.statistics = statisticsDisplay.data;
                });
                m_setDelegates.Add((d) =>
                {
                    statisticsDisplay.data = d.statistics;
                });

                m_loadingDelegates.Add(() => statisticsDisplay.DisplayLoading());
            }

            // - download -
            if (downloadDisplay != null)
            {
                downloadDisplay.Initialize();

                // m_getDelegates.Add((ref ModDisplayData d) =>
                // {
                //     d.submittedBy = creatorView.data;
                // });
                // m_setDelegates.Add((d) =>
                // {
                //     creatorView.data = d.submittedBy;
                // });
            }
        }