Unlockables
#
Read more about the Unlockables system in Hiro here.
Create a random unlockable
#
Create a random unlockable to assign to a slot (or overflow) unless there are no slots.
1
2
3
4
5
6
7
8
9
10
| FHiroOnUnlockablesCreate OnUnlockablesCreate;
OnUnlockablesCreate.AddDynamic(this, &AMyActor::OnUnlockablesCreate);
FOnError OnError;
HiroClient->UnlockablesCreate(Session, OnUnlockablesCreate, OnError);
void AMyActor::OnUnlockablesCreate(const FHiroUnlockablesList& UnlockablesList)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesList.ToJson());
}
|
Get in progress unlockables
#
Get the unlockables which are currently in progress for the player.
1
2
3
4
5
6
7
8
9
10
| FHiroOnUnlockablesGet OnUnlockablesGet;
OnUnlockablesGet.AddDynamic(this, &AMyActor::OnUnlockablesGet);
FOnError OnError;
HiroClient->UnlockablesGet(Session, OnUnlockablesGet, OnError);
void AMyActor::OnUnlockablesGet(const FHiroUnlockablesList& UnlockablesList)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesList.ToJson());
}
|
Start an unlock
#
Start the unlock timer for an unlockable in the specified slot.
1
2
3
4
5
6
7
8
9
10
11
12
13
| FHiroUnlockablesRequest Request;
Request.InstanceId = TEXT("unlockable_instance_1");
FHiroOnUnlockablesUnlockStart OnUnlockablesUnlockStart;
OnUnlockablesUnlockStart.AddDynamic(this, &AMyActor::OnUnlockablesUnlockStart);
FOnError OnError;
HiroClient->UnlockablesUnlockStart(Session, Request, OnUnlockablesUnlockStart, OnError);
void AMyActor::OnUnlockablesUnlockStart(const FHiroUnlockablesList& UnlockablesList)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesList.ToJson());
}
|
Purchase an unlockable
#
Purchase an unlockable with soft currency based on the remainder cost calculated by the offset left to wait.
1
2
3
4
5
6
7
8
9
10
11
12
13
| FHiroOnUnlockablesPurchaseUnlock Request;
Request.InstanceId = TEXT("unlockable_instance_1");
FHiroOnUnlockablesPurchaseUnlock OnUnlockablesPurchaseUnlock;
OnUnlockablesPurchaseUnlock.AddDynamic(this, &AMyActor::OnUnlockablesPurchaseUnlock);
FOnError OnError;
HiroClient->UnlockablesPurchaseUnlock(Session, Request, OnUnlockablesPurchaseUnlock, OnError);
void AMyActor::OnUnlockablesPurchaseUnlock(const FHiroUnlockablesList& UnlockablesList)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesList.ToJson());
}
|
Purchase a new unlockable slot
#
Purchase a new slot to be used to store unlockables.
1
2
3
4
5
6
7
8
9
10
| FHiroOnUnlockablesPurchaseSlot OnUnlockablesPurchaseSlot;
OnUnlockablesPurchaseSlot.AddDynamic(this, &AMyActor::OnUnlockablesPurchaseSlot);
FOnError OnError;
HiroClient->UnlockablesPurchaseSlot(Session, OnUnlockablesPurchaseSlot, OnError);
void AMyActor::OnUnlockablesPurchaseSlot(const FHiroUnlockablesList& UnlockablesList)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesList.ToJson());
}
|
Claim an unlockable
#
Claim an unlockable whose start timer has completed or completion was fast tracked with a purchase.
1
2
3
4
5
6
7
8
9
10
11
12
13
| FHiroUnlockablesRequest Request;
Request.InstanceId = TEXT("unlockable_instance_1");
FHiroOnUnlockablesClaim OnUnlockablesClaim;
OnUnlockablesClaim.AddDynamic(this, &AMyActor::OnUnlockablesClaim);
FOnError OnError;
HiroClient->UnlockablesClaim(Session, Request, OnUnlockablesClaim, OnError);
void AMyActor::OnUnlockablesClaim(const FHiroUnlockablesReward& UnlockablesReward)
{
UE_LOG(LogTemp, Log, TEXT("%s"), *UnlockablesReward.ToJson());
}
|