PlatformUnrealSDK
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
5#pragma once
6
7#include "CoreMinimal.h"
8#include "OnlineSubsystemPico.h"
9#include "Interfaces/OnlineFriendsInterface.h"
10#include "Interfaces/OnlinePresenceInterface.h"
11#include "OnlineSubsystemPicoTypes.h"
12#include "OnlineSubsystemPicoPackage.h"
13
14
16
18class FOnlinePicoFriend : public FOnlineFriend
19{
20public:
21
22
23private:
24 FUniqueNetIdPicoRef UserId;
25 const FString StrUserId;
26 const FString DisplayName;
27 FOnlineUserPresence Presence;
28 const FString InviteToken;
29 const FString ImageUrl;
30 ppfGender Gender;
31 const FString SmallImageUrl;
32 const FString PresencePackage;
33 ppfUserPresenceStatus UserPresenceStatus;
34 const FString Presencestr;
35 const FString PresenceDeeplinkMessage;
36 const FString PresenceDestinationApiName;
37 const FString PresenceLobbySessionId;
38 const FString PresenceMatchSessionId;
39 const FString PresenceExtra;
40public:
41 FOnlinePicoFriend(/*const ppfID ID*/const FString StrId, const FString& InDisplayName, ppfUserPresenceStatus FriendPresenceStatus,
42 const FString& InInviteToken, const FString& InImageUrl, ppfGender InGender, const FString& InSmallImageUrl,
43 const FString& InPresencePackage, const FString& InPresence, const FString& InPresenceDeeplinkMessage,
44 const FString& InPresenceDestinationApiName, const FString& InPresenceLobbySessionId, const FString& InPresenceMatchSessionId,
45 const FString& InExtra) :
46 UserId(FUniqueNetIdPico::Create(StrId)),
47 StrUserId(StrId),
48 DisplayName(InDisplayName),
49 InviteToken(InInviteToken),
50 ImageUrl(InImageUrl),
51 Gender(InGender),
52 SmallImageUrl(InSmallImageUrl),
53 PresencePackage(InPresencePackage),
54 UserPresenceStatus(FriendPresenceStatus),
55 Presencestr(InPresence),
56 PresenceDeeplinkMessage(InPresenceDeeplinkMessage),
57 PresenceDestinationApiName(InPresenceDestinationApiName),
58 PresenceLobbySessionId(InPresenceLobbySessionId),
59 PresenceMatchSessionId(InPresenceMatchSessionId),
60 PresenceExtra(InExtra)
61 {
62 Presence.bIsOnline = FriendPresenceStatus == ppfUserPresenceStatus_OnLine;
63 }
64
65 virtual FUniqueNetIdRef GetUserId() const override
66 {
67 return UserId;
68 }
69
70 FString GetUserStrId() const
71 {
72 return StrUserId;
73 }
74
75 virtual FString GetRealName() const override
76 {
77 return TEXT("");
78 }
79
80 virtual FString GetDisplayName(const FString& Platform = FString()) const override
81 {
82 return DisplayName;
83 }
84
85 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override
86 {
87 return false;
88 }
89
90 virtual EInviteStatus::Type GetInviteStatus() const override
91 {
92 return EInviteStatus::Accepted;
93 }
94
95 virtual const FOnlineUserPresence& GetPresence() const override
96 {
97 return Presence;
98 }
99
100 FString GetInviteToken() const
101 {
102 return InviteToken;
103 }
104
105 FString GetImageUrl() const
106 {
107 return ImageUrl;
108 }
109
110 FString GetPresencePackage() const
111 {
112 return PresencePackage;
113 }
114 FString GetPresencechar() const
115 {
116 return Presencestr;
117 }
118 FString GetPresenceDeeplinkMessage() const
119 {
120 return PresenceDeeplinkMessage;
121 }
122
123 FString GetPresenceDestinationApiName() const
124 {
125 return PresenceDestinationApiName;
126 }
127
128 FString GetPresenceLobbySessionId() const
129 {
130 return PresenceLobbySessionId;
131 }
132
133 FString GetPresenceMatchSessionId() const
134 {
135 return PresenceMatchSessionId;
136 }
137
138 FString GetPresenceExtra() const
139 {
140 return PresenceExtra;
141 }
142
143 FString GetSmallImageUrl() const
144 {
145 return SmallImageUrl;
146 }
147 ppfUserPresenceStatus GetUserPresenceStates() const
148 {
149 return UserPresenceStatus;
150 }
151
152 ppfGender GetGender() const
153 {
154 return Gender;
155 }
156
157};
158
174class FOnlineFriendsPico : public IOnlineFriends
175{
176private:
177
179 FOnlineSubsystemPico& PicoSubsystem;
180
182 TMap<FString, TSharedRef<FOnlineFriend>> PlayerFriends;
183
185 TMap<FString, TSharedRef<FOnlineFriend>> InvitableUsers;
186
187PACKAGE_SCOPE:
188
189
190 void OnQueryFriendsComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum, const FString& ListName, TMap<FString, TSharedRef<FOnlineFriend>>& OutList, bool bAppendToExistingMap, const FOnReadFriendsListComplete& Delegate);
191
192public:
193
194 static const FString FriendsListInviteableUsers;
195
196
199 FOnlineFriendsPico(FOnlineSubsystemPico& InSubsystem);
200
201
203 virtual ~FOnlineFriendsPico() = default;
204
205 // Begin IOnlineFriends interface
206
216 virtual bool ReadFriendsList(int32 LocalUserNum, const FString & ListName, const FOnReadFriendsListComplete & Delegate = FOnReadFriendsListComplete()) override;
217
218 bool ReadFriendsList(int32 LocalUserNum, const FString& ListName, ppfID RoomId, const FOnReadFriendsListComplete& Delegate = FOnReadFriendsListComplete());
219
220 // To do(Not implement).
221 virtual bool DeleteFriendsList(int32 LocalUserNum, const FString & ListName, const FOnDeleteFriendsListComplete & Delegate = FOnDeleteFriendsListComplete()) override;
222
223 // To do(Not implement).
224 virtual bool SendInvite(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName, const FOnSendInviteComplete & Delegate = FOnSendInviteComplete()) override;
225
226 // To do(Not implement).
227 virtual bool AcceptInvite(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName, const FOnAcceptInviteComplete & Delegate = FOnAcceptInviteComplete()) override;
228
229 // To do(Not implement).
230 virtual bool RejectInvite(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName) override;
231
232 // To do(Not implement).
233 virtual void SetFriendAlias(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName, const FString & Alias, const FOnSetFriendAliasComplete & Delegate = FOnSetFriendAliasComplete()) override;
234
235 // To do(Not implement).
236 virtual void DeleteFriendAlias(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName, const FOnDeleteFriendAliasComplete & Delegate = FOnDeleteFriendAliasComplete()) override;
237
238 // To do(Not implement).
239 virtual bool DeleteFriend(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName) override;
240
251 virtual bool GetFriendsList(int32 LocalUserNum, const FString & ListName, TArray< TSharedRef<FOnlineFriend> >&OutFriends) override;
252
258 virtual TSharedPtr<FOnlineFriend> GetFriend(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName) override;
259
270 virtual bool IsFriend(int32 LocalUserNum, const FUniqueNetId & FriendId, const FString & ListName) override;
271
272 // To do(Not implement).
273 virtual bool QueryRecentPlayers(const FUniqueNetId & UserId, const FString & Namespace) override;
274
275 // To do(Not implement).
276 virtual bool GetRecentPlayers(const FUniqueNetId & UserId, const FString & Namespace, TArray< TSharedRef<FOnlineRecentPlayer> >&OutRecentPlayers) override;
277
278 // To do(Not implement).
279 virtual void DumpRecentPlayers() const override;
280
281 // To do(Not implement).
282 virtual bool BlockPlayer(int32 LocalUserNum, const FUniqueNetId & PlayerId) override;
283
284 // To do(Not implement).
285 virtual bool UnblockPlayer(int32 LocalUserNum, const FUniqueNetId & PlayerId) override;
286
287 // To do(Not implement).
288 virtual bool QueryBlockedPlayers(const FUniqueNetId & UserId) override;
289
290 // To do(Not implement).
291 virtual bool GetBlockedPlayers(const FUniqueNetId & UserId, TArray< TSharedRef<FOnlineBlockedPlayer> >&OutBlockedPlayers) override;
292
293 // To do(Not implement).
294 virtual void DumpBlockedPlayers() const override;
295 // End IOnlineFriends interface
296}; // end of Friends // end of Function
OnlineFriendsPico class inherited from IOnlineFriends(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:175
virtual bool ReadFriendsList(int32 LocalUserNum, const FString &ListName, const FOnReadFriendsListComplete &Delegate=FOnReadFriendsListComplete()) override
Starts an async task that reads the named friends list for the player.
FOnlineSubsystemPico & PicoSubsystem
Reference to the main Pico subsystem.
Definition: OnlineFriendsInterfacePico.h:179
FOnlineFriendsPico(FOnlineSubsystemPico &InSubsystem)
The constructor.
TMap< FString, TSharedRef< FOnlineFriend > > InvitableUsers
Current friends map can user invite.
Definition: OnlineFriendsInterfacePico.h:185
virtual bool GetFriendsList(int32 LocalUserNum, const FString &ListName, TArray< TSharedRef< FOnlineFriend > > &OutFriends) override
Gets the list of friends for the player previously retrieved from the online service.
virtual ~FOnlineFriendsPico()=default
The default destructor.
virtual bool IsFriend(int32 LocalUserNum, const FUniqueNetId &FriendId, const FString &ListName) override
Checks that a unique player ID is part of the specified user's friends list.
TMap< FString, TSharedRef< FOnlineFriend > > PlayerFriends
Current player friends map.
Definition: OnlineFriendsInterfacePico.h:182
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:19