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:
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};
OnlineSubsystemPico class inherited from FOnlineSubsystemImpl(Unreal Engine)
Definition: OnlineSubsystemPico.h:44
PicoAchievementsInterface class.
Definition: Pico_Achievements.h:46
OnlinePicoAchievements Blueprint Function class.
Definition: Pico_Achievements.h:186