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