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:
395 EAchievementType Type = EAchievementType::Unknown;
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();
405 EAchievementWritePolicy WritePolicy = EAchievementWritePolicy::Unknown;
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 TArray<UPico_AchievementProgress*> AchievementProgressArray;
456 FString NextPageParam = FString();
457 int32 Size = 0;
458 bool bHasNextPage;
459public:
460 void InitParams(ppfAchievementProgressArrayHandle InppfAchievementProgressArrayHandle);
461
462 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
463 UPico_AchievementProgress* GetElement(int32 Index);
464
465 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
466 FString GetNextPageParam();
467
468 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
469 int32 GetSize();
470
471 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
472 bool HasNextPage();
473};
474
475UCLASS(BlueprintType)
476class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinitionArray : public UObject
477{
478
479 GENERATED_BODY()
480private:
481 TArray<UPico_AchievementDefinition*> AchievementDefinitionArray;
482 FString NextPageParam = FString();
483 int32 Size = 0;
484 bool bHasNextPage;
485
486public:
487 void InitParams(ppfAchievementDefinitionArrayHandle InppfAchievementDefinitionArrayHandle);
488
489 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
490 UPico_AchievementDefinition* GetElement(int32 Index);
491
492 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
493 FString GetNextPageParam();
494
495 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
496 int32 GetSize();
497
498 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
499 bool HasNextPage();
500};
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