PICO Unreal Platform SDK
Pico_Achievements.h
1// Copyright® 2015-2023 PICO Technology Co., Ltd. All rights reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5#include "UObject/NoExportTypes.h"
6#include "PPF_Platform.h"
7#include "OnlineSubsystemPicoNames.h"
8#include "OnlineSubsystemPico.h"
9#include "Pico_Achievements.generated.h"
10
12
13DECLARE_LOG_CATEGORY_EXTERN(PicoAchievements, Log, All);
14
20
24DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddCount, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
25DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddFields, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
26DECLARE_DYNAMIC_DELEGATE_ThreeParams(FUnlock, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
27DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllDefinitions, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
28DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllProgress, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
29DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetDefinitionsByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
30DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetProgressByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
31
43class ONLINESUBSYSTEMPICO_API FPicoAchievementsInterface
44{
45private:
46
47 FOnlineSubsystemPico& PicoSubsystem;
48
49public:
50 FPicoAchievementsInterface(FOnlineSubsystemPico& InSubsystem);
52
53 FAddCount AddCountDelegate;
54 FAddFields AddFieldsDelegate;
55 FUnlock UnlockDelegate;
56 FGetAllDefinitions GetAllDefinitionsDelegate;
57 FGetAllProgress GetAllProgressDelegate;
58 FGetDefinitionsByName GetDefinitionsByNameDelegate;
59 FGetProgressByName GetProgressByNameDelegate;
60
79 bool AddCount(const FString& Name, const int64& Count, const FString& ExtraData, FAddCount InAddCountDelegate);
80
97 bool AddFields(const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
98
110 bool Unlock(const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
111
125 bool GetAllDefinitions(int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
126
141 bool GetAllProgress(int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
142
155 bool GetDefinitionsByName(const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
156
170 bool GetProgressByName(const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
171
172};
188UCLASS()
189class ONLINESUBSYSTEMPICO_API UOnlinePicoAchievementsFunction : public UBlueprintFunctionLibrary
190{
191 GENERATED_BODY()
192
193
194public:
195
208 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
209 static void PicoAddCount(UObject* WorldContextObject, const FString& Name, const FString& Count, const FString& ExtraData, FAddCount InAddCountCallback);
210
222 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
223 static void PicoAddFields(UObject* WorldContextObject, const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
224
232 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
233 static void PicoUnlock(UObject* WorldContextObject, const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
234
243 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
244 static void PicoGetAllDefinitions(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
245
255 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
256 static void PicoGetAllProgress(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
257
265 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
266 static void PicoGetDefinitionsByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
267
276 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
277 static void PicoGetProgressByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
278
279 // get next achievement definition page
280
281 // get next achievement progress page
282};
283 // end of BP_Achievements // end of BlueprintFunction
286
287
289UCLASS(BlueprintType)
290class ONLINESUBSYSTEMPICO_API UPico_AchievementUpdate : public UObject
291{
292 GENERATED_BODY()
293
294public:
295 void InitParams(ppfAchievementUpdateHandle ppfAchievementUpdateHandle);
296
297private:
298 FString Name = FString();
299 bool JustUnlocked = false;
300public:
301
303 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
304 FString GetName();
305
307 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
308 bool GetJustUnlocked();
309};
310
312UCLASS(BlueprintType)
313class ONLINESUBSYSTEMPICO_API UPico_AchievementProgress : public UObject
314{
315
316 GENERATED_BODY()
317
318public:
319 void InitParams(ppfAchievementProgressHandle ppfAchievementProgressHandle);
320
321private:
322 FString Bitfield = FString();
323 long long Count = 0;
324 bool IsUnlocked = false;
325 FString Name = FString();
326 ppfID ID = 0;
327 unsigned long long UnlockTime = 0;
328 TArray<uint8> ExtraData;
329public:
330
332 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
333 FString GetBitfield();
334
336 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
337 int64 GetCount();
338
340 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
341 bool GetIsUnlocked();
342
344 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
345 FString GetName();
346
348 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
349 FString GetUnlockTime();
350
352 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
353 FDateTime GetUnlockDateTime();
354
356 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
357 FString GetID();
358
360 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
361 TArray<uint8> GetExtraData();
362
364 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
365 FString GetExtraDataString();
366};
367
369UCLASS(BlueprintType)
370class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinition : public UObject
371{
372
373 GENERATED_BODY()
374
375public:
376 void InitParams(ppfAchievementDefinition* ppfAchievementDefinitionHandle);
377
378private:
379 EAchievementType Type = EAchievementType::Unknown;
380 unsigned int BitfieldLength = 0;
381 FString Name = FString();
382 long long Target = 0;
383 FString Description = FString();
384 FString Title = FString();
385 bool IsArchived = false;
386 bool IsSecret = false;
387 ppfID ID = 0;
388 FString UnlockedDescription = FString();
390 FString LockedImageURL = FString();
391 FString UnlockedImageURL = FString();
392public:
393
395 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
396 FString GetName();
397
399 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
400 FString GetBitfieldLength();
401
403 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
404 int64 GetTarget();
405
407 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
409
411 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
412 FString GetDescription();
413
415 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
416 FString GetTitle();
417
419 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
420 bool GetIsArchived();
421
423 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
424 bool GetIsSecret();
425
427 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
428 FString GetID();
429
431 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
432 FString GetUnlockedDescription();
433
435 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
436 EAchievementWritePolicy GetWritePolicy();
437
439 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
440 FString GetLockedImageURL();
441
443 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
444 FString GetUnlockedImageURL();
445};
446
448UCLASS(BlueprintType)
449class ONLINESUBSYSTEMPICO_API UPico_AchievementProgressArray : public UObject
450{
451 GENERATED_BODY()
452private:
453 UPROPERTY()
454 TArray<UPico_AchievementProgress*> AchievementProgressArray;
455 int32 Size = 0;
456 int32 TotalSize = 0;
457 bool bHasNextPage;
458public:
459 void InitParams(ppfAchievementProgressArrayHandle InppfAchievementProgressArrayHandle);
460
462 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
463 UPico_AchievementProgress* GetElement(int32 Index);
464
465
467 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
468 int32 GetSize();
469
470 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
471 int32 GetTotalSize();
472
474 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
475 bool HasNextPage();
476};
477
479UCLASS(BlueprintType)
480class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinitionArray : public UObject
481{
482
483 GENERATED_BODY()
484private:
485 UPROPERTY()
486 TArray<UPico_AchievementDefinition*> AchievementDefinitionArray;
487 int32 Size = 0;
488 int32 TotalSize = 0;
489 bool bHasNextPage;
490
491public:
492 void InitParams(ppfAchievementDefinitionArrayHandle InppfAchievementDefinitionArrayHandle);
493
495 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
496 UPico_AchievementDefinition* GetElement(int32 Index);
497
499 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
500 int32 GetSize();
501
502 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
503 int32 GetTotalSize();
504
506 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
507 bool HasNextPage();
508};
PicoAchievementsInterface class.
Definition: Pico_Achievements.h:44
bool GetAllDefinitions(int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback)
Gets the information about all achievements, including API names, descriptions, types,...
bool AddFields(const FString &Name, const FString &Fields, const FString &ExtraData, FAddFields InAddFieldsCallback)
Unlocks the bit(s) of a specified bitfield achievement. The status of the bit(s) is then unchangeable...
bool Unlock(const FString &Name, const FString &ExtraData, FUnlock InUnlockCallback)
Unlocks a specified achievement of any type even if the target for unlocking this achievement is not ...
bool GetDefinitionsByName(const TArray< FString > &NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback)
Gets the information about specified achievements, including API names, descriptions,...
bool AddCount(const FString &Name, const int64 &Count, const FString &ExtraData, FAddCount InAddCountDelegate)
Adds a count to a specified count achievement. The count will be added to the current count,...
bool GetProgressByName(const TArray< FString > &NameArray, FGetProgressByName InGetProgressByNameCallback)
Gets the user's progress on specified achievements, including API names, whether or not the achieveme...
bool GetAllProgress(int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback)
Gets the user's progress on all achievements, including API names, whether or not the achievements ar...
OnlinePicoAchievements Blueprint Function class.
Definition: Pico_Achievements.h:190
UPico_AchievementDefinitionArray class.
Definition: Pico_Achievements.h:481
UPico_AchievementDefinition class.
Definition: Pico_Achievements.h:371
UPico_AchievementProgressArray class.
Definition: Pico_Achievements.h:450
UPico_AchievementProgress class.
Definition: Pico_Achievements.h:314
UPico_AchievementUpdate class.
Definition: Pico_Achievements.h:291
EAchievementType
The type of the achievement.
Definition: OnlineSubsystemPicoNames.h:561
EAchievementWritePolicy
The write policy of the achievement.
Definition: OnlineSubsystemPicoNames.h:570