diff --git a/Facepunch.Steamworks/Structs/UgcItem.cs b/Facepunch.Steamworks/Structs/UgcItem.cs
index cb89ee8..aa28967 100644
--- a/Facepunch.Steamworks/Structs/UgcItem.cs
+++ b/Facepunch.Steamworks/Structs/UgcItem.cs
@@ -93,7 +93,17 @@ public Item( PublishedFileId id ) : this()
///
public bool IsAcceptedForUse => details.AcceptedForUse;
- public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed;
+ ///
+ /// The number of upvotes of this item
+ ///
+ public uint VotesUp => details.VotesUp;
+
+ ///
+ /// The number of downvotes of this item
+ ///
+ public uint VotesDown => details.VotesDown;
+
+ public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed;
public bool IsDownloading => (State & ItemState.Downloading) == ItemState.Downloading;
public bool IsDownloadPending => (State & ItemState.DownloadPending) == ItemState.DownloadPending;
public bool IsSubscribed => (State & ItemState.Subscribed) == ItemState.Subscribed;
@@ -122,7 +132,7 @@ public bool Download( bool highPriority = false )
return SteamUGC.Internal.DownloadItem( Id, highPriority );
}
- private ItemState State => (ItemState) SteamUGC.Internal.GetItemState( Id );
+ private ItemState State => (ItemState) SteamUGC.Internal.GetItemState( Id );
public static async Task- GetAsync( PublishedFileId id, int maxageseconds = 60 * 30 )
{
@@ -156,10 +166,26 @@ public bool HasTag( string find )
return Tags.Contains( find, StringComparer.OrdinalIgnoreCase );
}
- ///
- /// Allows the user to rate a workshop item up or down.
- ///
- public async Task Vote( bool up )
+ ///
+ /// Allows the user to subscribe to this item
+ ///
+ public async Task Subscribe ()
+ {
+ var result = await SteamUGC.Internal.SubscribeItem( _id );
+ return result?.Result == Result.OK;
+ }
+
+ ///
+ /// Allows the user to unsubscribe from this item
+ ///
+ public async Task Unsubscribe ()
+ {
+ }
+
+ ///
+ /// Allows the user to rate a workshop item up or down.
+ ///
+ public async Task Vote( bool up )
{
var r = await SteamUGC.Internal.SetUserItemVote( Id, up );
return r?.Result == Result.OK;
@@ -204,10 +230,10 @@ public async Task Vote( bool up )
public ulong NumSecondsPlayedDuringTimePeriod { get; internal set; }
public ulong NumPlaytimeSessionsDuringTimePeriod { get; internal set; }
- ///
- /// The URL to the preview image for this item
- ///
- public string PreviewImageUrl { get; internal set; }
+ ///
+ /// The URL to the preview image for this item
+ ///
+ public string PreviewImageUrl { get; internal set; }
///
/// Edit this item
diff --git a/Facepunch.Steamworks/Structs/UgcQuery.cs b/Facepunch.Steamworks/Structs/UgcQuery.cs
index 4302b55..e69ef1c 100644
--- a/Facepunch.Steamworks/Structs/UgcQuery.cs
+++ b/Facepunch.Steamworks/Structs/UgcQuery.cs
@@ -14,6 +14,7 @@ public struct Query
UGCQuery queryType;
AppId consumerApp;
AppId creatorApp;
+ string searchText;
public Query( UgcType type ) : this()
{
@@ -90,6 +91,8 @@ internal Query LimitUser( SteamId steamid )
public Query SortByVoteScore() { userSort = UserUGCListSortOrder.VoteScoreDesc; return this; }
public Query SortByModeration() { userSort = UserUGCListSortOrder.ForModeration; return this; }
+ public Query WhereSearchText(string searchText) { this.searchText = searchText; return this; }
+
#endregion
#region Files
@@ -227,6 +230,11 @@ void ApplyConstraints( UGCQueryHandle_t handle )
{
SteamUGC.Internal.SetRankedByTrendDays( handle, (uint)trendDays.Value );
}
+
+ if ( !string.IsNullOrEmpty( searchText ) )
+ {
+ SteamUGC.Internal.SetSearchText( handle, searchText );
+ }
}
#endregion