private void OnDeserialized(StreamingContext context) { if (this._apiRatingValue == null) { return; } this.ratingValue = ModRating.ConvertIntToEnum((int)this._apiRatingValue); }
public void OnModRatingAdded(int modId, ModRatingValue rating) { if (this.m_isInitialized && this.m_modId == modId) { ModDisplayData data = this.modView.data; data.userRating = rating; this.modView.data = data; } }
public void DisplayMod(ModProfile profile, ModStatistics statistics, IEnumerable <ModTagCategory> tagCategories, bool isSubscribed, bool isModEnabled, ModRatingValue userRating = ModRatingValue.None) { this.profile = profile; this.statistics = statistics; }
public void OnModRatingAdded(int modId, ModRatingValue rating) { foreach (ModView view in this.modViews) { if (view.data.profile.modId == modId) { ModDisplayData data = view.data; data.userRating = rating; view.data = data; } } }
// ---------[ EVENTS ]--------- /// <summary>IModRatingAddedReceiver interface</summary> public void OnModRatingAdded(int modId, ModRatingValue rating) { if(modId == this.m_modId) { // display if(this.positiveRatingDisplay != null) { this.positiveRatingDisplay.isOn = (rating == ModRatingValue.Positive); } if(this.negativeRatingDisplay != null) { this.negativeRatingDisplay.isOn = (rating == ModRatingValue.Negative); } } }
/// <summary>Displays the subscribed state of a mod.</summary> public void DisplayModRating(int modId) { this.m_modId = modId; // display ModRatingValue rating = ModBrowser.instance.GetModRating(modId); if(this.positiveRatingDisplay != null) { this.positiveRatingDisplay.isOn = (rating == ModRatingValue.Positive); } if(this.negativeRatingDisplay != null) { this.negativeRatingDisplay.isOn = (rating == ModRatingValue.Negative); } }
/// <summary>Converts a rating value enum to the API integer value.</summary> public static int ConvertEnumToInt(ModRatingValue valueEnum) { switch (valueEnum) { case ModRatingValue.Negative: { return(ModRating.APIOBJECT_VALUEINT_NEGATIVERATING); } case ModRatingValue.Positive: { return(ModRating.APIOBJECT_VALUEINT_POSITIVERATING); } default: { return(0); } } }
/// <summary>Converts a rating value enum to the API integer value.</summary> public static int ConvertEnumToInt(ModRatingValue valueEnum) { switch (valueEnum) { case ModRatingValue.Negative: { return(AddModRatingParameters.APIVALUE_NEGATIVERATING); } case ModRatingValue.Positive: { return(AddModRatingParameters.APIVALUE_POSITIVERATING); } default: { return(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); } }
// ---------[ 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); } }
public void DisplayMod(ModProfile profile, ModStatistics statistics, IEnumerable <ModTagCategory> tagCategories, bool isSubscribed, bool isModEnabled, ModRatingValue userRating = ModRatingValue.None) { Debug.Assert(profile != null); if (this.m_displayDelegates == null) { CollectDelegates(); } m_data = new ModDisplayData(); foreach (DisplayProfileDelegate displayDelegate in m_displayDelegates) { displayDelegate(profile); } foreach (ProfileParserDelegate parserDelegate in m_missingDisplayParsers) { parserDelegate(profile, ref m_data); } // - tags - if (tagsDisplay != null) { tagsDisplay.DisplayTags(profile, tagCategories); } else { m_data.tags = ModTagDisplayData.GenerateArray(profile.tagNames, tagCategories); } // - stats - ModStatisticsDisplayData statsData; if (statistics == null) { statsData = new ModStatisticsDisplayData() { modId = profile.id, }; } else { statsData = ModStatisticsDisplayData.CreateFromStatistics(statistics); } if (statisticsDisplay != null) { statisticsDisplay.data = statsData; } else { m_data.statistics = statsData; } // - download - FileDownloadInfo downloadInfo = DownloadClient.GetActiveModBinaryDownload(m_data.profile.modId, m_data.currentBuild.modfileId); DisplayDownload(downloadInfo); // - subscribed - if (subscriptionDisplay != null) { subscriptionDisplay.isOn = isSubscribed; } m_data.isSubscribed = isSubscribed; // - enabled - if (modEnabledDisplay != null) { modEnabledDisplay.isOn = isModEnabled; } m_data.isModEnabled = isModEnabled; // - rating - if (userRatingDisplay.positive != null) { userRatingDisplay.positive.isOn = (userRating == ModRatingValue.Positive); } if (userRatingDisplay.negative != null) { userRatingDisplay.negative.isOn = (userRating == ModRatingValue.Negative); } m_data.userRating = userRating; #if UNITY_EDITOR if (Application.isPlaying) { // updates for inspection convenience GetData(); } #endif }