Родитель
dbcd219e65
Коммит
0cb2465542
|
@ -24,6 +24,11 @@ using namespace Windows::UI::Xaml::Input;
|
||||||
using namespace Windows::UI::Xaml::Media;
|
using namespace Windows::UI::Xaml::Media;
|
||||||
using namespace Windows::UI::Xaml::Navigation;
|
using namespace Windows::UI::Xaml::Navigation;
|
||||||
|
|
||||||
|
using namespace Microsoft::Xbox::Services;
|
||||||
|
using namespace Microsoft::Xbox::Services::Leaderboard;
|
||||||
|
using namespace Microsoft::Xbox::Services::Statistics;
|
||||||
|
using namespace Microsoft::Xbox::Services::Statistics::Manager;
|
||||||
|
|
||||||
struct ScenarioDescriptionItem
|
struct ScenarioDescriptionItem
|
||||||
{
|
{
|
||||||
int tag;
|
int tag;
|
||||||
|
@ -34,6 +39,8 @@ enum ScenarioItemTag
|
||||||
{
|
{
|
||||||
Scenario_GetUserProfileAsync = 1,
|
Scenario_GetUserProfileAsync = 1,
|
||||||
Scenario_GetSocialRelationshipsAsync,
|
Scenario_GetSocialRelationshipsAsync,
|
||||||
|
Scenario_WriteStat,
|
||||||
|
Scenario_ReadStat,
|
||||||
Scenario_VerifyStringAsync
|
Scenario_VerifyStringAsync
|
||||||
//Scenario_GetUserProfilesForSocialGroupAsync
|
//Scenario_GetUserProfilesForSocialGroupAsync
|
||||||
};
|
};
|
||||||
|
@ -42,6 +49,8 @@ ScenarioDescriptionItem ScenarioDescriptions[] =
|
||||||
{
|
{
|
||||||
{ Scenario_GetUserProfileAsync, L"Get user profile" },
|
{ Scenario_GetUserProfileAsync, L"Get user profile" },
|
||||||
{ Scenario_GetSocialRelationshipsAsync, L"Get social list" },
|
{ Scenario_GetSocialRelationshipsAsync, L"Get social list" },
|
||||||
|
{ Scenario_WriteStat, L"Write Stat" },
|
||||||
|
{ Scenario_ReadStat, L"Read Stat" },
|
||||||
};
|
};
|
||||||
|
|
||||||
bool MainPage::RunScenario(int selectedTag)
|
bool MainPage::RunScenario(int selectedTag)
|
||||||
|
@ -54,9 +63,11 @@ bool MainPage::RunScenario(int selectedTag)
|
||||||
|
|
||||||
switch (selectedTag)
|
switch (selectedTag)
|
||||||
{
|
{
|
||||||
case Scenario_GetUserProfileAsync: m_scenarios.Scenario_GetUserProfileAsync(this, m_xboxLiveContext); break;
|
case Scenario_GetUserProfileAsync: m_scenarios.Scenario_GetUserProfileAsync(this, m_xboxLiveContext); break;
|
||||||
case Scenario_GetSocialRelationshipsAsync: m_scenarios.Scenario_GetSocialRelationshipsAsync(this, m_xboxLiveContext); break;
|
case Scenario_GetSocialRelationshipsAsync: m_scenarios.Scenario_GetSocialRelationshipsAsync(this, m_xboxLiveContext); break;
|
||||||
default: return false;
|
case Scenario_WriteStat: m_scenarios.Scenario_WriteStat(this, m_xboxLiveContext); break;
|
||||||
|
case Scenario_ReadStat: m_scenarios.Scenario_ReadStat(this, m_xboxLiveContext); break;
|
||||||
|
default: return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -65,21 +76,22 @@ bool MainPage::RunScenario(int selectedTag)
|
||||||
MainPage::MainPage()
|
MainPage::MainPage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
this->CoreDispatcher = Windows::UI::Xaml::Window::Current->CoreWindow->Dispatcher;
|
this->CoreDispatcher = Windows::UI::Xaml::Window::Current->CoreWindow->Dispatcher;
|
||||||
|
|
||||||
m_user = ref new Microsoft::Xbox::Services::System::XboxLiveUser();
|
m_user = ref new Microsoft::Xbox::Services::System::XboxLiveUser();
|
||||||
m_user->SignOutCompleted += ref new EventHandler<Microsoft::Xbox::Services::System::SignOutCompletedEventArgs^ >
|
m_user->SignOutCompleted += ref new EventHandler<Microsoft::Xbox::Services::System::SignOutCompletedEventArgs^ >
|
||||||
([this](Platform::Object^, Microsoft::Xbox::Services::System::SignOutCompletedEventArgs^ args)
|
([this](Platform::Object^, Microsoft::Xbox::Services::System::SignOutCompletedEventArgs^ args)
|
||||||
|
{
|
||||||
|
CoreDispatcher->RunAsync(
|
||||||
|
Windows::UI::Core::CoreDispatcherPriority::Normal,
|
||||||
|
ref new Windows::UI::Core::DispatchedHandler([this, args]()
|
||||||
{
|
{
|
||||||
CoreDispatcher->RunAsync(
|
this->UserInfoLabel->Text = L"user signed out";
|
||||||
Windows::UI::Core::CoreDispatcherPriority::Normal,
|
Log(L"----------------");
|
||||||
ref new Windows::UI::Core::DispatchedHandler([this, args]()
|
LogFormat(L"User %s signed out", args->User->Gamertag->Data());
|
||||||
{
|
}));
|
||||||
this->UserInfoLabel->Text = L"user signed out";
|
});
|
||||||
Log(L"----------------");
|
|
||||||
LogFormat(L"User %s signed out", args->User->Gamertag->Data());
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
for (ScenarioDescriptionItem scenario : ScenarioDescriptions)
|
for (ScenarioDescriptionItem scenario : ScenarioDescriptions)
|
||||||
{
|
{
|
||||||
|
@ -89,14 +101,84 @@ MainPage::MainPage()
|
||||||
this->ScenarioListBox->Items->Append(listBoxItem);
|
this->ScenarioListBox->Items->Append(listBoxItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StartTimerAndRegisterHandler();
|
||||||
|
|
||||||
this->ScenarioListBox->SelectedIndex = 0;
|
this->ScenarioListBox->SelectedIndex = 0;
|
||||||
SignInSilently();
|
SignInSilently();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainPage::ScenarioListBox_DoubleTapped(
|
void MainPage::StartTimerAndRegisterHandler()
|
||||||
Platform::Object^ sender,
|
{
|
||||||
Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ e
|
auto timer = ref new Windows::UI::Xaml::DispatcherTimer();
|
||||||
)
|
|
||||||
|
TimeSpan ts;
|
||||||
|
ts.Duration = 500;
|
||||||
|
timer->Interval = ts;
|
||||||
|
timer->Start();
|
||||||
|
auto registrationToken = timer->Tick += ref new EventHandler<Object^>(this, &MainPage::OnTick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainPage::OnTick(Object^ sender, Object^ e)
|
||||||
|
{
|
||||||
|
StatisticManager^ mgr = Microsoft::Xbox::Services::Statistics::Manager::StatisticManager::SingletonInstance;
|
||||||
|
if (mgr != nullptr)
|
||||||
|
{
|
||||||
|
auto EventList = mgr->DoWork();
|
||||||
|
for (StatisticEvent^ Event : EventList)
|
||||||
|
{
|
||||||
|
if (Event->ErrorCode != 0)
|
||||||
|
{
|
||||||
|
LogFormat(L"DoWork error: %s", Event->ErrorMessage->Data());
|
||||||
|
}
|
||||||
|
|
||||||
|
StatisticEventArgs^ args;
|
||||||
|
|
||||||
|
switch (Event->EventType)
|
||||||
|
{
|
||||||
|
case StatisticEventType::LocalUserAdded:
|
||||||
|
LogFormat(L"DoWork LocalUserAdded: %s", Event->User->Gamertag->Data());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case StatisticEventType::LocalUserRemoved:
|
||||||
|
LogFormat(L"DoWork LocalUserRemoved: %s", Event->User->Gamertag->Data());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case StatisticEventType::GetLeaderboardComplete:
|
||||||
|
{
|
||||||
|
Log(L"DoWork GetLeaderboardComplete:");
|
||||||
|
|
||||||
|
LeaderboardResultEventArgs^ LbResultEventArgs = safe_cast<LeaderboardResultEventArgs^>(Event->EventArgs);
|
||||||
|
LeaderboardResult^ LbResult = LbResultEventArgs->Result;
|
||||||
|
|
||||||
|
for (LeaderboardRow^ row : LbResult->Rows)
|
||||||
|
{
|
||||||
|
String^ colValues;
|
||||||
|
for (auto columnValue : row->Values)
|
||||||
|
{
|
||||||
|
colValues = colValues + L" ";
|
||||||
|
colValues = colValues + columnValue;
|
||||||
|
}
|
||||||
|
LogFormat(L"%16s %6s %12s %8s\n", row->Gamertag->Data(), row->Rank.ToString()->Data(), row->Percentile.ToString()->Data(), colValues->Data());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case StatisticEventType::StatisticUpdateComplete:
|
||||||
|
LogFormat(L"DoWork StatisticUpdateComplete: %s", Event->User->Gamertag->ToString());
|
||||||
|
|
||||||
|
IVectorView<String^>^ stats = mgr->GetStatisticNames(Event->User);
|
||||||
|
for (String^ stat : stats)
|
||||||
|
{
|
||||||
|
LogFormat(L"DoWork Stat: %s", stat->Data());
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainPage::ScenarioListBox_DoubleTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ e)
|
||||||
{
|
{
|
||||||
RunSelectedScenario();
|
RunSelectedScenario();
|
||||||
}
|
}
|
||||||
|
@ -138,7 +220,7 @@ void MainPage::RunSelectedScenario()
|
||||||
{
|
{
|
||||||
if (this->ScenarioListBox->SelectedItems->Size == 1)
|
if (this->ScenarioListBox->SelectedItems->Size == 1)
|
||||||
{
|
{
|
||||||
ClearLogs();
|
//ClearLogs();
|
||||||
ListBoxItem^ selectedItem = safe_cast<ListBoxItem^>(this->ScenarioListBox->SelectedItem);
|
ListBoxItem^ selectedItem = safe_cast<ListBoxItem^>(this->ScenarioListBox->SelectedItem);
|
||||||
int selectedTag = safe_cast<int>(selectedItem->Tag);
|
int selectedTag = safe_cast<int>(selectedItem->Tag);
|
||||||
RunScenario(selectedTag);
|
RunScenario(selectedTag);
|
||||||
|
@ -147,7 +229,7 @@ void MainPage::RunSelectedScenario()
|
||||||
|
|
||||||
void MainPage::RunAllButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
void MainPage::RunAllButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
||||||
{
|
{
|
||||||
ClearLogs();
|
//ClearLogs();
|
||||||
int scenarioTag = 1;
|
int scenarioTag = 1;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
@ -173,8 +255,7 @@ void MainPage::SignIn()
|
||||||
Log(this->UserInfoLabel->Text);
|
Log(this->UserInfoLabel->Text);
|
||||||
|
|
||||||
auto asyncOp = m_user->SignInAsync(this->CoreDispatcher);
|
auto asyncOp = m_user->SignInAsync(this->CoreDispatcher);
|
||||||
create_task(asyncOp)
|
create_task(asyncOp).then([this](task<Microsoft::Xbox::Services::System::SignInResult^> t)
|
||||||
.then([this](task<Microsoft::Xbox::Services::System::SignInResult^> t)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -182,6 +263,11 @@ void MainPage::SignIn()
|
||||||
if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::Success)
|
if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::Success)
|
||||||
{
|
{
|
||||||
m_xboxLiveContext = ref new Microsoft::Xbox::Services::XboxLiveContext(m_user);
|
m_xboxLiveContext = ref new Microsoft::Xbox::Services::XboxLiveContext(m_user);
|
||||||
|
|
||||||
|
StatisticManager^ mgr = StatisticManager::SingletonInstance;
|
||||||
|
if (mgr == nullptr) return t;
|
||||||
|
mgr->AddLocalUser(m_xboxLiveContext->User);
|
||||||
|
|
||||||
this->UserInfoLabel->Text = L"Sign in succeeded";
|
this->UserInfoLabel->Text = L"Sign in succeeded";
|
||||||
}
|
}
|
||||||
else if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::UserCancel)
|
else if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::UserCancel)
|
||||||
|
@ -207,8 +293,7 @@ void MainPage::SignInSilently()
|
||||||
Log(this->UserInfoLabel->Text);
|
Log(this->UserInfoLabel->Text);
|
||||||
|
|
||||||
auto asyncOp = m_user->SignInSilentlyAsync(nullptr);
|
auto asyncOp = m_user->SignInSilentlyAsync(nullptr);
|
||||||
create_task(asyncOp)
|
create_task(asyncOp).then([this](task<Microsoft::Xbox::Services::System::SignInResult^> t)
|
||||||
.then([this](task<Microsoft::Xbox::Services::System::SignInResult^> t)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -216,6 +301,11 @@ void MainPage::SignInSilently()
|
||||||
if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::Success)
|
if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::Success)
|
||||||
{
|
{
|
||||||
m_xboxLiveContext = ref new Microsoft::Xbox::Services::XboxLiveContext(m_user);
|
m_xboxLiveContext = ref new Microsoft::Xbox::Services::XboxLiveContext(m_user);
|
||||||
|
|
||||||
|
StatisticManager^ mgr = StatisticManager::SingletonInstance;
|
||||||
|
if (mgr == nullptr) return t;
|
||||||
|
mgr->AddLocalUser(m_xboxLiveContext->User);
|
||||||
|
|
||||||
this->UserInfoLabel->Text = L"SignIn Silent succeeded";
|
this->UserInfoLabel->Text = L"SignIn Silent succeeded";
|
||||||
}
|
}
|
||||||
else if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::UserInteractionRequired)
|
else if (result->Status == Microsoft::Xbox::Services::System::SignInStatus::UserInteractionRequired)
|
||||||
|
|
|
@ -14,13 +14,14 @@
|
||||||
|
|
||||||
namespace Social_CppCx_140
|
namespace Social_CppCx_140
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ref class MainPage sealed
|
public ref class MainPage sealed
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MainPage();
|
MainPage();
|
||||||
|
void OnTick(Object^ sender, Object^ e);
|
||||||
|
|
||||||
internal:
|
internal:
|
||||||
void ClearLogs();
|
void ClearLogs();
|
||||||
|
@ -29,6 +30,8 @@ namespace Social_CppCx_140
|
||||||
property Windows::UI::Core::CoreDispatcher^ CoreDispatcher;
|
property Windows::UI::Core::CoreDispatcher^ CoreDispatcher;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void StartTimerAndRegisterHandler();
|
||||||
|
|
||||||
void ScenarioListBox_DoubleTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ e);
|
void ScenarioListBox_DoubleTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ e);
|
||||||
void RunButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
|
void RunButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
|
||||||
void RunAllButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
|
void RunAllButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
|
||||||
|
@ -44,5 +47,5 @@ namespace Social_CppCx_140
|
||||||
Microsoft::Xbox::Services::System::XboxLiveUser^ m_user;
|
Microsoft::Xbox::Services::System::XboxLiveUser^ m_user;
|
||||||
Microsoft::Xbox::Services::XboxLiveContext^ m_xboxLiveContext;
|
Microsoft::Xbox::Services::XboxLiveContext^ m_xboxLiveContext;
|
||||||
Scenarios m_scenarios;
|
Scenarios m_scenarios;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,10 @@ using namespace Microsoft::Xbox::Services::Social;
|
||||||
using namespace Microsoft::Xbox::Services::System;
|
using namespace Microsoft::Xbox::Services::System;
|
||||||
using namespace Microsoft::Xbox::Services::Presence;
|
using namespace Microsoft::Xbox::Services::Presence;
|
||||||
|
|
||||||
|
using namespace Microsoft::Xbox::Services::Statistics;
|
||||||
|
using namespace Microsoft::Xbox::Services::Statistics::Manager;
|
||||||
|
using namespace Microsoft::Xbox::Services::Leaderboard;
|
||||||
|
|
||||||
std::mutex g_blockOfTextLock;
|
std::mutex g_blockOfTextLock;
|
||||||
|
|
||||||
void Scenarios::Active_RealTimeActivity(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext)
|
void Scenarios::Active_RealTimeActivity(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext)
|
||||||
|
@ -37,22 +41,22 @@ void Scenarios::Active_RealTimeActivity(_In_ MainPage^ mainPage, Microsoft::Xbox
|
||||||
|
|
||||||
xboxLiveContext->PresenceService->SubscribeToDevicePresenceChange(
|
xboxLiveContext->PresenceService->SubscribeToDevicePresenceChange(
|
||||||
xboxLiveContext->User->XboxUserId
|
xboxLiveContext->User->XboxUserId
|
||||||
);
|
);
|
||||||
|
|
||||||
xboxLiveContext->PresenceService->SubscribeToTitlePresenceChange(
|
xboxLiveContext->PresenceService->SubscribeToTitlePresenceChange(
|
||||||
xboxLiveContext->User->XboxUserId,
|
xboxLiveContext->User->XboxUserId,
|
||||||
0x5D2A2BCA
|
0x5D2A2BCA
|
||||||
);
|
);
|
||||||
|
|
||||||
EventHandler<DevicePresenceChangeEventArgs^>^ devicePresenceChangeEvent = ref new EventHandler<DevicePresenceChangeEventArgs^>(
|
EventHandler<DevicePresenceChangeEventArgs^>^ devicePresenceChangeEvent = ref new EventHandler<DevicePresenceChangeEventArgs^>(
|
||||||
[this, mainPage](Platform::Object^, DevicePresenceChangeEventArgs^ eventArgs)
|
[this, mainPage](Platform::Object^, DevicePresenceChangeEventArgs^ eventArgs)
|
||||||
{
|
{
|
||||||
OnDevicePresenceChange(mainPage, eventArgs);
|
OnDevicePresenceChange(mainPage, eventArgs);
|
||||||
});
|
});
|
||||||
m_devicePresenceChangeEventToken = xboxLiveContext->PresenceService->DevicePresenceChanged += devicePresenceChangeEvent;
|
m_devicePresenceChangeEventToken = xboxLiveContext->PresenceService->DevicePresenceChanged += devicePresenceChangeEvent;
|
||||||
|
|
||||||
EventHandler<TitlePresenceChangeEventArgs^>^ titlePresenceChangeEvent = ref new EventHandler<TitlePresenceChangeEventArgs^>(
|
EventHandler<TitlePresenceChangeEventArgs^>^ titlePresenceChangeEvent = ref new EventHandler<TitlePresenceChangeEventArgs^>(
|
||||||
[this, mainPage](Platform::Object^, TitlePresenceChangeEventArgs^ eventArgs)
|
[this, mainPage](Platform::Object^, TitlePresenceChangeEventArgs^ eventArgs)
|
||||||
{
|
{
|
||||||
OnTitlePresenceChange(mainPage, eventArgs);
|
OnTitlePresenceChange(mainPage, eventArgs);
|
||||||
});
|
});
|
||||||
|
@ -70,7 +74,7 @@ void Scenarios::Scenario_GetUserProfileAsync(_In_ MainPage^ ui, Microsoft::Xbox:
|
||||||
|
|
||||||
auto asyncOp = xboxLiveContext->ProfileService->GetUserProfileAsync(xboxLiveContext->User->XboxUserId);
|
auto asyncOp = xboxLiveContext->ProfileService->GetUserProfileAsync(xboxLiveContext->User->XboxUserId);
|
||||||
create_task(asyncOp)
|
create_task(asyncOp)
|
||||||
.then([this, ui](task<XboxUserProfile^> resultTask)
|
.then([this, ui](task<XboxUserProfile^> resultTask)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -105,10 +109,10 @@ void Scenarios::Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ ui, Microsof
|
||||||
{
|
{
|
||||||
ui->Log(L"Calling get_social_relationships...");
|
ui->Log(L"Calling get_social_relationships...");
|
||||||
|
|
||||||
PresenceData^ presenceData = ref new PresenceData(L"12200100-88da-4d8b-af88-e38f5d2a2bca", L"rpdemo" );
|
PresenceData^ presenceData = ref new PresenceData(L"12200100-88da-4d8b-af88-e38f5d2a2bca", L"rpdemo");
|
||||||
auto pAsyncOp2 = xboxLiveContext->PresenceService->SetPresenceAsync(true, presenceData);
|
auto pAsyncOp2 = xboxLiveContext->PresenceService->SetPresenceAsync(true, presenceData);
|
||||||
create_task(pAsyncOp2)
|
create_task(pAsyncOp2)
|
||||||
.then([this,ui](task<void> resultTask)
|
.then([this, ui](task<void> resultTask)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -116,7 +120,7 @@ void Scenarios::Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ ui, Microsof
|
||||||
ui->LogFormat(L"SetPresenceAsync succeeded");
|
ui->LogFormat(L"SetPresenceAsync succeeded");
|
||||||
}
|
}
|
||||||
catch (Platform::Exception^ ex)
|
catch (Platform::Exception^ ex)
|
||||||
{
|
{
|
||||||
ui->LogFormat(L"SetPresenceAsync failed: 0x%0.8x", ex->HResult);
|
ui->LogFormat(L"SetPresenceAsync failed: 0x%0.8x", ex->HResult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -131,7 +135,7 @@ void Scenarios::Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ ui, Microsof
|
||||||
SocialRelationship::All,
|
SocialRelationship::All,
|
||||||
startIndex,
|
startIndex,
|
||||||
maxItems
|
maxItems
|
||||||
);
|
);
|
||||||
|
|
||||||
create_task(pAsyncOp)
|
create_task(pAsyncOp)
|
||||||
.then([this, maxItems, ui](task<XboxSocialRelationshipResult^> resultTask)
|
.then([this, maxItems, ui](task<XboxSocialRelationshipResult^> resultTask)
|
||||||
|
@ -160,14 +164,50 @@ void Scenarios::Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ ui, Microsof
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Platform::Exception^ ex)
|
catch (Platform::Exception^ ex)
|
||||||
{
|
{
|
||||||
ui->LogFormat(L"get_social_relationships failed: 0x%0.8x", ex->HResult);
|
ui->LogFormat(L"get_social_relationships failed: 0x%0.8x", ex->HResult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void Scenarios::Scenario_WriteStat(_In_ MainPage^ ui, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext)
|
||||||
Scenarios::OnDevicePresenceChange(_In_ MainPage^ ui, _In_ DevicePresenceChangeEventArgs^ args)
|
{
|
||||||
|
StatisticManager^ mgr = StatisticManager::SingletonInstance;
|
||||||
|
if (mgr == nullptr) return;
|
||||||
|
|
||||||
|
String^ statName = L"HighScore";
|
||||||
|
long long statValue = 1001;
|
||||||
|
|
||||||
|
mgr->SetStatisticIntegerData(xboxLiveContext->User, statName, statValue);
|
||||||
|
mgr->RequestFlushToService(xboxLiveContext->User);
|
||||||
|
|
||||||
|
ui->LogFormat(L"WriteStat: %s : %s", statName->Data(), statValue.ToString()->Data());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Scenarios::Scenario_ReadStat(_In_ MainPage^ ui, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext)
|
||||||
|
{
|
||||||
|
static bool once = false;
|
||||||
|
|
||||||
|
StatisticManager^ mgr = StatisticManager::SingletonInstance;
|
||||||
|
if (mgr == nullptr) return;
|
||||||
|
|
||||||
|
if (!once)
|
||||||
|
{
|
||||||
|
once = true;
|
||||||
|
xboxLiveContext->Settings->ServiceCallRouted += ref new EventHandler<XboxServiceCallRoutedEventArgs^>([=](Object^, XboxServiceCallRoutedEventArgs^ args)
|
||||||
|
{
|
||||||
|
ui->LogFormat(L"[URL]: %s %s", args->HttpMethod->Data(), args->Url->AbsoluteUri->Data());
|
||||||
|
ui->LogFormat(L"[Response]: %s %s", args->HttpStatus.ToString()->Data(), args->ResponseBody->Data());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
String^ statName = L"HighScore";
|
||||||
|
LeaderboardQuery^ Query = ref new LeaderboardQuery();
|
||||||
|
|
||||||
|
mgr->GetLeaderboard(xboxLiveContext->User, statName, Query);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Scenarios::OnDevicePresenceChange(_In_ MainPage^ ui, _In_ DevicePresenceChangeEventArgs^ args)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lockGuard(g_blockOfTextLock);
|
std::lock_guard<std::mutex> lockGuard(g_blockOfTextLock);
|
||||||
|
|
||||||
|
@ -179,8 +219,7 @@ Scenarios::OnDevicePresenceChange(_In_ MainPage^ ui, _In_ DevicePresenceChangeEv
|
||||||
ui->LogFormat(L"Is user logged in: %S", args->IsUserLoggedOnDevice ? L"True" : L"False");
|
ui->LogFormat(L"Is user logged in: %S", args->IsUserLoggedOnDevice ? L"True" : L"False");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void Scenarios::OnTitlePresenceChange(_In_ MainPage^ ui, _In_ TitlePresenceChangeEventArgs^ args)
|
||||||
Scenarios::OnTitlePresenceChange(_In_ MainPage^ ui, _In_ TitlePresenceChangeEventArgs^ args)
|
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lockGuard(g_blockOfTextLock);
|
std::lock_guard<std::mutex> lockGuard(g_blockOfTextLock);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ namespace Social_CppCx_140
|
||||||
void Active_RealTimeActivity(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
void Active_RealTimeActivity(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
||||||
void Scenario_GetUserProfileAsync(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
void Scenario_GetUserProfileAsync(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
||||||
void Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
void Scenario_GetSocialRelationshipsAsync(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
||||||
|
void Scenario_WriteStat(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
||||||
|
void Scenario_ReadStat(_In_ MainPage^ mainPage, Microsoft::Xbox::Services::XboxLiveContext^ xboxLiveContext);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Windows::Foundation::EventRegistrationToken m_devicePresenceChangeEventToken;
|
Windows::Foundation::EventRegistrationToken m_devicePresenceChangeEventToken;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче