Revision Difference
Listing_Workshop_Items#523919
<cat>code.workshop</cat>⤶
<title>Listing Workshop Items</title>⤶
⤶
At some point you'll probably want to grab a list of workshop items to show to your players. This could be anything from addons, maps, screenshots, saved games, demo files etc. Valve don't specify what they upload - you do.⤶
⤶
⤶
# Queries⤶
⤶
I've tried to make things easy and hopefully as a c# user it'll seem familar.⤶
⤶
The following queries screenshots that have been created by your friends.⤶
⤶
```⤶
var q = Ugc.Query.Screenshots.CreatedByFriends();⤶
```⤶
⤶
This is the same except they're sorted by creation date⤶
⤶
```⤶
var q = Ugc.Query.Screenshots⤶
.CreatedByFriends()⤶
.SortByCreationDate();⤶
```⤶
⤶
This is the same except tagged "funny"⤶
⤶
```⤶
var q = Ugc.Query.Screenshots⤶
.CreatedByFriends()⤶
.WithTag( "funny" )⤶
.SortByCreationDate();⤶
```⤶
⤶
⤶
# Item Types⤶
⤶
The types correspond to the enum [EUGCMatchingUGCType](https://partner.steamgames.com/doc/api/ISteamUGC#EUGCMatchingUGCType). Valve does a good job of explaining the categories there.⤶
⤶
So you can search all items with ak47 in the title/description like:⤶
⤶
```⤶
var q = Ugc.Query.Items⤶
.WhereSearchText( "ak47" )⤶
.RankedByTextSearch();⤶
```⤶
⤶
⤶
# Conditional⤶
⤶
The query doesn't have to be created on one line⤶
⤶
```⤶
var q = Ugc.Query.Items⤶
.WithTag( "funny" );⤶
⤶
if ( order )⤶
q = q.SortByCreationDate();⤶
else ⤶
q = q.SortByCreationDateAsc()⤶
```⤶
⤶
⤶
# Pages⤶
⤶
Results are returned in pages. And the page number starts at 1.⤶
⤶
```⤶
var page = await q.GetPageAsync( 1 );⤶
⤶
if ( page.HasValue )⤶
{⤶
Log( $"This page has {page.Value.ResultCount}" );⤶
⤶
foreach ( Ugc.Item entry in page.Value.Entries )⤶
{⤶
Log( $"Entry: {entry.Title}" );⤶
}⤶
}⤶
```⤶
⤶