PICO Unreal Platform SDK
Pico_Achievements.h
1// Copyright 2022 Pico Technology Co., Ltd.All rights reserved.
2// This plugin incorporates portions of the Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc.In the United States of America and elsewhere.
3// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
4#pragma once
5
6#include "CoreMinimal.h"
7#include "UObject/NoExportTypes.h"
8#include "PPF_Platform.h"
9#include "OnlineSubsystemPicoNames.h"
10#include "OnlineSubsystemPico.h"
11#include "Pico_Achievements.generated.h"
12
14
15DECLARE_LOG_CATEGORY_EXTERN(PicoAchievements, Log, All);
16
17class UPico_AchievementDefinition;
18class UPico_AchievementProgress;
19class UPico_AchievementProgressArray;
20class UPico_AchievementDefinitionArray;
21class UPico_AchievementUpdate;
22
26DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddCount, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
27DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddFields, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
28DECLARE_DYNAMIC_DELEGATE_ThreeParams(FUnlock, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
29DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllDefinitions, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
30DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllProgress, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
31DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetDefinitionsByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
32DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetProgressByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
33
45class ONLINESUBSYSTEMPICO_API FPicoAchievementsInterface
46{
47private:
48
49 FOnlineSubsystemPico& PicoSubsystem;
50
51public:
52 FPicoAchievementsInterface(FOnlineSubsystemPico& InSubsystem);
54
55 FAddCount AddCountDelegate;
56 FAddFields AddFieldsDelegate;
57 FUnlock UnlockDelegate;
58 FGetAllDefinitions GetAllDefinitionsDelegate;
59 FGetAllProgress GetAllProgressDelegate;
60 FGetDefinitionsByName GetDefinitionsByNameDelegate;
61 FGetProgressByName GetProgressByNameDelegate;
62
81 bool AddCount(const FString& Name, const int64& Count, const FString& ExtraData, FAddCount InAddCountDelegate);
82
98 bool AddFields(const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
99
110 bool Unlock(const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
111
124 bool GetAllDefinitions(int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
125
139 bool GetAllProgress(int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
140
152 bool GetDefinitionsByName(const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
153
166 bool GetProgressByName(const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
167
168};
184UCLASS()
185class ONLINESUBSYSTEMPICO_API UOnlinePicoAchievementsFunction : public UBlueprintFunctionLibrary
186{
187 GENERATED_BODY()
188
189
190public:
191
209 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
210 static void PicoAddCount(UObject* WorldContextObject, const FString& Name, const FString& Count, const FString& ExtraData, FAddCount InAddCountCallback);
211
228 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
229 static void PicoAddFields(UObject* WorldContextObject, const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
230
243 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
244 static void PicoUnlock(UObject* WorldContextObject, const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
245
259 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
260 static void PicoGetAllDefinitions(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
261
276 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
277 static void PicoGetAllProgress(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
278
291 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
292 static void PicoGetDefinitionsByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
293
307 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
308 static void PicoGetProgressByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
309
310 // get next achievement definition page
311
312 // get next achievement progress page
313};
314 // end of BP_Achievements // end of BlueprintFunction
317
318
319//
320UCLASS(BlueprintType)
321class ONLINESUBSYSTEMPICO_API UPico_AchievementUpdate : public UObject
322{
323 GENERATED_BODY()
324
325public:
326 void InitParams(ppfAchievementUpdateHandle ppfAchievementUpdateHandle);
327
328private:
329 FString Name = FString();
330 bool JustUnlocked = false;
331public:
332
333 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
334 FString GetName();
335
336 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
337 bool GetJustUnlocked();
338};
339UCLASS(BlueprintType)
340class ONLINESUBSYSTEMPICO_API UPico_AchievementProgress : public UObject
341{
342
343 GENERATED_BODY()
344
345public:
346 void InitParams(ppfAchievementProgressHandle ppfAchievementProgressHandle);
347
348private:
349 FString Bitfield = FString();
350 long long Count = 0;
351 bool IsUnlocked = false;
352 FString Name = FString();
353 uint64_t ID = 0;
354 unsigned long long UnlockTime = 0;
355 TArray<uint8> ExtraData;
356public:
357
358 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
359 FString GetBitfield();
360
361 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
362 int64 GetCount();
363
364 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
365 bool GetIsUnlocked();
366
367 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
368 FString GetName();
369
370 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
371 FString GetUnlockTime();
372
373 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
374 FDateTime GetUnlockDateTime();
375
376 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
377 FString GetID();
378
379 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
380 TArray<uint8> GetExtraData();
381
382 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
383 FString GetExtraDataString();
384};
385UCLASS(BlueprintType)
386class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinition : public UObject
387{
388
389 GENERATED_BODY()
390
391public:
392 void InitParams(ppfAchievementDefinition* ppfAchievementDefinitionHandle);
393
394private:
396 unsigned int BitfieldLength = 0;
397 FString Name = FString();
398 long long Target = 0;
399 FString Description = FString();
400 FString Title = FString();
401 bool IsArchived = false;
402 bool IsSecret = false;
403 uint64_t ID = 0;
404 FString UnlockedDescription = FString();
406 FString LockedImageURL = FString();
407 FString UnlockedImageURL = FString();
408public:
409
410 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
411 FString GetName();
412
413 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
414 FString GetBitfieldLength();
415
416 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
417 int64 GetTarget();
418
419 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
420 EAchievementType GetType();
421
422 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
423 FString GetDescription();
424
425 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
426 FString GetTitle();
427
428 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
429 bool GetIsArchived();
430
431 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
432 bool GetIsSecret();
433
434 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
435 FString GetID();
436
437 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
438 FString GetUnlockedDescription();
439
440 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
441 EAchievementWritePolicy GetWritePolicy();
442
443 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
444 FString GetLockedImageURL();
445
446 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
447 FString GetUnlockedImageURL();
448};
449
450UCLASS(BlueprintType)
451class ONLINESUBSYSTEMPICO_API UPico_AchievementProgressArray : public UObject
452{
453 GENERATED_BODY()
454private:
455 UPROPERTY()
456 TArray<UPico_AchievementProgress*> AchievementProgressArray;
457 FString NextPageParam = FString();
458 int32 Size = 0;
459 int32 TotalSize = 0;
460 bool bHasNextPage;
461public:
462 void InitParams(ppfAchievementProgressArrayHandle InppfAchievementProgressArrayHandle);
463
464 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
465 UPico_AchievementProgress* GetElement(int32 Index);
466
467 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
468 FString GetNextPageParam();
469
470 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
471 int32 GetSize();
472
473 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
474 int32 GetTotalSize();
475
476 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
477 bool HasNextPage();
478};
479
480UCLASS(BlueprintType)
481class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinitionArray : public UObject
482{
483
484 GENERATED_BODY()
485private:
486 UPROPERTY()
487 TArray<UPico_AchievementDefinition*> AchievementDefinitionArray;
488 FString NextPageParam = FString();
489 int32 Size = 0;
490 int32 TotalSize = 0;
491 bool bHasNextPage;
492
493public:
494 void InitParams(ppfAchievementDefinitionArrayHandle InppfAchievementDefinitionArrayHandle);
495
496 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
497 UPico_AchievementDefinition* GetElement(int32 Index);
498
499 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
500 FString GetNextPageParam();
501
502 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
503 int32 GetSize();
504
505 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
506 int32 GetTotalSize();
507
508 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
509 bool HasNextPage();
510};
PicoAchievementsInterface class.
Definition: Pico_Achievements.h:46
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:186
EAchievementType
The type of the achievement.
Definition: OnlineSubsystemPicoNames.h:563
EAchievementWritePolicy
The write policy of the achievement.
Definition: OnlineSubsystemPicoNames.h:572