// ---------[ UPDATE VIEW ]--------- public void DisplayMod(ModProfile profile, ModStatistics statistics, IEnumerable <ModTagCategory> tagCategories, bool isModSubscribed, bool isModEnabled) { // TODO(@jackson): Remove if (profile == null) { return; } this.profile = profile; this.statistics = statistics; this.isModSubscribed = isModSubscribed; this.isModEnabled = isModEnabled; if (modView != null) { modView.DisplayMod(profile, statistics, tagCategories, isModSubscribed, isModEnabled); if (modView.mediaContainer != null) { ModMediaCollection media = profile.media; bool hasMedia = media != null; hasMedia &= ((media.youTubeURLs != null && media.youTubeURLs.Length > 0) || (media.galleryImageLocators != null && media.galleryImageLocators.Length > 0)); modView.mediaContainer.gameObject.SetActive(hasMedia); } } if (selectedMediaPreview != null) { selectedMediaPreview.DisplayLogo(profile.id, profile.logoLocator); } // - version history - if (versionHistoryContainer != null && versionHistoryItemPrefab != null) { foreach (Transform t in versionHistoryContainer) { GameObject.Destroy(t.gameObject); } RequestFilter modfileFilter = new RequestFilter(); modfileFilter.sortFieldName = ModIO.API.GetAllModfilesFilterFields.dateAdded; modfileFilter.isSortAscending = false; APIClient.GetAllModfiles(profile.id, modfileFilter, new APIPaginationParameters() { limit = 20 }, (r) => PopulateVersionHistory(profile.id, r.items), WebRequestError.LogAsWarning); } }
// ---------[ UPDATE VIEW ]--------- public void Refresh() { Debug.Assert(this.m_isInitialized); Debug.Assert(this.modView != null); ModProfile profile = null; ModStatistics stats = null; // set initial values this.SetLoadingDisplay(true); this.modView.DisplayLoading(); if (this.selectedMediaPreview != null) { this.selectedMediaPreview.DisplayLoading(); } // early out if NULL_ID if (this.m_modId == ModProfile.NULL_ID) { return; } // delegate for pushing changes to mod view Action pushToView = () => { bool isModSubscribed = ModManager.GetSubscribedModIds().Contains(this.m_modId); bool isModEnabled = ModManager.GetEnabledModIds().Contains(this.m_modId); ModRatingValue rating = ModBrowser.instance.GetModRating(this.m_modId); if (profile != null) { modView.DisplayMod(profile, stats, this.m_tagCategories, isModSubscribed, isModEnabled, rating); // media container if (modView.mediaContainer != null) { ModMediaCollection media = profile.media; bool hasMedia = media != null; hasMedia &= ((media.youTubeURLs != null && media.youTubeURLs.Length > 0) || (media.galleryImageLocators != null && media.galleryImageLocators.Length > 0)); modView.mediaContainer.gameObject.SetActive(hasMedia); } // media preview if (selectedMediaPreview != null) { selectedMediaPreview.DisplayLogo(profile.id, profile.logoLocator); } } }; // profile ModProfileRequestManager.instance.RequestModProfile(this.m_modId, (p) => { if (this == null) { return; } this.SetLoadingDisplay(false); profile = p; pushToView(); }, WebRequestError.LogAsWarning); // statistics ModStatisticsRequestManager.instance.RequestModStatistics(this.m_modId, (s) => { if (this == null) { return; } stats = s; pushToView(); }, WebRequestError.LogAsWarning); // version history if (versionHistoryContainer != null && versionHistoryItemPrefab != null) { RequestFilter modfileFilter = new RequestFilter(); modfileFilter.sortFieldName = ModIO.API.GetAllModfilesFilterFields.dateAdded; modfileFilter.isSortAscending = false; APIClient.GetAllModfiles(this.m_modId, modfileFilter, new APIPaginationParameters() { limit = 10 }, (r) => { this.m_versionHistory = r.items; PopulateVersionHistory(); }, WebRequestError.LogAsWarning); } }
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; // }); } }