first commit
This commit is contained in:
957
Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h
Normal file
957
Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h
Normal file
@@ -0,0 +1,957 @@
|
||||
/********************************************************
|
||||
* *
|
||||
* Copyright (C) Microsoft. All rights reserved. *
|
||||
* *
|
||||
********************************************************/
|
||||
|
||||
// Sentient Client UGC API
|
||||
//
|
||||
// Include this to get access to all UGC related Sentient features
|
||||
|
||||
#pragma once
|
||||
|
||||
// Local headers
|
||||
#include "SenClientMarkers.h"
|
||||
#include "SenClientUGCLeaderboards.h"
|
||||
#include "SenClientUGCTypes.h"
|
||||
|
||||
// Sentient headers
|
||||
#include "SenClientSys.h"
|
||||
#include "SenClientCulture.h"
|
||||
|
||||
namespace Sentient
|
||||
{
|
||||
/**********************************
|
||||
***** UGC Creation Functions *****
|
||||
**********************************/
|
||||
|
||||
/// @brief Generate a unique ID that will be used to
|
||||
/// identify a given instance of UGC. This ID
|
||||
/// will is referenced by every other UGC function.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[out] outResult
|
||||
/// The unique ID that has been generated and provisioned
|
||||
/// for an instance of UGC.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @param[in] userCallbackData
|
||||
/// Data to be passed to the @a userCallback on completion.
|
||||
///
|
||||
/// @return TBD
|
||||
///
|
||||
/// @details All UGC functions require a uniquely provisioned UGC ID.
|
||||
///
|
||||
/// @related All UGC related functions.
|
||||
HRESULT SenUGCCreatePublishingUGCID(
|
||||
int userIndex,
|
||||
SenUGCID *outResult,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
///
|
||||
/// @brief Async output information for SenUGCUpload or Download callers
|
||||
///
|
||||
/// @details Contains progress or retry information in addition to a cancellation token
|
||||
///
|
||||
struct SenUGCProgressInfo
|
||||
{
|
||||
SenHandle out_taskHandle; /// token for canceling the upload process
|
||||
INT8 percentageComplete; /// 1-100, how much percent is complete of upload process for blob
|
||||
size_t bytesCompleted; /// how many bytes have been successfully transmitted for the task
|
||||
HRESULT lastStepResult; /// sentient client SDK HRESULT value
|
||||
int numRetries; /// does not reset between internal steps for a long-running task
|
||||
};
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCUpload
|
||||
// FullName: Sentient::SenUGCUpload
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: const SenUGCMetaData * metaData
|
||||
// Parameter: int nrMainDataBlobs
|
||||
// Parameter: const void * * mainDataBlobs
|
||||
// Parameter: const size_t * mainDataBlobSizes
|
||||
// Parameter: bool pushToFeed
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Upload the metadata, as well as one or more binary data blobs to the server.
|
||||
// There are multiple data blobs supported (the exact number is defined in
|
||||
// SenUGCMainData_NrBlobs). One use would be that a game may want store a
|
||||
// preview thumbnail that can be downloaded without having to download the
|
||||
// rest of the UGC. This could save bandwidth and make the game more responsive.
|
||||
// Note: data blob 0 should be the main level data blob, for the automatic
|
||||
// download counter to work.
|
||||
// The metadata will also have a data blob associated, but this should be
|
||||
// kept to a minimum, as UGC download menus will probably want to download
|
||||
// metadata for a lot of UGCs at once.
|
||||
// Note: if a level has been uploaded with main data before, and the creator
|
||||
// wants to just modify the metadata, they can upload the metadata with the
|
||||
// maindatablobs being NULL.
|
||||
// NOTE: for large items, use the SenUGCUploadMainData method with the SenUGCProgressInfo
|
||||
// signature so you can get the running progress and a cancellation token
|
||||
// to abort the upload (allowing UI for the user, etc)
|
||||
//************************************
|
||||
HRESULT SenUGCUpload(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
const SenUGCMetaData *metaData,
|
||||
int nrMainDataBlobs,
|
||||
const void **mainDataBlobs,
|
||||
const size_t *mainDataBlobSizes,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCUploadMetadata
|
||||
// FullName: Sentient::SenUGCUploadMetadata
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: const SenUGCMetaData * metaData
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Upload the metadata and one binary data blob to the server.
|
||||
// NOTE: data blob at index 0 should be the main level data blob, for the automatic
|
||||
// download counter to work.
|
||||
// The metadata will also have a data blob associated, but this should be
|
||||
// kept to a minimum, as UGC download menus will probably want to download
|
||||
// metadata for a lot of UGCs at once.
|
||||
// NOTE: If a creator uploads metadata again, it will overwrite the previous
|
||||
// stored blob with the new one.
|
||||
//************************************
|
||||
HRESULT SenUGCUploadMetadata(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
const SenUGCMetaData* metaData,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData);
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCUploadMainData
|
||||
// FullName: Sentient::SenUGCUploadMainData
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: int mainDataBlobIndex
|
||||
// Parameter: const void * mainDataBlob
|
||||
// Parameter: const size_t mainDataBlobSize
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Parameter: SenUGCProcessInfo* out_ugcUploadInfo
|
||||
// Upload one binary data blob to the server.
|
||||
// This SenUGCUpload method with the SenUGCProcessInfo signature is so you
|
||||
// can get the progress percentage and a cancellation token, which can
|
||||
// be used to abort the upload. This is useful for large uploads where
|
||||
// you may want to allow the user to cancel.
|
||||
// NOTE: This call is asynchronous ONLY and will error for synchronous
|
||||
// attempts with a NULL param for userCallback.
|
||||
// There are multiple data blobs supported (the exact number is defined in
|
||||
// SenUGCMainData_NrBlobs) on subsequent calls. Slot zero is to be used by a
|
||||
// game to store a preview thumbnail, which can then be downloaded without
|
||||
// having to download the rest of the UGC. This could save bandwidth and
|
||||
// make the game more responsive.
|
||||
// NOTE: data blob at index 0 should be the main level data blob, for the automatic
|
||||
// download counter to work.
|
||||
// The metadata will also have a data blob associated, but this should be
|
||||
// kept to a minimum, as UGC download menus will probably want to download
|
||||
// metadata for a lot of UGCs at once.
|
||||
// NOTE: if a level has been uploaded with main data before, and the creator
|
||||
// wants to just modify the metadata, they can upload the metadata with the
|
||||
// main data blob being NULL.
|
||||
// NOTE: If a creator uploads a data blob again, it will overwrite the previous
|
||||
// stored blob with the new one.
|
||||
//************************************
|
||||
HRESULT SenUGCUploadMainDataBlob(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
int mainDataBlobIndex,
|
||||
const void* mainDataBlob,
|
||||
const size_t mainDataBlobSize,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData,
|
||||
SenUGCProgressInfo* out_progressInfo);
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCDelete
|
||||
// FullName: Sentient::SenUGCDelete
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Delete the UGC - only the user that created the UGC can delete it.
|
||||
//************************************
|
||||
HRESULT SenUGCDelete(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
/*************************************
|
||||
***** UGC Consumption Functions *****
|
||||
*************************************/
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCEnumerate
|
||||
// FullName: Sentient::SenUGCEnumerate
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: SenUGCSortBy sortBy
|
||||
// Parameter: SenUGCType type
|
||||
// Parameter: SenUGCAuthorType authorType
|
||||
// Parameter: int nrAuthors
|
||||
// Parameter: const XUID * authorList
|
||||
// Parameter: SenUGCMetaDataFlags metaDataFlagFilter
|
||||
// Parameter: SenUGCPublishState minPublishStateFilter
|
||||
// Parameter: SenUGCPublishState maxPublishStateFilter
|
||||
// Parameter: SenSysDateTime newerThan
|
||||
// Parameter: SenUGCDescriptor descriptor
|
||||
// Parameter: int maxNrResults
|
||||
// Parameter: SenUGCSearchResult * outBuffer
|
||||
// Parameter: unsigned int * outNrResults
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Search the database for all the UGCs that match various search criteria.
|
||||
// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
|
||||
//************************************
|
||||
HRESULT SenUGCEnumerate(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCSortBy sortBy,
|
||||
SenUGCType type,
|
||||
SenUGCAuthorType authorType,
|
||||
int nrAuthors,
|
||||
const PlayerUID *authorList,
|
||||
SenUGCMetaDataFlags metaDataFlagFilter,
|
||||
SYSTEMTIME *newerThan,
|
||||
SenUGCDescriptor descriptor,
|
||||
int maxNrResults,
|
||||
SenUGCSearchResult *outBuffer,
|
||||
UINT *outNrResults,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
|
||||
/// @brief public
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// @param[in] titleID
|
||||
/// @param[in] sortBy
|
||||
/// @param[in] type
|
||||
/// @param[in] authorType
|
||||
/// @param[in] nrAuthors
|
||||
/// @param[in] authorList
|
||||
/// @param[in] metaDataFlagFilter
|
||||
/// @param[in] newerThan
|
||||
/// @param[in] nrDescriptors
|
||||
/// @param[in] descriptors
|
||||
/// @param[in] maxNrResults
|
||||
/// @param[out] outBuffer
|
||||
/// @param[out] outNrResults
|
||||
/// @param[in] userCallback
|
||||
/// @param[in] userCallbackData
|
||||
///
|
||||
/// @return Search the database for all the UGCs that match various search criteria.
|
||||
/// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
|
||||
///
|
||||
/// @details Enumerate by name will perform a look based on a various search criteria. The Collection
|
||||
/// of descriptors will perform an equality lookup on Descriptor
|
||||
///
|
||||
/// @related SenUGCEnumerate
|
||||
HRESULT SenUGCEnumerate(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCSortBy sortBy,
|
||||
SenUGCType type,
|
||||
SenUGCAuthorType authorType,
|
||||
int nrAuthors,
|
||||
const PlayerUID *authorList,
|
||||
SenUGCMetaDataFlags metaDataFlagFilter,
|
||||
SYSTEMTIME *newerThan,
|
||||
int nrDescriptors,
|
||||
INT64 *descriptors,
|
||||
int maxNrResults,
|
||||
SenUGCSearchResult *outBuffer,
|
||||
UINT *outNrResults,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
/// @brief public
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// @param[in] titleID
|
||||
/// @param[in] sortBy
|
||||
/// @param[in] type
|
||||
/// @param[in] authorType
|
||||
/// @param[in] nrAuthors
|
||||
/// @param[in] authorList
|
||||
/// @param[in] metaDataFlagFilter
|
||||
/// @param[in] newerThan
|
||||
/// @param[in] nrDescriptors
|
||||
/// @param[in] descriptors
|
||||
/// @param[in] maxNrResults
|
||||
/// @param[out] outBuffer
|
||||
/// @param[out] outNrResults
|
||||
/// @param[in] userCallback
|
||||
/// @param[in] userCallbackData
|
||||
///
|
||||
/// @return Search the database for all the UGCs that match various search criteria.
|
||||
/// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
|
||||
///
|
||||
/// @details Enumerate by Descriptor using a Logical And against all submitted Descriptor values.
|
||||
/// The API filters the results on a specific UGC Type as well as an author
|
||||
/// list type. Author List type of Everyone is NOT supported.
|
||||
/// Note: The collection of descriptor bit masks is constrained to four.
|
||||
///
|
||||
/// @related SenUGCEnumerate
|
||||
HRESULT SenUGCEnumerateByDescriptorWithLogicalAnd(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCSortBy sortBy,
|
||||
SenUGCType type,
|
||||
SenUGCAuthorType authorType,
|
||||
int nrAuthors,
|
||||
const PlayerUID *authorList,
|
||||
SenUGCMetaDataFlags metaDataFlagFilter,
|
||||
SYSTEMTIME *newerThan,
|
||||
int nrDescriptors,
|
||||
INT64 *descriptors,
|
||||
int maxNrResults,
|
||||
SenUGCSearchResult *outBuffer,
|
||||
UINT *outNrResults,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
/// @brief public
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// @param[in] titleID
|
||||
/// @param[in] type
|
||||
/// @param[in] authorType
|
||||
/// @param[in] nrAuthors
|
||||
/// @param[in] authorList
|
||||
/// @param[in] name
|
||||
/// @param[in] maxNrResults
|
||||
/// @param[out] outBuffer
|
||||
/// @param[out] outNrResults
|
||||
/// @param[in] userCallback
|
||||
/// @param[in] userCallbackData
|
||||
///
|
||||
/// @return Search the database for all the UGCs that match various search criteria.
|
||||
/// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
|
||||
///
|
||||
/// @details Enumerate by name will perform a wild card lookup on UGC name. The lookup will return anything
|
||||
/// in the range of "%<NAME>%". The API filters the results on a specific UGC Type as well as an author
|
||||
/// list type. Author List type of Everyone is NOT supported.
|
||||
///
|
||||
/// @related SenUGCEnumerate
|
||||
__declspec(deprecated("Use SenUGCEnumerateByName() instead"))
|
||||
HRESULT SenUGCEnumerate(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCType type,
|
||||
SenUGCAuthorType authorType,
|
||||
int nrAuthors,
|
||||
const PlayerUID *authorList,
|
||||
const wchar_t *name,
|
||||
int maxNrResults,
|
||||
SenUGCSearchResult *outBuffer,
|
||||
UINT *outNrResults,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
/// @brief public
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// @param[in] titleID
|
||||
/// @param[in] type
|
||||
/// @param[in] authorType
|
||||
/// @param[in] nrAuthors
|
||||
/// @param[in] authorList
|
||||
/// @param[in] name
|
||||
/// @param[in] performWildCardLookup
|
||||
/// @param[in] maxNrResults
|
||||
/// @param[out] outBuffer
|
||||
/// @param[out] outNrResults
|
||||
/// @param[in] userCallback
|
||||
/// @param[in] userCallbackData
|
||||
///
|
||||
/// @return Search the database for all the UGCs that match various search criteria.
|
||||
/// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
|
||||
///
|
||||
/// @details Enumerate by name will perform an exact or wild card string lookup on UGC name. The API filters the results
|
||||
/// on a specific UGC Type as well as an author list type. Author List type of Everyone is NOT supported.
|
||||
///
|
||||
/// @related SenUGCEnumerate
|
||||
HRESULT SenUGCEnumerateByName(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCType type,
|
||||
SenUGCAuthorType authorType,
|
||||
int nrAuthors,
|
||||
const PlayerUID *authorList,
|
||||
const wchar_t *name,
|
||||
bool performWildCardLookup,
|
||||
int maxNrResults,
|
||||
SenUGCSearchResult *outBuffer,
|
||||
UINT *outNrResults,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCDownloadMetaData
|
||||
// FullName: Sentient::SenUGCDownloadMetaData
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: int nrUGCs
|
||||
// Parameter: const SenUGCID * ugcIDList
|
||||
// Parameter: SenUGCDownloadedMetaData2 * outBuffer
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Download the metadata for an array of UGCs
|
||||
// Note that the metadata structure is a superset of the uploaded metadata,
|
||||
// with various other information exposed.
|
||||
// outBuffer should be an preallocated array of [(sizeof(SenUGCDownloadedMetaData)+SenUGCMetaData::BlobSizeLimit)*nrUGCs] bytes.
|
||||
// This new signature is compatible with resubmission feature and 64-bit UGC Ids.
|
||||
//************************************
|
||||
HRESULT SenUGCDownloadMetaData(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
int nrUGCs,
|
||||
const SenUGCID *ugcIDList,
|
||||
SenUGCDownloadedMetaData2 *out_metaData,
|
||||
size_t *out_metaDataCount,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
__declspec(deprecated("Use signature with SenUGCDownloadedMetaData2."))
|
||||
HRESULT SenUGCDownloadMetaData(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
int nrUGCs,
|
||||
const SenUGCID *ugcIDList,
|
||||
SenUGCDownloadedMetaData *out_metaData,
|
||||
size_t *out_metaDataCount,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCDownloadMainDataBlob
|
||||
// FullName: Sentient::SenUGCDownloadMainDataBlob
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: int mainDataBlobID
|
||||
// Parameter: size_t bufferSize
|
||||
// Parameter: UINT blobVersion
|
||||
// Parameter: void * outBuffer
|
||||
// Parameter: size_t * outSize
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Download a single blob of UGC data
|
||||
// note that zero byte downloads will fail.
|
||||
// ID, blobVersion, and bufferSize should be coming
|
||||
// from SenUGCDownloadedMetaData.
|
||||
// outBuffer should be an preallocated array of bufferSize bytes.
|
||||
//************************************
|
||||
HRESULT SenUGCDownloadMainDataBlob(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
UINT mainDataBlobIndex,
|
||||
size_t bufferSize,
|
||||
UINT blobVersion,
|
||||
void *outBuffer,
|
||||
size_t *outSize,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
__declspec(deprecated("Use signature with blobVersion."))
|
||||
HRESULT SenUGCDownloadMainDataBlob(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
int mainDataBlobIndex,
|
||||
size_t bufferSize,
|
||||
void *outBuffer,
|
||||
size_t *outBytesReceived,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCDownloadMainDataBlob
|
||||
// FullName: Sentient::SenUGCDownloadMainDataBlob
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: int mainDataBlobID
|
||||
// Parameter: size_t bufferSize
|
||||
// Parameter: UINT blobVersion
|
||||
// Parameter: void * outBuffer
|
||||
// Parameter: size_t * outBytesReceived
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Download a single blob of UGC data
|
||||
// NOTE: zero byte downloads will fail.
|
||||
// ID, mainDataRevision and bufferSize should be coming from a
|
||||
// SenUGCDownloadedMetaData2 (where bufferSize comes from
|
||||
// SenUGCDownloadedMetaData2's BlobInfo[mainDataBlobID].Size).
|
||||
// outBuffer should be an preallocated array of bufferSize bytes.
|
||||
// This signature includes an out param to include the progress
|
||||
// percentage and cancellation token, etc to monitor and abort
|
||||
// long running downloads (can be wired up to UI for users).
|
||||
// BlobVersion is the version of the blob you want to download,
|
||||
// which is available on the metadata information for the
|
||||
// main data blobs (via DownloadMetaData).
|
||||
//************************************
|
||||
HRESULT SenUGCDownloadMainDataBlob(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
UINT mainDataBlobIndex,
|
||||
size_t bufferSize,
|
||||
UINT blobVersion,
|
||||
void *outBuffer,
|
||||
size_t *outBytesReceived,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData,
|
||||
SenUGCProgressInfo* out_progressInfo);
|
||||
|
||||
__declspec(deprecated("Use signature with blobVersion."))
|
||||
HRESULT SenUGCDownloadMainDataBlob(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
int mainDataBlobIndex,
|
||||
size_t bufferSize,
|
||||
void *outBuffer,
|
||||
size_t *outBytesReceived,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData,
|
||||
SenUGCProgressInfo* out_progressInfo);
|
||||
|
||||
/**********************************************
|
||||
***** UGC Reviewing and Rating Functions *****
|
||||
**********************************************/
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCSetReviewScore
|
||||
// FullName: Sentient::SenUGCSetReviewScore
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcId
|
||||
// Parameter: SenUGCReviewScoreType type
|
||||
// Parameter: UINT score
|
||||
// Parameter: bool isFavorite
|
||||
// Parameter: SenSysCompletedCallback callback
|
||||
// Parameter: void * callbackData
|
||||
//************************************
|
||||
HRESULT SenUGCSetReviewScore(
|
||||
int userIndex,
|
||||
SenUGCID ugcId,
|
||||
SenUGCReviewScoreType type,
|
||||
unsigned int score,
|
||||
bool isFavorite,
|
||||
SenSysCompletedCallback callback,
|
||||
void *callbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCGetReviewScore
|
||||
// FullName: Sentient::SenUGCGetReviewScore
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenUGCID ugcId
|
||||
// Parameter: SenUGCReviewScoreType type
|
||||
// Parameter: UINT * out_score
|
||||
// Parameter: SenSysCompletedCallback callback
|
||||
// Parameter: void * callbackData
|
||||
//************************************
|
||||
HRESULT SenUGCGetReviewScore(
|
||||
int userIndex,
|
||||
SenUGCID ugcId,
|
||||
SenUGCReviewScoreType type,
|
||||
unsigned int *out_score,
|
||||
SenSysCompletedCallback callback,
|
||||
void *callbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCSetFavoriteFlag
|
||||
// FullName: Sentient::SenUGCSetFavoriteFlag
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: bool isFavorite
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Users can flag the UGCs that they really like, which can be used for
|
||||
// the search results
|
||||
//************************************
|
||||
HRESULT SenUGCSetFavoriteFlag(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
BOOL isFavorite,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCGetFavoriteFlag
|
||||
// FullName: Sentient::SenUGCGetFavoriteFlag
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: BOOL * outResult
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Users can flag the UGCs that they really like, which can be used for
|
||||
// the search results
|
||||
//************************************
|
||||
HRESULT SenUGCGetFavoriteFlag(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
BOOL *outResult,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCGetFriendFavoriteCount
|
||||
// FullName: Sentient::SenUGCGetFriendFavoriteCount
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: int * outResult
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Find out how many friends of the user have flagged this UGC as
|
||||
// a favorite (inclusive the user's favorite flag also)
|
||||
//************************************
|
||||
HRESULT SenUGCGetFriendFavoriteCount(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
int *outResult,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
//************************************
|
||||
// Method: SenUGCAddToCustomCounters
|
||||
// FullName: Sentient::SenUGCAddToCustomCounters
|
||||
// Access: public
|
||||
// Returns: HRESULT
|
||||
// Qualifier:
|
||||
// Parameter: int userIndex
|
||||
// Parameter: SenSysTitleID titleID
|
||||
// Parameter: SenUGCID ugcID
|
||||
// Parameter: INT64 customCounters[SenUGCDownloadedMetaData_NrCustomCounters]
|
||||
// Parameter: SenSysCompletedCallback userCallback
|
||||
// Parameter: void * userCallbackData
|
||||
// Users can add to a fixed number of global counters stored on the
|
||||
// servers, to count up a few basic stats per UGC (number of deaths,
|
||||
// number of enemies killed, total playtime etc.)
|
||||
//************************************
|
||||
HRESULT SenUGCAddToCustomCounters(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCID ugcID,
|
||||
INT64 customCounters[SenUGCDownloadedMetaData_NrCustomCounters],
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData );
|
||||
|
||||
/// @brief API to flag a given piece of UGC as offensive.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[in] ugcID
|
||||
/// The unique ID for an instance of UGC.
|
||||
///
|
||||
/// @param[in] offensivenessFlag
|
||||
/// Offensive flag type.
|
||||
///
|
||||
/// @param[in] reason
|
||||
/// Reason for marking a given piece of UGC as offensive.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @param[in] userCallbackData
|
||||
/// Data to be passed to the @a userCallback on completion.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
///
|
||||
/// @details Users can flag a level that they think is offensive. The goal is that
|
||||
/// the Sentient system will automatically be able to take down
|
||||
/// levels after enough people have flagged a UGC as bad.
|
||||
/// The number of votes to take something down will depend on the
|
||||
/// reliability of the reviewers (number of offensiveness flags vs number of
|
||||
/// downloads etc.) as well as the number of offensive uploads by the creator.
|
||||
/// This function is also used by moderators to confirm or deny something as
|
||||
/// being offensive.
|
||||
///
|
||||
/// @related <Related API>
|
||||
HRESULT SenUGCSetOffensivenessFlag(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
SenUGCOffensivenessFlag offensivenessFlag,
|
||||
const wchar_t *reason,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
/// @brief This function will return whether or not a particular
|
||||
/// piece of UGC has been banned.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[in] The unique ID for UGC.
|
||||
///
|
||||
/// @param[in] True if content is banned (and should not be viewed by user).
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @param[in] userCallbackData
|
||||
/// Data to be passed to the @a userCallback on completion.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
///
|
||||
/// @details Any piece of UGC can been banned by a moderator or
|
||||
/// moderation engine. This API allows clients to verify
|
||||
/// if a given piece of UGC has been banned.
|
||||
///
|
||||
/// @related SenUGCCreatePublishingUGCID()
|
||||
/// @related SenUGCSetOffensivenessFlag()
|
||||
/// @related SenUGCPublish()
|
||||
HRESULT SenUGCIsBanned(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
BOOL *out_result,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
/*********************
|
||||
***** UGC Feeds *****
|
||||
*********************/
|
||||
|
||||
/// @brief UGC Feed information
|
||||
///
|
||||
/// @details When enumerating feeds, these are the available feeds that can be retrieved.
|
||||
///
|
||||
struct SenUGCFeedInfo
|
||||
{
|
||||
SenUGCFeedType feedType;
|
||||
wchar_t Name[32];
|
||||
wchar_t Description[128];
|
||||
};
|
||||
|
||||
/// @brief Retrieves a specific feed based on feedtype.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///`
|
||||
/// @param[in] titleID
|
||||
///
|
||||
/// @param[in] feedType
|
||||
/// Feed Type identifier for for the given feed being retrieved.
|
||||
///
|
||||
/// @param[in] maxNumberOfFeedItems
|
||||
/// Used to indicate the number of items to be returned by @a out_feedInfo.
|
||||
/// If the actual number of items exceeds this, you will receive an error.
|
||||
///
|
||||
/// @param[out] out_buffer
|
||||
/// Pointer to the collection of structures to fill with SenUGCFeedItem data.
|
||||
///
|
||||
/// @param[out] out_buffersize
|
||||
/// The number of entries actually enumerated by the call.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @param[in] userCallbackData
|
||||
/// Data to be passed to the @a userCallback on completion.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
/// E_POINTER: out_buffer or out_buffersize are null.
|
||||
///
|
||||
/// @details <Insert detailed method documentation>
|
||||
///
|
||||
/// @related SenUGCEnumerateFeeds()
|
||||
HRESULT SenUGCGetFeed(
|
||||
int userIndex,
|
||||
SenSysTitleID titleID,
|
||||
SenUGCFeedType feedType,
|
||||
size_t maxNumberOfFeedItems,
|
||||
SenUGCFeedItem *out_buffer,
|
||||
UINT *out_buffersize,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData );
|
||||
|
||||
/// @brief Retrieves a collection of feeds that are viewable by the
|
||||
/// current user.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[in] culture
|
||||
/// This is the result of a call to SenCultureFind() or SenCultureGet*().
|
||||
/// You may also pass NULL to use the culture set with SenCultureSetCurrent().
|
||||
/// May be NULL for default culture.
|
||||
///
|
||||
/// @param[in] maxResults
|
||||
/// Used to indicate the number of items to be returned by @a out_feedInfo.
|
||||
/// If the actual number of items exceeds this, you will receive an error.
|
||||
///
|
||||
/// @param[out] out_feedInfo
|
||||
/// Pointer to a collection of structures to fill with SenUGCFeedInfo data.
|
||||
///
|
||||
/// @param[out] out_resultCount
|
||||
/// The number of entries actually enumerated by the call.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @param[in] userCallbackData
|
||||
/// Data to be passed to the @a userCallback on completion.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
/// E_POINTER: out_feedInfo or out_resultCount are null.
|
||||
///
|
||||
/// @details <Insert detailed method documentation>
|
||||
///
|
||||
/// @related SenUGCGetFeed()
|
||||
HRESULT SenUGCEnumerateFeeds(
|
||||
int userIndex,
|
||||
size_t maxResults,
|
||||
SenUGCFeedInfo *out_feedInfo,
|
||||
size_t *out_resultCount,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData);
|
||||
|
||||
/// @brief API that publishes UGC and makes the content accessible
|
||||
/// to everyone on the Sentient service.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[in] ugcID
|
||||
/// The unique ID for an instance of UGC.
|
||||
///
|
||||
/// @param[in] leaderboardDefinition
|
||||
/// Optional parameter. Definition for a Leaderboard that
|
||||
/// will be created and associated to newly published UGC.
|
||||
///
|
||||
/// @param[out] out_leaderboardId
|
||||
/// Created Leaderboard Id. Only returned to the client if
|
||||
/// a Leaderboards Definition is passed to the server.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
///
|
||||
/// @details UGC is only accessible to the author until it has been published.
|
||||
/// The user making the call must be the author of the UGC item.
|
||||
/// The call will fail if this UGC item has previously been published.
|
||||
/// By supplying an optional Leaderboard definition a Leaderboard is automatically
|
||||
// allocated and associated with the UGC item.
|
||||
/// This is the preferred way of creating UGC Leaderboards.
|
||||
///
|
||||
/// @related SenCreateLeaderboard()
|
||||
HRESULT SenUGCPublish(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
const SenLeaderboardDefinition *leaderboardDefinition,
|
||||
SenLeaderboardId *out_leaderboardId,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void *userCallbackData);
|
||||
|
||||
/// @brief API that publishes a new version of a UGC item and makes the revised content accessible
|
||||
/// to everyone on the Sentient service.
|
||||
///
|
||||
/// @param[in] userIndex
|
||||
/// The index of the initiating user on the console.
|
||||
/// Note: This is NOT a XUID.
|
||||
///
|
||||
/// @param[in] ugcID
|
||||
/// The unique ID for an instance of UGC.
|
||||
///
|
||||
/// @param[in] userCallback
|
||||
/// If this call returns a success code,
|
||||
/// the userCallback will be called at the end of the
|
||||
/// asynchronous process.
|
||||
///
|
||||
/// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
|
||||
/// Specific values include:
|
||||
///
|
||||
/// @details New versions of UGC are only accessible to the author until it has been republished.
|
||||
/// The user making the call must be the author of the UGC item.
|
||||
///
|
||||
/// @related SenUGCPublish()
|
||||
HRESULT SenUGCRepublish(
|
||||
int userIndex,
|
||||
SenUGCID ugcID,
|
||||
SenSysCompletedCallback userCallback,
|
||||
void* userCallbackData);
|
||||
|
||||
} // namespace Sentient
|
||||
Reference in New Issue
Block a user