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
50
51 // Default destructor
52 virtual ~FOnlineLeaderboardPico() = default;
53
54 // Begin IOnlineLeaderboard interface
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
88 virtual bool ReadLeaderboardsForFriends(int32 LocalUserNum, FOnlineLeaderboardReadRef& ReadObject) override;
89
90 // Not supported. Always return false.
91 virtual bool ReadLeaderboardsAroundRank(int32 Rank, uint32 Range, FOnlineLeaderboardReadRef& ReadObject) override;
92
93 // Not supported. Always return false.
94 virtual bool ReadLeaderboardsAroundUser(TSharedRef<const FUniqueNetId> Player, uint32 Range, FOnlineLeaderboardReadRef& ReadObject) override;
95
96 // Not supported.
97 virtual void FreeStats(FOnlineLeaderboardRead& ReadObject) override;
98
110 virtual bool WriteLeaderboards(const FName& SessionName, const FUniqueNetId& Player, FOnlineLeaderboardWrite& WriteObject) override;
111
121 virtual bool FlushLeaderboards(const FName& SessionName) override;
122
123 // Not supported. Always return false.
124 virtual bool WriteOnlinePlayerRatings(const FName& SessionName, int32 LeaderboardId, const TArray<FOnlinePlayerScore>& PlayerScores) override;
125 // End IOnlineLeaderboard interface
126};
127#if ENGINE_MINOR_VERSION > 26
128typedef TSharedPtr<FOnlineLeaderboardPico, ESPMode::ThreadSafe> FOnlineLeaderboardPicoPtr;
129#elif ENGINE_MINOR_VERSION > 24
130#endif
131 // end of Leaderboard // end of Function
Definition: OnlineLeaderboardInterfacePico.h:31
virtual bool FlushLeaderboards(const FName &SessionName) override
Executes developer-defined functions.
Definition: OnlineLeaderboardInterfacePico.cpp:293
virtual bool WriteLeaderboards(const FName &SessionName, const FUniqueNetId &Player, FOnlineLeaderboardWrite &WriteObject) override
Writes an entry to a leaderboard for the current logged-in user.
Definition: OnlineLeaderboardInterfacePico.cpp:210
virtual bool ReadLeaderboardsForFriends(int32 LocalUserNum, FOnlineLeaderboardReadRef &ReadObject) override
Gets the entries of a leaderboard.
Definition: OnlineLeaderboardInterfacePico.cpp:45
OnlineSubsystemPico class inherited from FOnlineSubsystemImpl(Unreal Engine)
Definition: OnlineSubsystemPico.h:44