From 0b3db0284300a91e2a7c7153760780c9a4ed7377 Mon Sep 17 00:00:00 2001 From: Garry Newman Date: Thu, 13 Oct 2016 10:31:42 +0100 Subject: [PATCH] Workshop item stats --- Facepunch.Steamworks.Test/Client/Workshop.cs | 4 ++- .../Interfaces/Workshop.Item.cs | 6 +++++ .../Interfaces/Workshop.Query.cs | 27 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Facepunch.Steamworks.Test/Client/Workshop.cs b/Facepunch.Steamworks.Test/Client/Workshop.cs index 1e4c891..f6ab7c9 100644 --- a/Facepunch.Steamworks.Test/Client/Workshop.cs +++ b/Facepunch.Steamworks.Test/Client/Workshop.cs @@ -39,7 +39,7 @@ namespace Facepunch.Steamworks.Test Query.Order = Workshop.Order.RankedByTextSearch; Query.QueryType = Workshop.QueryType.MicrotransactionItems; - Query.SearchText = "shit"; + Query.SearchText = "black"; Query.RequireTags.Add( "LongTShirt Skin" ); Query.Run(); @@ -56,6 +56,8 @@ namespace Facepunch.Steamworks.Test foreach ( var item in Query.Items ) { Console.WriteLine( "{0}", item.Title ); + Console.WriteLine( "\t WebsiteViews: {0}", item.WebsiteViews ); + Console.WriteLine( "\t VotesUp: {0}", item.VotesUp ); } } } diff --git a/Facepunch.Steamworks/Interfaces/Workshop.Item.cs b/Facepunch.Steamworks/Interfaces/Workshop.Item.cs index f276509..5ec51c1 100644 --- a/Facepunch.Steamworks/Interfaces/Workshop.Item.cs +++ b/Facepunch.Steamworks/Interfaces/Workshop.Item.cs @@ -177,6 +177,12 @@ namespace Facepunch.Steamworks public string DiscussUrl { get { return string.Format( "http://steamcommunity.com/sharedfiles/filedetails/discussions/{0}", Id ); } } public string StartsUrl { get { return string.Format( "http://steamcommunity.com/sharedfiles/filedetails/stats/{0}", Id ); } } + + public int SubscriptionCount { get; internal set; } + public int FavouriteCount { get; internal set; } + public int FollowerCount { get; internal set; } + public int WebsiteViews { get; internal set; } + public int ReportScore { get; internal set; } } } } diff --git a/Facepunch.Steamworks/Interfaces/Workshop.Query.cs b/Facepunch.Steamworks/Interfaces/Workshop.Query.cs index 11d40da..6c5dcad 100644 --- a/Facepunch.Steamworks/Interfaces/Workshop.Query.cs +++ b/Facepunch.Steamworks/Interfaces/Workshop.Query.cs @@ -102,6 +102,12 @@ namespace Facepunch.Steamworks workshop.ugc.GetQueryUGCResult( data.Handle, (uint)i, ref details ); Items[i] = Item.From( details, workshop ); + + Items[i].SubscriptionCount = GetStat( data.Handle, i, ItemStatistic.NumSubscriptions ); + Items[i].FavouriteCount = GetStat( data.Handle, i, ItemStatistic.NumFavorites ); + Items[i].FollowerCount = GetStat( data.Handle, i, ItemStatistic.NumFollowers ); + Items[i].WebsiteViews = GetStat( data.Handle, i, ItemStatistic.NumUniqueWebsiteViews ); + Items[i].ReportScore = GetStat( data.Handle, i, ItemStatistic.ReportScore ); } TotalResults = (int)data.TotalMatchingResults; @@ -110,6 +116,15 @@ namespace Facepunch.Steamworks Callback = null; } + private int GetStat( ulong handle, int index, ItemStatistic stat ) + { + uint val = 0; + if ( !workshop.ugc.GetQueryUGCStatistic( handle, (uint)index, (uint)stat, ref val ) ) + return 0; + + return (int) val; + } + public bool IsRunning { get { return Callback != null; } @@ -155,5 +170,17 @@ namespace Facepunch.Steamworks // ReleaseQueryUGCRequest } } + + private enum ItemStatistic : uint + { + NumSubscriptions = 0, + NumFavorites = 1, + NumFollowers = 2, + NumUniqueSubscriptions = 3, + NumUniqueFavorites = 4, + NumUniqueFollowers = 5, + NumUniqueWebsiteViews = 6, + ReportScore = 7, + }; } }