aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h')
-rw-r--r--Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h409
1 files changed, 409 insertions, 0 deletions
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
new file mode 100644
index 00000000..09662243
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
@@ -0,0 +1,409 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client BoxArt API
+//
+// Include this to get access to all BoxArt-related Sentient features.
+
+#pragma once
+
+#include "SenClientRawData.h"
+#include "SenClientResource.h"
+#include "SenClientSys.h"
+#include "SenClientXML.h"
+
+#include <xonline.h>
+
+namespace Sentient
+{
+ //====================//
+ // //
+ // BoxArt Types //
+ // //
+ //====================//
+
+ /// @brief Box Art sorting options.
+ ///
+ /// @details When enumerating box Art, these are the options for pre-sorting the returned list.
+ ///
+ enum SenBoxArtSortBy
+ {
+ /// Sort by the default order (currently just the order stored on the server).
+ SenBoxArtSortBy_Default = 0,
+ };
+
+ /// @brief Box art command/action types.
+ ///
+ /// @details When the user selects box art, these are the options for generating the resulting action.
+ ///
+ enum SenBoxArtCommand
+ {
+ /// The game should call up the marketplace UI with info.GetOfferID().
+ SenBoxArtCommand_Store = 0,
+
+ // (more commands TBD)
+ };
+
+ /// @brief Basic box art information.
+ ///
+ /// @details This structure contains the original uploaded info plus any info implied by the raw data that was uploaded (e.g. data sizes).
+ ///
+ struct SenBoxArtInfo : public SenResourceInfo
+ {
+ SenRawDataTransferInfo image; ///< Points to a file, typically JPG or PNG, which can be passed to D3DXCreateTextureFromFileInMemory().
+ SenRawDataTransferInfo xml; ///< Points to an opaque XML file used to hold extended information about the box art. Use SenBoxArtDownloadExtraInfo() to retrieve.
+
+ SenBoxArtCommand command; ///< What to do when the box art is selected.
+ INT32 commandData0; ///< 32 bits of arbitrary data to go with command. (e.g. offerID high bits)
+ INT32 commandData1; ///< 32 bits of arbitrary data to go with command. (e.g. offerID low bits)
+
+ UINT32 friendsWithTitle; ///< Number of friends owning the title this box art is associated with.
+
+ /// @brief
+ /// Get the offerID associated with this box art.
+ ///
+ /// @details
+ /// If command==SenBoxArtCommand_Store, this returns commandData0,1 as a SenSysOfferID.
+ /// Otherwise, it returns SenSysOfferID_Invalid.
+ ///
+ SenSysOfferID GetOfferID() const;
+ };
+
+ /// @brief Extra box art information.
+ ///
+ /// @details This structure contains additional data about box art, such as localized strings.
+ ///
+ struct SenBoxArtExtraInfo
+ {
+ wchar_t title[XMARKETPLACE_MAX_OFFER_NAME_LENGTH+1]; ///< The localized title associated with the offer.
+ wchar_t description[XMARKETPLACE_MAX_OFFER_SELL_TEXT_LENGTH+1]; ///< The localized short description associated with the offer.
+ };
+
+ //========================//
+ // //
+ // BoxArt Functions //
+ // //
+ //========================//
+
+
+ /// @brief Search the database for all the box arts that match the search criteria.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] boxArtInfoCountMax
+ /// The number of SenBoxArtInfo structures available in @a out_boxArtInfoList.
+ ///
+ /// @param[out] out_boxArtInfoCount
+ /// This is the number of entries actually enumerated by the call.
+ ///
+ /// @param[out] out_boxArtInfoList
+ /// The structures to fill in with the enumerated information.
+ /// It is assumed that this is preallocated to at least @a boxArtInfoCountMax entries.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @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:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_boxArtInfoList is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Enumerates in default order, at the current time, for all titles, the box art available to display.
+ ///
+ /// @related SenBoxArtDownloadImage()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ HRESULT SenBoxArtEnumerate(
+ int userIndex,
+ size_t boxArtInfoCountMax,
+ size_t *out_boxArtInfoCount,
+ SenBoxArtInfo *out_boxArtInfoList,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the raw box art image data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.image.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @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:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.image is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a PNG or JPG file, suitable for use with D3DXCreateTextureFromFileInMemory().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ HRESULT SenBoxArtDownloadImage(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download extra information about a give box art to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[out] out_boxArtExtraInfo
+ /// The structure to populate with extra information.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @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:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.xml is invalid.
+ /// E_POINTER: out_boxArtExtraInfo is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details On completion, the structure will contain extra information, such as localized strings.
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadImage()
+ ///
+ HRESULT SenBoxArtDownloadExtraInfo(
+ const SenBoxArtInfo &boxArtInfo,
+ SenBoxArtExtraInfo *out_boxArtExtraInfo,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback, void *userCallbackData );
+
+ /// @brief Download the raw box art xml data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.xml.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @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:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.xml is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a UTF-8 XML file, though those details
+ /// are irrelevant, as the contents are parsed transparently with SenXMLParse().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadImage()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtDownloadXML(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Obtain a wide, localized string describing a given box art's game title.
+ ///
+ /// @param[in] senXML
+ /// This is the result of a call to SenXMLParse() with the results of
+ /// SenBoxArtDownloadXML().
+ ///
+ /// @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().
+ ///
+ /// @param[in] bufferLength
+ /// Note that bufferLength is in wchars, and needs to _include_ space for the terminating nul.
+ ///
+ /// @param[out] out_bufferLength
+ /// Used to return the actual number of wchars written to the buffer, including the terminating nul.
+ /// The actual length of the _string_ is (*out_bufferLength - 1).
+ /// Pass @a out_bufferLength = NULL if you don't care about the actual size.
+ ///
+ /// @param[out] out_buffer
+ /// The buffer to fill in with the string.
+ /// It is assumed that this is preallocated to at least @a bufferLength wchars.
+ /// Pass @a out_buffer = NULL if you are only interested in finding out the necessary buffer size.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_UNEXPECTED: passed a NULL culture without a default culture being set first.
+ /// E_INVALIDARG: senXML does not contain parsed XML data.
+ /// E_FAIL: Failed to locate text.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Assumes you have already downloaded the XML and run it through
+ /// SenXMLParse() to get a SenXML struct.
+ ///
+ /// First method, filling a fixed-size buffer:
+ ///
+ /// wchar_t buffer[1234];
+ /// SenBoxArtXMLGetTitle( xml, culture, _countof(buffer), NULL, buffer );
+ ///
+ /// Second method, filling a dynamically-allocated buffer:
+ ///
+ /// size_t bufferLength;
+ /// SenBoxArtXMLGetTitle( xml, culture, 0, &bufferLength, NULL );
+ /// wchar_t buffer = new wchar_t[bufferLength];
+ /// SenBoxArtXMLGetTitle( xml, culture, bufferLength, NULL, buffer );
+ ///
+ /// @related SenBoxArtDownloadXML()
+ /// @related SenXMLParse()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtXMLGetTitle(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer );
+
+ /// @brief Obtain a wide, localized string describing a given box art's game title.
+ ///
+ /// @param[in] senXML
+ /// This is the result of a call to SenXMLParse() with the results of
+ /// SenBoxArtDownloadXML().
+ ///
+ /// @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().
+ ///
+ /// @param[in] bufferLength
+ /// Note that bufferLength is in wchars, and needs to _include_ space for the terminating nul.
+ ///
+ /// @param[out] out_bufferLength
+ /// Used to return the actual number of wchars written to the buffer, including the terminating nul.
+ /// The actual length of the _string_ is (*out_bufferLength - 1).
+ /// Pass @a out_bufferLength = NULL if you don't care about the actual size.
+ ///
+ /// @param[out] out_buffer
+ /// The buffer to fill in with the string.
+ /// It is assumed that this is preallocated to at least @a bufferLength wchars.
+ /// Pass @a out_buffer = NULL if you are only interested in finding out the necessary buffer size.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_UNEXPECTED: passed a NULL culture without a default culture being set first.
+ /// E_INVALIDARG: senXML does not contain parsed XML data.
+ /// E_FAIL: Failed to locate text.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Assumes you have already downloaded the XML and run it through
+ /// SenXMLParse() to get a SenXML struct.
+ ///
+ /// First method, filling a fixed-size buffer:
+ ///
+ /// wchar_t buffer[1234];
+ /// SenBoxArtXMLGetDescription( xml, culture, _countof(buffer), NULL, buffer );
+ ///
+ /// Second method, filling a dynamically-allocated buffer:
+ ///
+ /// size_t bufferLength;
+ /// SenBoxArtXMLGetDescription( xml, culture, 0, &bufferLength, NULL );
+ /// wchar_t buffer = new wchar_t[bufferLength];
+ /// SenBoxArtXMLGetDescription( xml, culture, bufferLength, NULL, buffer );
+ ///
+ /// @related SenBoxArtDownloadXML()
+ /// @related SenXMLParse()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtXMLGetDescription(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer );
+
+ /// @brief Download the raw box art image data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.image.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @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:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.image is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a PNG or JPG file, suitable for use with D3DXCreateTextureFromFileInMemory().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ __declspec(deprecated("This function is deprecated, use the overload with a SenHandle out param instead")) HRESULT SenBoxArtDownloadImage(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+} // namespace Sentient