PICO Unreal Platform SDK
OnlineFriendsInterfacePico.h
1// Copyright® 2015-2023 PICO Technology Co., Ltd. All rights reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5#include "Interfaces/OnlineFriendsInterface.h"
6#include "Interfaces/OnlinePresenceInterface.h"
7#include "OnlineSubsystemPico.h"
8#include "OnlineSubsystemPicoTypes.h"
9#include "OnlineSubsystemPicoPackage.h"
10
12
13
14
15
17class FOnlinePicoFriend : public FOnlineFriend
18{
19
20private:
21
22#if ENGINE_MAJOR_VERSION > 4
23 FUniqueNetIdPicoRef UserId;
24#elif ENGINE_MINOR_VERSION > 26
25 FUniqueNetIdPicoRef UserId;
26#elif ENGINE_MINOR_VERSION > 24
27 TSharedRef<const FUniqueNetIdPico> UserId;
28#endif
29
30 const FString StrUserId;
31 const FString DisplayName;
32 FOnlineUserPresence Presence;
33 const FString InviteToken;
34 const FString ImageUrl;
35 ppfGender Gender;
36 const FString SmallImageUrl;
37 const FString PresencePackage;
38 ppfUserPresenceStatus UserPresenceStatus;
39 const FString Presencestr;
40 const FString PresenceDeeplinkMessage;
41 const FString PresenceDestinationApiName;
42 const FString PresenceLobbySessionId;
43 const FString PresenceMatchSessionId;
44 const FString PresenceExtra;
45public:
46 FOnlinePicoFriend(/*const ppfID ID*/const FString StrId, const FString& InDisplayName, ppfUserPresenceStatus FriendPresenceStatus,
47 const FString& InInviteToken, const FString& InImageUrl, ppfGender InGender, const FString& InSmallImageUrl,
48 const FString& InPresencePackage, const FString& InPresence, const FString& InPresenceDeeplinkMessage,
49 const FString& InPresenceDestinationApiName, const FString& InPresenceLobbySessionId, const FString& InPresenceMatchSessionId,
50 const FString& InExtra) :
51
52#if ENGINE_MAJOR_VERSION > 4
53 UserId(FUniqueNetIdPico::Create(StrId)),
54#elif ENGINE_MINOR_VERSION > 26
55 UserId(FUniqueNetIdPico::Create(StrId)),
56#elif ENGINE_MINOR_VERSION > 24
57 UserId(new FUniqueNetIdPico(StrId)),
58#endif
59 StrUserId(StrId),
60 DisplayName(InDisplayName),
61 InviteToken(InInviteToken),
62 ImageUrl(InImageUrl),
63 Gender(InGender),
64 SmallImageUrl(InSmallImageUrl),
65 PresencePackage(InPresencePackage),
66 UserPresenceStatus(FriendPresenceStatus),
67 Presencestr(InPresence),
68 PresenceDeeplinkMessage(InPresenceDeeplinkMessage),
69 PresenceDestinationApiName(InPresenceDestinationApiName),
70 PresenceLobbySessionId(InPresenceLobbySessionId),
71 PresenceMatchSessionId(InPresenceMatchSessionId),
72 PresenceExtra(InExtra)
73 {
74 Presence.bIsOnline = FriendPresenceStatus == ppfUserPresenceStatus_OnLine;
75 }
76#if ENGINE_MAJOR_VERSION > 4
77 virtual FUniqueNetIdRef GetUserId() const override
78 {
79 return UserId;
80 }
81#elif ENGINE_MINOR_VERSION > 26
82 virtual FUniqueNetIdRef GetUserId() const override
83 {
84 return UserId;
85 }
86#elif ENGINE_MINOR_VERSION > 24
87 virtual TSharedRef<const FUniqueNetId> GetUserId() const override
88 {
89 return UserId;
90 }
91#endif
92
93
94 FString GetUserStrId() const
95 {
96 return StrUserId;
97 }
98
99 virtual FString GetRealName() const override
100 {
101 return TEXT("");
102 }
103
104 virtual FString GetDisplayName(const FString& Platform = FString()) const override
105 {
106 return DisplayName;
107 }
108
109 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override
110 {
111 return false;
112 }
113
114 virtual EInviteStatus::Type GetInviteStatus() const override
115 {
116 return EInviteStatus::Accepted;
117 }
118
119 virtual const FOnlineUserPresence& GetPresence() const override
120 {
121 return Presence;
122 }
123
124 FString GetInviteToken() const
125 {
126 return InviteToken;
127 }
128
129 FString GetImageUrl() const
130 {
131 return ImageUrl;
132 }
133
134 FString GetPresencePackage() const
135 {
136 return PresencePackage;
137 }
138 FString GetPresencechar() const
139 {
140 return Presencestr;
141 }
142 FString GetPresenceDeeplinkMessage() const
143 {
144 return PresenceDeeplinkMessage;
145 }
146
147 FString GetPresenceDestinationApiName() const
148 {
149 return PresenceDestinationApiName;
150 }
151
152 FString GetPresenceLobbySessionId() const
153 {
154 return PresenceLobbySessionId;
155 }
156
157 FString GetPresenceMatchSessionId() const
158 {
159 return PresenceMatchSessionId;
160 }
161
162 FString GetPresenceExtra() const
163 {
164 return PresenceExtra;
165 }
166
167 FString GetSmallImageUrl() const
168 {
169 return SmallImageUrl;
170 }
171 ppfUserPresenceStatus GetUserPresenceStates() const
172 {
173 return UserPresenceStatus;
174 }
175
176 ppfGender GetGender() const
177 {
178 return Gender;
179 }
180
181};
182
198class FOnlineFriendsPico : public IOnlineFriends
199{
200private:
201
202 // @brief Reference to the main Pico subsystem.
203 FOnlineSubsystemPico& PicoSubsystem;
204
205 // @brief Current player friends map.
206 TMap<FString, TSharedRef<FOnlineFriend>> PlayerFriends;
207
208 // @brief Current friends map can user invite.
209 TMap<FString, TSharedRef<FOnlineFriend>> InvitableUsers;
210
211PACKAGE_SCOPE:
212
213
214 void OnQueryFriendsComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum, const FString& ListName, TMap<FString, TSharedRef<FOnlineFriend>>& OutList, bool bAppendToExistingMap, const FOnReadFriendsListComplete& Delegate);
215
216public:
217
218 static const FString FriendsListInviteableUsers;
219
220
221 // <summary>The constructor.</summary>
222 // <param name="InSubsystem">A reference to the online subsystem.</param>
223 FOnlineFriendsPico(FOnlineSubsystemPico& InSubsystem);
224
225
226 // The default destructor.
227 virtual ~FOnlineFriendsPico() = default;
228
229 // Begin IOnlineFriends interface
230
240 virtual bool ReadFriendsList(int32 LocalUserNum, const FString& ListName, const FOnReadFriendsListComplete& Delegate = FOnReadFriendsListComplete()) override;
241
242 bool ReadFriendsList(int32 LocalUserNum, const FString& ListName, ppfID RoomId, const FOnReadFriendsListComplete& Delegate = FOnReadFriendsListComplete());
243
244 // To do(Not implement).
245 virtual bool DeleteFriendsList(int32 LocalUserNum, const FString& ListName, const FOnDeleteFriendsListComplete& Delegate = FOnDeleteFriendsListComplete()) override;
246
247 // To do(Not implement).
248 virtual bool SendInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnSendInviteComplete& Delegate = FOnSendInviteComplete()) override;
249
250 // To do(Not implement).
251 virtual bool AcceptInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnAcceptInviteComplete& Delegate = FOnAcceptInviteComplete()) override;
252
253 // To do(Not implement).
254 virtual bool RejectInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
255
256 // To do(Not implement).
257 virtual void SetFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FString& Alias, const FOnSetFriendAliasComplete& Delegate = FOnSetFriendAliasComplete()) override;
258
259 // To do(Not implement).
260 virtual void DeleteFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnDeleteFriendAliasComplete& Delegate = FOnDeleteFriendAliasComplete()) override;
261
262 // To do(Not implement).
263 virtual bool DeleteFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
264
275 virtual bool GetFriendsList(int32 LocalUserNum, const FString& ListName, TArray< TSharedRef<FOnlineFriend> >& OutFriends) override;
276
282 virtual TSharedPtr<FOnlineFriend> GetFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
283
294 virtual bool IsFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
295
296 // To do(Not implement).
297 virtual bool QueryRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace) override;
298
299 // To do(Not implement).
300 virtual bool GetRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace, TArray< TSharedRef<FOnlineRecentPlayer> >& OutRecentPlayers) override;
301
302 // To do(Not implement).
303 virtual void DumpRecentPlayers() const override;
304
305 // To do(Not implement).
306 virtual bool BlockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId) override;
307
308 // To do(Not implement).
309 virtual bool UnblockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId) override;
310
311 // To do(Not implement).
312 virtual bool QueryBlockedPlayers(const FUniqueNetId& UserId) override;
313
314 // To do(Not implement).
315 virtual bool GetBlockedPlayers(const FUniqueNetId& UserId, TArray< TSharedRef<FOnlineBlockedPlayer> >& OutBlockedPlayers) override;
316
317 // To do(Not implement).
318 virtual void DumpBlockedPlayers() const override;
319 // End IOnlineFriends interface
320}; // end of Friends(OnlineSub) // end of Function
OnlineFriendsPico class inherited from IOnlineFriends(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:199
virtual bool ReadFriendsList(int32 LocalUserNum, const FString &ListName, const FOnReadFriendsListComplete &Delegate=FOnReadFriendsListComplete()) override
Starts an async task that reads the named friend list for a user.
virtual bool GetFriendsList(int32 LocalUserNum, const FString &ListName, TArray< TSharedRef< FOnlineFriend > > &OutFriends) override
Gets a list of friends previously retrieved from the online service for a user.
virtual bool IsFriend(int32 LocalUserNum, const FUniqueNetId &FriendId, const FString &ListName) override
Checks whether someone is the friend of a user.
virtual TSharedPtr< FOnlineFriend > GetFriend(int32 LocalUserNum, const FUniqueNetId &FriendId, const FString &ListName) override
Gets the cached friend entry if found.
OnlinePicoFriend class inherited from FOnlineFriend(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:18