タイトルで管理される統計を書き込む
このトピックでは、タイトルで管理される統計を記述する方法を示すコード例を示します。
指定したタイトル管理の統計のみを更新する
XblTitleManagedStatsUpdateStatsAsync を呼び出すことによって、更新する統計情報を指定して送信することができます。指定された統計は、既に存在する場合にのみ上書きされます。
XblTitleManagedStatsUpdateStatsAsync
の呼び出しで指定されていない統計は変更されません。
C API
std::vector<XblTitleManagedStatistic> stats{ s_svd->Stats() };
auto stat1 = std::find_if(stats.begin(), stats.end(), [](const XblTitleManagedStatistic& s)
{
return std::string{ "AddedStat" } == s.statisticName;
});
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = Data()->queue;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of the XAsyncBlock*
HRESULT hr = XAsyncGetStatus(asyncBlock, false);
};
HRESULT hr = XblTitleManagedStatsUpdateStatsAsync(
Data()->xboxLiveContext,
&(*stat1),
1,
asyncBlock.get()
);
if (SUCCEEDED(hr))
{
// The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership.
// If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
asyncBlock.release();
}
リファレンス
保持したいすべての統計を書き込み、残りの部分を削除する
タイトルで管理された統計の内、保持するものだけを書き込み、残りを削除するには、書き込むすべての統計がある XblTitleManagedStatsWriteAsync を呼び出します。 呼び出しに含まれていない統計はすべて削除されます。 この呼び出しは、サービス上の最後の統計ドキュメントを、送信した値のみを含む新しい統計ドキュメントに置き換えます。
C API
std::vector<XblTitleManagedStatistic> statList;
statList.push_back(XblTitleManagedStatistic{ "MyStatName1", XblTitleManagedStatType::Number, 200 });
statList.push_back(XblTitleManagedStatistic{ "MyStatName2", XblTitleManagedStatType::String, 0, "SomeValue" });
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of the XAsyncBlock*
HRESULT hr = XAsyncGetStatus(asyncBlock, false);
};
HRESULT hr = XblTitleManagedStatsWriteAsync(
xboxLiveContext,
xboxUserId,
statList.data(), statList.size(),
asyncBlock.get());
if (SUCCEEDED(hr))
{
// The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership.
// If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
asyncBlock.release();
}
リファレンス