PICO Unreal Platform SDK
Pico_Leaderboards.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_User.h"
10#include "Pico_Leaderboards.generated.h"
11
13
14DECLARE_LOG_CATEGORY_EXTERN(PicoLeaderboards, Log, All);
15
20class UPico_User;
21
22
26DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGet, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardArray*, LeaderboardList);
27DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntries, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
28DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntriesAfterRank, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
29DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntriesByIds, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
30DECLARE_DYNAMIC_DELEGATE_ThreeParams(FWriteEntry, bool, bIsError, const FString&, ErrorMessage, bool, WriteResult);
31DECLARE_DYNAMIC_DELEGATE_ThreeParams(FWriteEntryWithSupplementaryMetric, bool, bIsError, const FString&, ErrorMessage, bool, WriteResult);
32
44class ONLINESUBSYSTEMPICO_API FPicoLeaderboardsInterface
45{
46private:
47
48 FOnlineSubsystemPico& PicoSubsystem;
49
50public:
51 FPicoLeaderboardsInterface(FOnlineSubsystemPico& InSubsystem);
53
54 FGet GetDelegate;
55 FGetEntries GetEntriesDelegate;
56 FGetEntriesAfterRank GetEntriesAfterRankDelegate;
57 FGetEntriesByIds GetEntriesByIdsDelegate;
58 FWriteEntry WriteEntryDelegate;
59 FWriteEntryWithSupplementaryMetric WriteEntryWithSupplementaryMetricDelegate;
60
71 bool Get(const FString& LeaderboardName, FGet InGetDelegate);
72
102 bool GetEntries(const FString& LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardFilterType Filter, ppfLeaderboardStartAt StartAt, FGetEntries InGetEntriesDelegate);
103
118 bool GetEntriesAfterRank(const FString& LeaderboardName, int PageIdx, int PageSize, unsigned long long AfterRank, FGetEntriesAfterRank InGetEntriesAfterRankDelegate);
119
145 bool GetEntriesByIds(const FString& LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardStartAt StartAt, const TArray<FString>& UserIDs, FGetEntriesByIds InGetEntriesByIdsDelegate);
146
162 bool WriteEntry(const FString& LeaderboardName, const int64& Score, const FString& ExtraData, bool ForceUpdate, FWriteEntry InWriteEntryDelegate);
163
180 bool WriteEntryWithSupplementaryMetric(const FString& LeaderboardName, const int64& Score, const int64& SupplementaryMetric, const FString& ExtraData, bool ForceUpdate, FWriteEntryWithSupplementaryMetric InWriteEntryWithSupplementaryMetricDelegate);
181
182};
198UCLASS()
199class ONLINESUBSYSTEMPICO_API UOnlinePicoLeaderboardsFunction : public UBlueprintFunctionLibrary
200{
201 GENERATED_BODY()
202
203
204public:
205
211 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
212 static void Get(UObject* WorldContextObject, const FString& LeaderboardName, FGet InGetDelegate);
213
238 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
239 static void GetEntries(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, ELeaderboardFilterType Filter, ELeaderboardStartAt StartAt, FGetEntries InGetEntriesDelegate);
240
250 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
251 static void GetEntriesAfterRank(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, const FString& AfterRank, FGetEntriesAfterRank InGetEntriesAfterRankDelegate);
252
273 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
274 static void GetEntriesByIds(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, ELeaderboardStartAt StartAt, const TArray<FString>& UserIDs, FGetEntriesByIds InGetEntriesByIdsDelegate);
275
286 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
287 static void WriteEntry(UObject* WorldContextObject, const FString& LeaderboardName, const FString& Score, const FString& ExtraData, bool ForceUpdate, FWriteEntry InWriteEntryDelegate);
288
300 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
301 static void WriteEntryWithSupplementaryMetric(UObject* WorldContextObject, const FString& LeaderboardName, const FString& Score, const FString& SupplementaryMetric, const FString& ExtraData, bool ForceUpdate, FWriteEntryWithSupplementaryMetric InWriteEntryWithSupplementaryMetricDelegate);
302
303};
304 // end of BP_Leaderboards // end of BlueprintFunction
307
308
310UCLASS(BlueprintType)
311class ONLINESUBSYSTEMPICO_API UPico_LeaderboardEntry : public UObject
312{
313
314 GENERATED_BODY()
315
316public:
317 void InitParams(ppfLeaderboardEntryHandle ppfLeaderboardEntryHandle);
318
319private:
320 ppfID ID = 0;
321 FString DisplayScore = FString();
322 int Rank = 0;
323 long Score = 0;
324 FPicoSupplementaryMetric SupplementaryMetricOptional;
325 unsigned long long Timestamp = 0;
326 UPROPERTY()
327 UPico_User* User = nullptr;
328 TArray<uint8> ExtraData;
329public:
330
332 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
333 FString GetID();
334
336 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
337 FString GetDisplayScore();
338
340 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
341 int32 GetRank();
342
344 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
345 int64 GetScore();
346
348 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
349 FPicoSupplementaryMetric GetSupplementaryMetricOptional();
350
352 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
353 FString GetTimestamp();
354
356 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
357 FDateTime GetTimestampDateTime();
358
360 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
361 UPico_User* GetUser();
362
364 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
365 FString GetExtraDataString();
366
367};
368
370UCLASS(BlueprintType)
371class ONLINESUBSYSTEMPICO_API UPico_Leaderboard : public UObject
372{
373
374 GENERATED_BODY()
375
376public:
377 void InitParams(ppfLeaderboard* ppfLeaderboardHandle);
378
379private:
380 FString ApiName = FString();
381 ppfID ID = 0;
382 FPicoDestination DestinationOptional;
383public:
384
386 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
387 FString GetApiName();
388
390 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
391 FString GetID();
392
397 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
398 FPicoDestination GetDestinationOptional();
399};
400
402UCLASS(BlueprintType)
403class ONLINESUBSYSTEMPICO_API UPico_LeaderboardEntryArray : public UObject
404{
405 GENERATED_BODY()
406private:
407 UPROPERTY()
408 TArray<UPico_LeaderboardEntry*> LeaderboardEntryArray;
409 int32 Size = 0;
410 unsigned long long TotalSize = 0;
411 bool bHasNextPage;
412 bool bHasPreviousPage;
413public:
414 void InitParams(ppfLeaderboardEntryArrayHandle InppfLeaderboardEntryArrayHandle);
415
417 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
418 UPico_LeaderboardEntry* GetElement(int32 Index);
419
420
422 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
423 int32 GetSize();
424
425
426 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
427 int32 GetTotalSize();
428
430 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
431 bool HasNextPage();
432
433 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
434 bool HasPreviousPage();
435
436 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
437 FString GetDebugString();
438};
439
441UCLASS(BlueprintType)
442class ONLINESUBSYSTEMPICO_API UPico_LeaderboardArray : public UObject
443{
444
445 GENERATED_BODY()
446private:
447 UPROPERTY()
448 TArray<UPico_Leaderboard*> LeaderboardArray;
449 int32 Size = 0;
450 bool bHasNextPage;
451 unsigned long long TotalSize = 0;
452
453public:
454 void InitParams(ppfLeaderboardArrayHandle InppfLeaderboardArrayHandle);
455
457 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
458 UPico_Leaderboard* GetElement(int32 Index);
459
461 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
462 int32 GetSize();
463
464
466 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
467 int32 GetTotalSize();
468
470 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
471 bool HasNextPage();
472
473 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
474 FString GetDebugString();
475};
PicoLeaderboardsInterface class.
Definition: Pico_Leaderboards.h:45
bool WriteEntry(const FString &LeaderboardName, const int64 &Score, const FString &ExtraData, bool ForceUpdate, FWriteEntry InWriteEntryDelegate)
Writes a user's score to the leaderboard.
bool WriteEntryWithSupplementaryMetric(const FString &LeaderboardName, const int64 &Score, const int64 &SupplementaryMetric, const FString &ExtraData, bool ForceUpdate, FWriteEntryWithSupplementaryMetric InWriteEntryWithSupplementaryMetricDelegate)
Adds custom contents when writing a user's score to a leaderboard.
bool GetEntries(const FString &LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardFilterType Filter, ppfLeaderboardStartAt StartAt, FGetEntries InGetEntriesDelegate)
Gets a list of leaderboard entries.
bool GetEntriesAfterRank(const FString &LeaderboardName, int PageIdx, int PageSize, unsigned long long AfterRank, FGetEntriesAfterRank InGetEntriesAfterRankDelegate)
Gets the leaderboard entries after a specified ranking.
bool GetEntriesByIds(const FString &LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardStartAt StartAt, const TArray< FString > &UserIDs, FGetEntriesByIds InGetEntriesByIdsDelegate)
Gets the leaderboard entries for a specified user.
bool Get(const FString &LeaderboardName, FGet InGetDelegate)
Gets a specified leaderboard.
OnlinePicoLeaderboards Blueprint Function class.
Definition: Pico_Leaderboards.h:200
UPico_LeaderboardArray class.
Definition: Pico_Leaderboards.h:443
UPico_LeaderboardEntryArray class.
Definition: Pico_Leaderboards.h:404
UPico_LeaderboardEntry class.
Definition: Pico_Leaderboards.h:312
UPico_Leaderboard class.
Definition: Pico_Leaderboards.h:372
UPico_User class.
Definition: Pico_User.h:451
ELeaderboardStartAt
The type of sorting to use when getting leaderboard or challenge entries.
Definition: OnlineSubsystemPicoNames.h:646
ELeaderboardFilterType
The type of filter to use when using leaderboards or challenges.
Definition: OnlineSubsystemPicoNames.h:662
The destination information.
Definition: OnlineSubsystemPicoNames.h:196
Supplementary metrics for leaderboards.
Definition: OnlineSubsystemPicoNames.h:672