PICO Unreal Platform SDK
Pico_Achievements.h
1/*******************************************************************************
2Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
3
4NOTICE:All information contained herein is, and remains the property of
5PICO Technology Co., Ltd. The intellectual and technical concepts
6contained herein are proprietary to PICO Technology Co., Ltd. and may be
7covered by patents, patents in process, and are protected by trade secret or
8copyright law. Dissemination of this information or reproduction of this
9material is strictly forbidden unless prior written permission is obtained from
10PICO Technology Co., Ltd.
11*******************************************************************************/
12// 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.
13// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
14#pragma once
15
16#include "CoreMinimal.h"
17#include "UObject/NoExportTypes.h"
18#include "PPF_Platform.h"
19#include "OnlineSubsystemPicoNames.h"
20#include "OnlineSubsystemPico.h"
21#include "Pico_Achievements.generated.h"
22
24
25DECLARE_LOG_CATEGORY_EXTERN(PicoAchievements, Log, All);
26
27class UPico_AchievementDefinition;
28class UPico_AchievementProgress;
29class UPico_AchievementProgressArray;
30class UPico_AchievementDefinitionArray;
31class UPico_AchievementUpdate;
32
36DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddCount, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
37DECLARE_DYNAMIC_DELEGATE_ThreeParams(FAddFields, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
38DECLARE_DYNAMIC_DELEGATE_ThreeParams(FUnlock, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementUpdate*, AchievementUpdate);
39DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllDefinitions, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
40DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetAllProgress, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
41DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetDefinitionsByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementDefinitionArray*, AchievementDefinitionArray);
42DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetProgressByName, bool, bIsError, const FString&, ErrorMessage, UPico_AchievementProgressArray*, AchievementProgressArray);
43
55class ONLINESUBSYSTEMPICO_API FPicoAchievementsInterface
56{
57private:
58
59 FOnlineSubsystemPico& PicoSubsystem;
60
61public:
62 FPicoAchievementsInterface(FOnlineSubsystemPico& InSubsystem);
64
65 FAddCount AddCountDelegate;
66 FAddFields AddFieldsDelegate;
67 FUnlock UnlockDelegate;
68 FGetAllDefinitions GetAllDefinitionsDelegate;
69 FGetAllProgress GetAllProgressDelegate;
70 FGetDefinitionsByName GetDefinitionsByNameDelegate;
71 FGetProgressByName GetProgressByNameDelegate;
72
91 bool AddCount(const FString& Name, const int64& Count, const FString& ExtraData, FAddCount InAddCountDelegate);
92
108 bool AddFields(const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
109
120 bool Unlock(const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
121
134 bool GetAllDefinitions(int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
135
149 bool GetAllProgress(int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
150
162 bool GetDefinitionsByName(const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
163
176 bool GetProgressByName(const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
177
178};
194UCLASS()
195class ONLINESUBSYSTEMPICO_API UOnlinePicoAchievementsFunction : public UBlueprintFunctionLibrary
196{
197 GENERATED_BODY()
198
199
200public:
201
213 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
214 static void PicoAddCount(UObject* WorldContextObject, const FString& Name, const FString& Count, const FString& ExtraData, FAddCount InAddCountCallback);
215
226 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
227 static void PicoAddFields(UObject* WorldContextObject, const FString& Name, const FString& Fields, const FString& ExtraData, FAddFields InAddFieldsCallback);
228
235 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
236 static void PicoUnlock(UObject* WorldContextObject, const FString& Name, const FString& ExtraData, FUnlock InUnlockCallback);
237
245 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
246 static void PicoGetAllDefinitions(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllDefinitions InGetAllDefinitionsCallback);
247
256 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
257 static void PicoGetAllProgress(UObject* WorldContextObject, int32 PageIndex, int32 PageSize, FGetAllProgress InGetAllProgressCallback);
258
265 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
266 static void PicoGetDefinitionsByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetDefinitionsByName InGetDefinitionsByNameCallback);
267
275 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Achievements")
276 static void PicoGetProgressByName(UObject* WorldContextObject, const TArray<FString>& NameArray, FGetProgressByName InGetProgressByNameCallback);
277
278 // get next achievement definition page
279
280 // get next achievement progress page
281};
282 // end of BP_Achievements // end of BlueprintFunction
285
286
287//
288UCLASS(BlueprintType)
289class ONLINESUBSYSTEMPICO_API UPico_AchievementUpdate : public UObject
290{
291 GENERATED_BODY()
292
293public:
294 void InitParams(ppfAchievementUpdateHandle ppfAchievementUpdateHandle);
295
296private:
297 FString Name = FString();
298 bool JustUnlocked = false;
299public:
300
301 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
302 FString GetName();
303
304 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Update")
305 bool GetJustUnlocked();
306};
307UCLASS(BlueprintType)
308class ONLINESUBSYSTEMPICO_API UPico_AchievementProgress : public UObject
309{
310
311 GENERATED_BODY()
312
313public:
314 void InitParams(ppfAchievementProgressHandle ppfAchievementProgressHandle);
315
316private:
317 FString Bitfield = FString();
318 long long Count = 0;
319 bool IsUnlocked = false;
320 FString Name = FString();
321 ppfID ID = 0;
322 unsigned long long UnlockTime = 0;
323 TArray<uint8> ExtraData;
324public:
325
326 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
327 FString GetBitfield();
328
329 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
330 int64 GetCount();
331
332 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
333 bool GetIsUnlocked();
334
335 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
336 FString GetName();
337
338 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
339 FString GetUnlockTime();
340
341 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
342 FDateTime GetUnlockDateTime();
343
344 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
345 FString GetID();
346
347 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
348 TArray<uint8> GetExtraData();
349
350 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress")
351 FString GetExtraDataString();
352};
353UCLASS(BlueprintType)
354class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinition : public UObject
355{
356
357 GENERATED_BODY()
358
359public:
360 void InitParams(ppfAchievementDefinition* ppfAchievementDefinitionHandle);
361
362private:
364 unsigned int BitfieldLength = 0;
365 FString Name = FString();
366 long long Target = 0;
367 FString Description = FString();
368 FString Title = FString();
369 bool IsArchived = false;
370 bool IsSecret = false;
371 ppfID ID = 0;
372 FString UnlockedDescription = FString();
374 FString LockedImageURL = FString();
375 FString UnlockedImageURL = FString();
376public:
377
378 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
379 FString GetName();
380
381 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
382 FString GetBitfieldLength();
383
384 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
385 int64 GetTarget();
386
387 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
388 EAchievementType GetType();
389
390 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
391 FString GetDescription();
392
393 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
394 FString GetTitle();
395
396 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
397 bool GetIsArchived();
398
399 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
400 bool GetIsSecret();
401
402 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
403 FString GetID();
404
405 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
406 FString GetUnlockedDescription();
407
408 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
409 EAchievementWritePolicy GetWritePolicy();
410
411 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
412 FString GetLockedImageURL();
413
414 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition")
415 FString GetUnlockedImageURL();
416};
417
418UCLASS(BlueprintType)
419class ONLINESUBSYSTEMPICO_API UPico_AchievementProgressArray : public UObject
420{
421 GENERATED_BODY()
422private:
423 UPROPERTY()
424 TArray<UPico_AchievementProgress*> AchievementProgressArray;
425 FString NextPageParam = FString();
426 int32 Size = 0;
427 int32 TotalSize = 0;
428 bool bHasNextPage;
429public:
430 void InitParams(ppfAchievementProgressArrayHandle InppfAchievementProgressArrayHandle);
431
432 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
433 UPico_AchievementProgress* GetElement(int32 Index);
434
435 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
436 FString GetNextPageParam();
437
438 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
439 int32 GetSize();
440
441 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
442 int32 GetTotalSize();
443
444 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Progress Array")
445 bool HasNextPage();
446};
447
448UCLASS(BlueprintType)
449class ONLINESUBSYSTEMPICO_API UPico_AchievementDefinitionArray : public UObject
450{
451
452 GENERATED_BODY()
453private:
454 UPROPERTY()
455 TArray<UPico_AchievementDefinition*> AchievementDefinitionArray;
456 FString NextPageParam = FString();
457 int32 Size = 0;
458 int32 TotalSize = 0;
459 bool bHasNextPage;
460
461public:
462 void InitParams(ppfAchievementDefinitionArrayHandle InppfAchievementDefinitionArrayHandle);
463
464 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
465 UPico_AchievementDefinition* GetElement(int32 Index);
466
467 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
468 FString GetNextPageParam();
469
470 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
471 int32 GetSize();
472
473 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
474 int32 GetTotalSize();
475
476 UFUNCTION(BlueprintPure, Category = "Pico Platform|Achievements|Achievement Definition Array")
477 bool HasNextPage();
478};
PicoAchievementsInterface class.
Definition: Pico_Achievements.h:56
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:196
EAchievementType
The type of the achievement.
Definition: OnlineSubsystemPicoNames.h:573
EAchievementWritePolicy
The write policy of the achievement.
Definition: OnlineSubsystemPicoNames.h:582