Tutorials
#
Read more about the Tutorials system in Hiro here.
Get all tutorials
#
Get the tutorials and current progress step for the player.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| void onTutorialsGet(const Hiro::TutorialList& tutorialList)
{
for (auto it = tutorialList.tutorials.begin(); it != tutorialList.tutorials.end(); it++)
{
std::cout << "Found tutorial: " << it->second.id << ". Progress: " << it->second.current << '/' << it->second.max << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
hiroClient->tutorialsGet(session, onTutorialsGet, onError);
|
Accept a tutorial
#
Accept an offer to step through a tutorial.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| void onTutorialsAccept(const Hiro::Tutorial& tutorial)
{
std::cout << "Successfully accepted tutorial: " << tutorial.id << '\n';
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::TutorialAcceptRequest request;
request.id = "tutorial_1";
hiroClient->tutorialsAccept(session, request, onTutorialsAccept, onError);
|
Decline a tutorial
#
Decline an offer to start a tutorial.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| void onTutorialsDecline(const Hiro::Tutorial& tutorial)
{
std::cout << "Successfully declined tutorial: " << tutorial.id << '\n';
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::TutorialDeclineRequest request;
request.id = "tutorial_1";
hiroClient->tutorialsDecline(session, request, onTutorialsDecline, onError);
|
Abandon a tutorial
#
Abandon progress on a tutorial.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| void onTutorialsAbandon(const Hiro::Tutorial& tutorial)
{
std::cout << "Successfully abandoned tutorial: " << tutorial.id << '\n';
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::TutorialAbandonRequest request;
request.id = "tutorial_1";
hiroClient->tutorialsAbandon(session, request, onTutorialsAbandon, onError);
|
Update progress of a tutorial
#
Update the current progress step in the tutorial by ID.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| void onTutorialsUpdate(const Hiro::TutorialList& tutorialList)
{
for (auto it = tutorialList.tutorials.begin(); it != tutorialList.tutorials.end(); it++)
{
std::cout << "Found tutorial: " << it->second.id << ". Progress: " << it->second.current << '/' << it->second.max << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::TutorialUpdateRequest request;
request.id = "tutorial_1";
request.step = 1;
hiroClient->tutorialsUpdate(session, request, onTutorialsUpdate, onError);
|