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 "Kismet/BlueprintFunctionLibrary.h"
11#include "Pico_Leaderboards.generated.h"
12
14
15DECLARE_LOG_CATEGORY_EXTERN(PicoLeaderboards, Log, All);
16
21class UPico_User;
22
23
27DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGet, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardArray*, LeaderboardList);
28DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntries, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
29DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntriesAfterRank, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
30DECLARE_DYNAMIC_DELEGATE_ThreeParams(FGetEntriesByIds, bool, bIsError, const FString&, ErrorMessage, UPico_LeaderboardEntryArray*, LeaderboardEntryList);
31DECLARE_DYNAMIC_DELEGATE_ThreeParams(FWriteEntry, bool, bIsError, const FString&, ErrorMessage, bool, WriteResult);
32DECLARE_DYNAMIC_DELEGATE_ThreeParams(FWriteEntryWithSupplementaryMetric, bool, bIsError, const FString&, ErrorMessage, bool, WriteResult);
33
45class ONLINESUBSYSTEMPICO_API FPicoLeaderboardsInterface
46{
47private:
48
49 FOnlineSubsystemPico& PicoSubsystem;
50
51public:
52 FPicoLeaderboardsInterface(FOnlineSubsystemPico& InSubsystem);
54
55 FGet GetDelegate;
56 FGetEntries GetEntriesDelegate;
57 FGetEntriesAfterRank GetEntriesAfterRankDelegate;
58 FGetEntriesByIds GetEntriesByIdsDelegate;
59 FWriteEntry WriteEntryDelegate;
60 FWriteEntryWithSupplementaryMetric WriteEntryWithSupplementaryMetricDelegate;
61
72 bool Get(const FString& LeaderboardName, FGet InGetDelegate);
73
103 bool GetEntries(const FString& LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardFilterType Filter, ppfLeaderboardStartAt StartAt, FGetEntries InGetEntriesDelegate);
104
119 bool GetEntriesAfterRank(const FString& LeaderboardName, int PageIdx, int PageSize, unsigned long long AfterRank, FGetEntriesAfterRank InGetEntriesAfterRankDelegate);
120
146 bool GetEntriesByIds(const FString& LeaderboardName, int PageIdx, int PageSize, ppfLeaderboardStartAt StartAt, const TArray<FString>& UserIDs, FGetEntriesByIds InGetEntriesByIdsDelegate);
147
163 bool WriteEntry(const FString& LeaderboardName, const int64& Score, const FString& ExtraData, bool ForceUpdate, FWriteEntry InWriteEntryDelegate);
164
181 bool WriteEntryWithSupplementaryMetric(const FString& LeaderboardName, const int64& Score, const int64& SupplementaryMetric, const FString& ExtraData, bool ForceUpdate, FWriteEntryWithSupplementaryMetric InWriteEntryWithSupplementaryMetricDelegate);
182
183};
199UCLASS()
200class ONLINESUBSYSTEMPICO_API UOnlinePicoLeaderboardsFunction : public UBlueprintFunctionLibrary
201{
202 GENERATED_BODY()
203
204
205public:
206
212 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
213 static void Get(UObject* WorldContextObject, const FString& LeaderboardName, FGet InGetDelegate);
214
239 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
240 static void GetEntries(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, ELeaderboardFilterType Filter, ELeaderboardStartAt StartAt, FGetEntries InGetEntriesDelegate);
241
251 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
252 static void GetEntriesAfterRank(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, const FString& AfterRank, FGetEntriesAfterRank InGetEntriesAfterRankDelegate);
253
274 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
275 static void GetEntriesByIds(UObject* WorldContextObject, const FString& LeaderboardName, int PageIdx, int PageSize, ELeaderboardStartAt StartAt, const TArray<FString>& UserIDs, FGetEntriesByIds InGetEntriesByIdsDelegate);
276
287 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
288 static void WriteEntry(UObject* WorldContextObject, const FString& LeaderboardName, const FString& Score, const FString& ExtraData, bool ForceUpdate, FWriteEntry InWriteEntryDelegate);
289
301 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Leaderboards")
302 static void WriteEntryWithSupplementaryMetric(UObject* WorldContextObject, const FString& LeaderboardName, const FString& Score, const FString& SupplementaryMetric, const FString& ExtraData, bool ForceUpdate, FWriteEntryWithSupplementaryMetric InWriteEntryWithSupplementaryMetricDelegate);
303
304};
305 // end of BP_Leaderboards // end of BlueprintFunction
308
309
311UCLASS(BlueprintType)
312class ONLINESUBSYSTEMPICO_API UPico_LeaderboardEntry : public UObject
313{
314
315 GENERATED_BODY()
316
317public:
318 void InitParams(ppfLeaderboardEntryHandle ppfLeaderboardEntryHandle);
319
320private:
321 ppfID ID = 0;
322 FString DisplayScore = FString();
323 int Rank = 0;
324 long Score = 0;
325 FPicoSupplementaryMetric SupplementaryMetricOptional;
326 unsigned long long Timestamp = 0;
327 UPROPERTY()
328 UPico_User* User = nullptr;
329 TArray<uint8> ExtraData;
330public:
331
333 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
334 FString GetID();
335
337 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
338 FString GetDisplayScore();
339
341 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
342 int32 GetRank();
343
345 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
346 int64 GetScore();
347
349 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
350 FPicoSupplementaryMetric GetSupplementaryMetricOptional();
351
353 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
354 FString GetTimestamp();
355
357 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
358 FDateTime GetTimestampDateTime();
359
361 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
362 UPico_User* GetUser();
363
365 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry")
366 FString GetExtraDataString();
367
368};
369
371UCLASS(BlueprintType)
372class ONLINESUBSYSTEMPICO_API UPico_Leaderboard : public UObject
373{
374
375 GENERATED_BODY()
376
377public:
378 void InitParams(ppfLeaderboard* ppfLeaderboardHandle);
379
380private:
381 FString ApiName = FString();
382 ppfID ID = 0;
383 FPicoDestination DestinationOptional;
384public:
385
387 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
388 FString GetApiName();
389
391 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
392 FString GetID();
393
398 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard")
399 FPicoDestination GetDestinationOptional();
400};
401
403UCLASS(BlueprintType)
404class ONLINESUBSYSTEMPICO_API UPico_LeaderboardEntryArray : public UObject
405{
406 GENERATED_BODY()
407private:
408 UPROPERTY()
409 TArray<UPico_LeaderboardEntry*> LeaderboardEntryArray;
410 int32 Size = 0;
411 unsigned long long TotalSize = 0;
412 bool bHasNextPage;
413 bool bHasPreviousPage;
414public:
415 void InitParams(ppfLeaderboardEntryArrayHandle InppfLeaderboardEntryArrayHandle);
416
418 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
419 UPico_LeaderboardEntry* GetElement(int32 Index);
420
421
423 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
424 int32 GetSize();
425
426
427 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
428 int32 GetTotalSize();
429
431 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
432 bool HasNextPage();
433
434 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
435 bool HasPreviousPage();
436
437 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Entry Array")
438 FString GetDebugString();
439};
440
442UCLASS(BlueprintType)
443class ONLINESUBSYSTEMPICO_API UPico_LeaderboardArray : public UObject
444{
445
446 GENERATED_BODY()
447private:
448 UPROPERTY()
449 TArray<UPico_Leaderboard*> LeaderboardArray;
450 int32 Size = 0;
451 bool bHasNextPage;
452 unsigned long long TotalSize = 0;
453
454public:
455 void InitParams(ppfLeaderboardArrayHandle InppfLeaderboardArrayHandle);
456
458 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
459 UPico_Leaderboard* GetElement(int32 Index);
460
462 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
463 int32 GetSize();
464
465
467 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
468 int32 GetTotalSize();
469
471 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
472 bool HasNextPage();
473
474 UFUNCTION(BlueprintPure, Category = "Pico Platform|Leaderboards|Leaderboard Definition Array")
475 FString GetDebugString();
476};
PicoLeaderboardsInterface class.
Definition: Pico_Leaderboards.h:46
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:201
UPico_LeaderboardArray class.
Definition: Pico_Leaderboards.h:444
UPico_LeaderboardEntryArray class.
Definition: Pico_Leaderboards.h:405
UPico_LeaderboardEntry class.
Definition: Pico_Leaderboards.h:313
UPico_Leaderboard class.
Definition: Pico_Leaderboards.h:373
UPico_User class.
Definition: Pico_User.h:515
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