PICO Unreal Platform SDK
OnlineFriendsInterfacePico.h
1/*******************************************************************************
2Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
3
4NOTICE:All information contained herein is, and remains the property of
5PICO Technology Co., Ltd. The intellectual and technical concepts
6contained herein are proprietary to PICO Technology Co., Ltd. and may be
7covered by patents, patents in process, and are protected by trade secret or
8copyright law. Dissemination of this information or reproduction of this
9material is strictly forbidden unless prior written permission is obtained from
10PICO Technology Co., Ltd.
11*******************************************************************************/
12// 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.
13// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
14#pragma once
15
16#include "CoreMinimal.h"
17#include "Interfaces/OnlineFriendsInterface.h"
18#include "Interfaces/OnlinePresenceInterface.h"
19#include "OnlineSubsystemPico.h"
20#include "OnlineSubsystemPicoTypes.h"
21#include "OnlineSubsystemPicoPackage.h"
22
24
25
26
27
29class FOnlinePicoFriend : public FOnlineFriend
30{
31
32private:
33
34#if ENGINE_MAJOR_VERSION > 4
35 FUniqueNetIdPicoRef UserId;
36#elif ENGINE_MINOR_VERSION > 26
37 FUniqueNetIdPicoRef UserId;
38#elif ENGINE_MINOR_VERSION > 24
39 TSharedRef<const FUniqueNetIdPico> UserId;
40#endif
41
42 const FString StrUserId;
43 const FString DisplayName;
44 FOnlineUserPresence Presence;
45 const FString InviteToken;
46 const FString ImageUrl;
47 ppfGender Gender;
48 const FString SmallImageUrl;
49 const FString PresencePackage;
50 ppfUserPresenceStatus UserPresenceStatus;
51 const FString Presencestr;
52 const FString PresenceDeeplinkMessage;
53 const FString PresenceDestinationApiName;
54 const FString PresenceLobbySessionId;
55 const FString PresenceMatchSessionId;
56 const FString PresenceExtra;
57public:
58 FOnlinePicoFriend(/*const ppfID ID*/const FString StrId, const FString& InDisplayName, ppfUserPresenceStatus FriendPresenceStatus,
59 const FString& InInviteToken, const FString& InImageUrl, ppfGender InGender, const FString& InSmallImageUrl,
60 const FString& InPresencePackage, const FString& InPresence, const FString& InPresenceDeeplinkMessage,
61 const FString& InPresenceDestinationApiName, const FString& InPresenceLobbySessionId, const FString& InPresenceMatchSessionId,
62 const FString& InExtra) :
63
64#if ENGINE_MAJOR_VERSION > 4
65 UserId(FUniqueNetIdPico::Create(StrId)),
66#elif ENGINE_MINOR_VERSION > 26
67 UserId(FUniqueNetIdPico::Create(StrId)),
68#elif ENGINE_MINOR_VERSION > 24
69 UserId(new FUniqueNetIdPico(StrId)),
70#endif
71 StrUserId(StrId),
72 DisplayName(InDisplayName),
73 InviteToken(InInviteToken),
74 ImageUrl(InImageUrl),
75 Gender(InGender),
76 SmallImageUrl(InSmallImageUrl),
77 PresencePackage(InPresencePackage),
78 UserPresenceStatus(FriendPresenceStatus),
79 Presencestr(InPresence),
80 PresenceDeeplinkMessage(InPresenceDeeplinkMessage),
81 PresenceDestinationApiName(InPresenceDestinationApiName),
82 PresenceLobbySessionId(InPresenceLobbySessionId),
83 PresenceMatchSessionId(InPresenceMatchSessionId),
84 PresenceExtra(InExtra)
85 {
86 Presence.bIsOnline = FriendPresenceStatus == ppfUserPresenceStatus_OnLine;
87 }
88#if ENGINE_MAJOR_VERSION > 4
89 virtual FUniqueNetIdRef GetUserId() const override
90 {
91 return UserId;
92 }
93#elif ENGINE_MINOR_VERSION > 26
94 virtual FUniqueNetIdRef GetUserId() const override
95 {
96 return UserId;
97 }
98#elif ENGINE_MINOR_VERSION > 24
99 virtual TSharedRef<const FUniqueNetId> GetUserId() const override
100 {
101 return UserId;
102 }
103#endif
104
105
106 FString GetUserStrId() const
107 {
108 return StrUserId;
109 }
110
111 virtual FString GetRealName() const override
112 {
113 return TEXT("");
114 }
115
116 virtual FString GetDisplayName(const FString& Platform = FString()) const override
117 {
118 return DisplayName;
119 }
120
121 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override
122 {
123 return false;
124 }
125
126 virtual EInviteStatus::Type GetInviteStatus() const override
127 {
128 return EInviteStatus::Accepted;
129 }
130
131 virtual const FOnlineUserPresence& GetPresence() const override
132 {
133 return Presence;
134 }
135
136 FString GetInviteToken() const
137 {
138 return InviteToken;
139 }
140
141 FString GetImageUrl() const
142 {
143 return ImageUrl;
144 }
145
146 FString GetPresencePackage() const
147 {
148 return PresencePackage;
149 }
150 FString GetPresencechar() const
151 {
152 return Presencestr;
153 }
154 FString GetPresenceDeeplinkMessage() const
155 {
156 return PresenceDeeplinkMessage;
157 }
158
159 FString GetPresenceDestinationApiName() const
160 {
161 return PresenceDestinationApiName;
162 }
163
164 FString GetPresenceLobbySessionId() const
165 {
166 return PresenceLobbySessionId;
167 }
168
169 FString GetPresenceMatchSessionId() const
170 {
171 return PresenceMatchSessionId;
172 }
173
174 FString GetPresenceExtra() const
175 {
176 return PresenceExtra;
177 }
178
179 FString GetSmallImageUrl() const
180 {
181 return SmallImageUrl;
182 }
183 ppfUserPresenceStatus GetUserPresenceStates() const
184 {
185 return UserPresenceStatus;
186 }
187
188 ppfGender GetGender() const
189 {
190 return Gender;
191 }
192
193};
194
210class FOnlineFriendsPico : public IOnlineFriends
211{
212private:
213
214 // @brief Reference to the main Pico subsystem.
215 FOnlineSubsystemPico& PicoSubsystem;
216
217 // @brief Current player friends map.
218 TMap<FString, TSharedRef<FOnlineFriend>> PlayerFriends;
219
220 // @brief Current friends map can user invite.
221 TMap<FString, TSharedRef<FOnlineFriend>> InvitableUsers;
222
223PACKAGE_SCOPE:
224
225
226 void OnQueryFriendsComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum, const FString& ListName, TMap<FString, TSharedRef<FOnlineFriend>>& OutList, bool bAppendToExistingMap, const FOnReadFriendsListComplete& Delegate);
227
228public:
229
230 static const FString FriendsListInviteableUsers;
231
232
233 // <summary>The constructor.</summary>
234 // <param name="InSubsystem">A reference to the online subsystem.</param>
235 FOnlineFriendsPico(FOnlineSubsystemPico& InSubsystem);
236
237
238 // The default destructor.
239 virtual ~FOnlineFriendsPico() = default;
240
241 // Begin IOnlineFriends interface
242
252 virtual bool ReadFriendsList(int32 LocalUserNum, const FString& ListName, const FOnReadFriendsListComplete& Delegate = FOnReadFriendsListComplete()) override;
253
254 bool ReadFriendsList(int32 LocalUserNum, const FString& ListName, ppfID RoomId, const FOnReadFriendsListComplete& Delegate = FOnReadFriendsListComplete());
255
256 // To do(Not implement).
257 virtual bool DeleteFriendsList(int32 LocalUserNum, const FString& ListName, const FOnDeleteFriendsListComplete& Delegate = FOnDeleteFriendsListComplete()) override;
258
259 // To do(Not implement).
260 virtual bool SendInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnSendInviteComplete& Delegate = FOnSendInviteComplete()) override;
261
262 // To do(Not implement).
263 virtual bool AcceptInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnAcceptInviteComplete& Delegate = FOnAcceptInviteComplete()) override;
264
265 // To do(Not implement).
266 virtual bool RejectInvite(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
267
268 // To do(Not implement).
269 virtual void SetFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FString& Alias, const FOnSetFriendAliasComplete& Delegate = FOnSetFriendAliasComplete()) override;
270
271 // To do(Not implement).
272 virtual void DeleteFriendAlias(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName, const FOnDeleteFriendAliasComplete& Delegate = FOnDeleteFriendAliasComplete()) override;
273
274 // To do(Not implement).
275 virtual bool DeleteFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
276
287 virtual bool GetFriendsList(int32 LocalUserNum, const FString& ListName, TArray< TSharedRef<FOnlineFriend> >& OutFriends) override;
288
294 virtual TSharedPtr<FOnlineFriend> GetFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
295
306 virtual bool IsFriend(int32 LocalUserNum, const FUniqueNetId& FriendId, const FString& ListName) override;
307
308 // To do(Not implement).
309 virtual bool QueryRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace) override;
310
311 // To do(Not implement).
312 virtual bool GetRecentPlayers(const FUniqueNetId& UserId, const FString& Namespace, TArray< TSharedRef<FOnlineRecentPlayer> >& OutRecentPlayers) override;
313
314 // To do(Not implement).
315 virtual void DumpRecentPlayers() const override;
316
317 // To do(Not implement).
318 virtual bool BlockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId) override;
319
320 // To do(Not implement).
321 virtual bool UnblockPlayer(int32 LocalUserNum, const FUniqueNetId& PlayerId) override;
322
323 // To do(Not implement).
324 virtual bool QueryBlockedPlayers(const FUniqueNetId& UserId) override;
325
326 // To do(Not implement).
327 virtual bool GetBlockedPlayers(const FUniqueNetId& UserId, TArray< TSharedRef<FOnlineBlockedPlayer> >& OutBlockedPlayers) override;
328
329 // To do(Not implement).
330 virtual void DumpBlockedPlayers() const override;
331 // End IOnlineFriends interface
332}; // end of Friends(OnlineSub) // end of Function
OnlineFriendsPico class inherited from IOnlineFriends(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:211
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:30