PICO Unreal Platform SDK
OnlineLeaderboardInterfacePico.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
5#pragma once
6
7#include "CoreMinimal.h"
8#include "OnlineSubsystemPico.h"
9#include "Interfaces/OnlineLeaderboardInterface.h"
10#include "OnlineIdentityPico.h"
11#include "OnlineSubsystemPicoPackage.h"
12
13#define WRITE_LEADERBOARDS_PAGEINDEX FName(TEXT("WRITELEADERBOARDSPAGEINDEX"))
14#define WRITE_LEADERBOARDS_PAGESIZE FName(TEXT("WRITELEADERBOARDSPAGESIZE"))
15
30class FOnlineLeaderboardPico : public IOnlineLeaderboards
31{
32private:
33
34 // Reference to the owning subsystem
35 FOnlineSubsystemPico& PicoSubsystem;
36
37 bool ReadPicoLeaderboards(bool bOnlyFriends, bool bOnlyLoggedInUser, FOnlineLeaderboardReadRef& ReadObject);
38 void OnReadLeaderboardsComplete(ppfMessageHandle Message, bool bIsError, const FOnlineLeaderboardReadRef& ReadObject);
39
40 const char* FilterTypeNames[4] = { "None", "Friends", "Unknown", "UserIds" };
41 const char* StartAtNames[4] = { "Top", "CenteredOnViewer", "CenteredOnViewerOrTop", "Unknown" };
42
43 static void SaveLog(const ELogVerbosity::Type Verbosity, const FString& Log);
44
45public:
46
47
48 //Constructor * @param InSubsystem - A reference to the owning subsystem
49 FOnlineLeaderboardPico(FOnlineSubsystemPico& InSubsystem);
50
51 // Default destructor
52 virtual ~FOnlineLeaderboardPico() = default;
53
54 // Begin IOnlineLeaderboard interface
55
70#if ENGINE_MAJOR_VERSION > 4
71 virtual bool ReadLeaderboards(const TArray< FUniqueNetIdRef >& Players, FOnlineLeaderboardReadRef& ReadObject) override;
72#elif ENGINE_MINOR_VERSION > 26
73 virtual bool ReadLeaderboards(const TArray< FUniqueNetIdRef >& Players, FOnlineLeaderboardReadRef& ReadObject) override;
74#elif ENGINE_MINOR_VERSION > 24
75 virtual bool ReadLeaderboards(const TArray< TSharedRef<const FUniqueNetId> >& Players, FOnlineLeaderboardReadRef& ReadObject) override;
76#endif
77
87 virtual bool ReadLeaderboardsForFriends(int32 LocalUserNum, FOnlineLeaderboardReadRef& ReadObject) override;
88
89 // Not supported. Always return false.
90 virtual bool ReadLeaderboardsAroundRank(int32 Rank, uint32 Range, FOnlineLeaderboardReadRef& ReadObject) override;
91
92 // Not supported. Always return false.
93 virtual bool ReadLeaderboardsAroundUser(TSharedRef<const FUniqueNetId> Player, uint32 Range, FOnlineLeaderboardReadRef& ReadObject) override;
94
95 // Not supported.
96 virtual void FreeStats(FOnlineLeaderboardRead& ReadObject) override;
97
109 virtual bool WriteLeaderboards(const FName& SessionName, const FUniqueNetId& Player, FOnlineLeaderboardWrite& WriteObject) override;
110
120 virtual bool FlushLeaderboards(const FName& SessionName) override;
121
122 // Not supported. Always return false.
123 virtual bool WriteOnlinePlayerRatings(const FName& SessionName, int32 LeaderboardId, const TArray<FOnlinePlayerScore>& PlayerScores) override;
124 // End IOnlineLeaderboard interface
125};
126#if ENGINE_MINOR_VERSION > 26
127typedef TSharedPtr<FOnlineLeaderboardPico, ESPMode::ThreadSafe> FOnlineLeaderboardPicoPtr;
128#elif ENGINE_MINOR_VERSION > 24
129#endif
130 // end of Leaderboard // end of Function
Definition: OnlineLeaderboardInterfacePico.h:31
virtual bool FlushLeaderboards(const FName &SessionName) override
Executes developer-defined functions.
virtual bool ReadLeaderboardsForFriends(int32 LocalUserNum, FOnlineLeaderboardReadRef &ReadObject) override
Gets the entries of a leaderboard.
virtual bool WriteLeaderboards(const FName &SessionName, const FUniqueNetId &Player, FOnlineLeaderboardWrite &WriteObject) override
Writes an entry to a leaderboard for the current logged-in user.