Energy
Read more about the Energy system in Hiro here.
Get all energies
#
Get the energies and their current timers for the player.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| void onEnergyGet(const Hiro::EnergyList& energyList)
{
for (auto it = energyList.energies.begin(); it != energyList.energies.end(); it++)
{
std::cout << "Found energy: " << it->first << " with value: " << it->second.current << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
hiroClient->energyGet(session, onEnergyGet, onError);
|
Spend one or more energies
#
Spend one or more energies for the player.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| void onEnergySpend(const Hiro::EnergySpendReward& energySpendReward)
{
for (auto it = energySpendReward.energies.energies.begin(); it != energySpendReward.energies.energies.end(); it++)
{
std::cout << "Found energy: " << it->first << " with value: " << it->second.current << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::EnergySpendRequest request;
request.amounts.insert(std::make_pair<std::string, int32_t>("power", 10));
request.amounts.insert(std::make_pair<std::string, int32_t>("tickets", 1));
hiroClient->energySpend(session, request, onEnergySpend, onError);
|
Spend energies with custom refill start times
#
Spend one or more energies and set a custom refill start time for each.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| void onEnergySpendWithRefillStartTime(const Hiro::EnergySpendReward& energySpendReward)
{
for (auto it = energySpendReward.energies.energies.begin(); it != energySpendReward.energies.energies.end(); it++)
{
std::cout << "Found energy: " << it->first << " with value: " << it->second.current << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::EnergySpendWithRefillStartTimeRequest request;
Hiro::EnergySpendWithTime powerSpend;
powerSpend.amount = 10;
powerSpend.refillStartTime = std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::system_clock::now().time_since_epoch()).count();
request.spends.insert(std::make_pair<std::string, Hiro::EnergySpendWithTime>("power", powerSpend));
hiroClient->energySpendWithRefillStartTime(session, request, onEnergySpendWithRefillStartTime, onError);
|
Granting energy
#
While energy can be granted as part of a reward, you can also grant it directly.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| void onEnergyGrant(const Hiro::EnergyList& energyList)
{
for (auto it = energyList.energies.begin(); it != energyList.energies.end(); it++)
{
std::cout << "Found energy: " << it->first << " with value: " << it->second.current << '\n';
}
}
void onError(const Nakama::NError& error)
{
std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}
Hiro::EnergyGrantRequest request;
request.amounts.insert(std::make_pair<std::string, int32_t>("power", 10));
request.amounts.insert(std::make_pair<std::string, int32_t>("tickets", 1));
hiroClient->energyGrant(session, request, onEnergyGrant, onError);
|