Client
.NET/Unity C++/Unreal/Cocos2d-x JavaScript/Cocos2d-js Godot 3 Godot 4 Java/Android Defold cURL REST Swift Dart/Flutter
Server
TypeScript Go Lua
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 );