Added ugc addtional previews

This commit is contained in:
kamyker 2020-08-28 13:10:57 +02:00
parent 11bc35f254
commit 0d9db585f5
5 changed files with 72 additions and 1 deletions

View File

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Steamworks.Data
{
public struct UgcAdditionalPreview
{
internal UgcAdditionalPreview( string urlOrVideoID, string originalFileName, ItemPreviewType itemPreviewType )
{
this.UrlOrVideoID = urlOrVideoID;
this.OriginalFileName = originalFileName;
this.ItemPreviewType = itemPreviewType;
}
public string UrlOrVideoID { get; private set; }
public string OriginalFileName { get; private set; }
internal ItemPreviewType ItemPreviewType { get; private set; }
/// <summary>
/// Flags that specify the type of preview an item has:
/// Image = 0,
/// YouTubeVideo = 1,
/// Sketchfab = 2,
/// EnvironmentMap_HorizontalCross = 3,
/// EnvironmentMap_LatLong = 4,
/// ReservedMax = 255
/// </summary>
public int GetItemPreviewType() => (int)ItemPreviewType;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 48f086235d5dbeb44bccbb40802e30fb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -113,6 +113,11 @@ public Item( PublishedFileId id ) : this()
/// </summary> /// </summary>
public PublishedFileId[] Children; public PublishedFileId[] Children;
/// <summary>
/// Additional previews of this item or collection, available only from WithAdditionalPreviews(true) queries
/// </summary>
public UgcAdditionalPreview[] AdditionalPreviews { get; internal set; }
public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed; public bool IsInstalled => (State & ItemState.Installed) == ItemState.Installed;
public bool IsDownloading => (State & ItemState.Downloading) == ItemState.Downloading; public bool IsDownloading => (State & ItemState.Downloading) == ItemState.Downloading;
public bool IsDownloadPending => (State & ItemState.DownloadPending) == ItemState.DownloadPending; public bool IsDownloadPending => (State & ItemState.DownloadPending) == ItemState.DownloadPending;

View File

@ -153,6 +153,7 @@ public Query WithFileId( params PublishedFileId[] files )
ReturnsDefaultStats = WantsDefaultStats ?? true, //true by default ReturnsDefaultStats = WantsDefaultStats ?? true, //true by default
ReturnsMetadata = WantsReturnMetadata ?? false, ReturnsMetadata = WantsReturnMetadata ?? false,
ReturnsChildren = WantsReturnChildren ?? false, ReturnsChildren = WantsReturnChildren ?? false,
ReturnsAdditionalPreviews = WantsReturnAdditionalPreviews ?? false,
}; };
} }

View File

@ -16,6 +16,7 @@ public struct ResultPage : System.IDisposable
internal bool ReturnsDefaultStats; internal bool ReturnsDefaultStats;
internal bool ReturnsMetadata; internal bool ReturnsMetadata;
internal bool ReturnsChildren; internal bool ReturnsChildren;
internal bool ReturnsAdditionalPreviews;
public IEnumerable<Item> Entries public IEnumerable<Item> Entries
{ {
@ -83,7 +84,27 @@ public IEnumerable<Item> Entries
item.Children = children; item.Children = children;
} }
} }
// TODO GetQueryUGCAdditionalPreview
if ( ReturnsAdditionalPreviews )
{
var previewsCount = SteamUGC.Internal.GetQueryUGCNumAdditionalPreviews( Handle, i );
if ( previewsCount > 0 )
{
item.AdditionalPreviews = new UgcAdditionalPreview[previewsCount];
for ( uint j = 0; j < previewsCount; j++ )
{
string previewUrlOrVideo;
string originalFileName; //what is this???
ItemPreviewType previewType = default;
if ( SteamUGC.Internal.GetQueryUGCAdditionalPreview(
Handle, i, j, out previewUrlOrVideo, out originalFileName, ref previewType ) )
{
item.AdditionalPreviews[j] = new UgcAdditionalPreview(
previewUrlOrVideo, originalFileName, previewType );
}
}
}
}
yield return item; yield return item;
} }