Pico Unreal Platform SDK
OnlineIdentityPico.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/OnlineIdentityInterface.h"
10#include "PPF_Platform.h"
11#include "OnlineSubsystemPicoNames.h"
12#include "Pico_User.h"
13#include "OnlineFriendsInterfacePico.h"
14#include "OnlineSubsystemPicoTypes.h"
15
18
21DECLARE_DELEGATE_ThreeParams(FOnGetUserAndRoomDelegate, const FString& , bool /*IsError*/, const FString& /*Error Message*/);
22
24class FUserOnlineAccountPico : public FUserOnlineAccount
25{
26public:
27
28#if ENGINE_MAJOR_VERSION > 4
29 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
30#elif ENGINE_MINOR_VERSION > 26
31 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
32#elif ENGINE_MINOR_VERSION > 24
33 FUserOnlineAccountPico(const TSharedRef<const FUniqueNetId>& InUserId, const FString& InName)
34#endif
35 : UserId(InUserId),
36 Name(InName)
37 { }
38
40 {
41 }
42
43
45#if ENGINE_MAJOR_VERSION > 4
46 FUniqueNetIdRef UserId;
47#elif ENGINE_MINOR_VERSION > 26
48 FUniqueNetIdRef UserId;
49#elif ENGINE_MINOR_VERSION > 24
50 TSharedRef<const FUniqueNetId> UserId;
51#endif
53 TMap<FString, FString> AdditionalAuthData;
55 TMap<FString, FString> UserAttributes;
56
57
58 // FOnlineUser
59
60
61 // @return The ID associated with the user account provided by the online service during registration.
62#if ENGINE_MAJOR_VERSION > 4
63 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
64#elif ENGINE_MINOR_VERSION > 26
65 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
66#elif ENGINE_MINOR_VERSION > 24
67 virtual TSharedRef<const FUniqueNetId> GetUserId() const override { return UserId; }
68#endif
69 // @return The real name for the user if known.
70 virtual FString GetRealName() const override { return Name; }
71
72 // @return The nickname of the user if known.
73 virtual FString GetDisplayName(const FString& Platform = FString()) const override { return Name; }
74
75 // @return Any additional user data associated with a registered user.
76 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override;
77
78 // @return Whether a local attribute for a user was successfully set.
79 virtual bool SetUserAttribute(const FString& AttrName, const FString& AttrValue) override;
80
81 // FUserOnlineAccount
82
83
84 // @return The access token which is provided to user once authenticated by the online service.
85 virtual FString GetAccessToken() const override { return TEXT("ACCESSTOKEN"); }
86
87
88 // @return Any additional auth data associated with a registered user.
89 virtual bool GetAuthAttribute(const FString& AttrName, FString& OutAttrValue) const override;
90
91private:
92 FString Name;
93 FString AccessToken;
94};
95
111class FOnlineIdentityPico : public IOnlineIdentity
112{
113public:
114
126 virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override;
127
138 virtual bool Logout(int32 LocalUserNum) override;
139
148 virtual bool AutoLogin(int32 LocalUserNum) override;
149
155 virtual TSharedPtr<FUserOnlineAccount> GetUserAccount(const FUniqueNetId& UserId) const override;
156
165 virtual TArray<TSharedPtr<FUserOnlineAccount> > GetAllUserAccounts() const override;
166
172#if ENGINE_MAJOR_VERSION > 4
173 virtual FUniqueNetIdPtr GetUniquePlayerId(int32 LocalUserNum) const override;
174#elif ENGINE_MINOR_VERSION > 26
175 virtual FUniqueNetIdPtr GetUniquePlayerId(int32 LocalUserNum) const override;
176#elif ENGINE_MINOR_VERSION > 24
177 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
178#endif
179
186#if ENGINE_MAJOR_VERSION > 4
187 virtual FUniqueNetIdPtr CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
188#elif ENGINE_MINOR_VERSION > 26
189 virtual FUniqueNetIdPtr CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
190#elif ENGINE_MINOR_VERSION > 24
191 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
192#endif
193
199#if ENGINE_MAJOR_VERSION > 4
200 virtual FUniqueNetIdPtr CreateUniquePlayerId(const FString& Str) override;
201#elif ENGINE_MINOR_VERSION > 26
202 virtual FUniqueNetIdPtr CreateUniquePlayerId(const FString& Str) override;
203#elif ENGINE_MINOR_VERSION > 24
204 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
205#endif
206
207
211 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
212
216 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
217
221 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
222
226 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
227
228 // Not Supported
229 virtual FString GetAuthToken(int32 LocalUserNum) const override;
230
231 // Not Supported
232 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
233
234
235 // Not Supported
236 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
237
238 // Not Supported
239 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
240
243 virtual FString GetAuthType() const override;
244
245 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
246
247
248 // FOnlineIdentityPico
249
250 // <summary>The constructor.</summary>
251 // <param name="InSubsystem">The online subsystem being used.</param>
253
254 // The default destructor.
255 virtual ~FOnlineIdentityPico() = default;
256
257PACKAGE_SCOPE:
258
262
263 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
264
265private:
266
267 // @brief Reference to the main Pico subsystem.
268 FOnlineSubsystemPico& PicoSubsystem;
269
270 // @brief IDs mapped to locally registered users.
271#if ENGINE_MAJOR_VERSION > 4
272 TMap<int32, FUniqueNetIdRef> UserIds;
273#elif ENGINE_MINOR_VERSION > 26
274 TMap<int32, FUniqueNetIdRef> UserIds;
275#elif ENGINE_MINOR_VERSION > 24
276 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
277#endif
278 TMap<int32, UPico_User*> LoginPicoUserMap;
279
281#if ENGINE_MAJOR_VERSION > 4
282 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
283#elif ENGINE_MINOR_VERSION > 26
284 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
285#elif ENGINE_MINOR_VERSION > 24
286 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
287#endif
288
289}; // end of Identity // end of Function
292typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:112
virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials &AccountCredentials) override
Gets the account login information for a user.
Definition: OnlineIdentityPico.cpp:45
virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override
Gets the platform-specific unique ID for a user.
Definition: OnlineIdentityPico.cpp:261
virtual FString GetPlayerNickname(int32 LocalUserNum) const override
Gets a users's nickname from the online service by controller number.
Definition: OnlineIdentityPico.cpp:290
virtual bool Logout(int32 LocalUserNum) override
Clears the account login information for a user.
Definition: OnlineIdentityPico.cpp:104
virtual FString GetAuthType() const override
Gets the auth type associated with accounts for this platform.
Definition: OnlineIdentityPico.cpp:383
virtual TArray< TSharedPtr< FUserOnlineAccount > > GetAllUserAccounts() const override
Gets the account information of all known/registered users.
Definition: OnlineIdentityPico.cpp:165
virtual bool AutoLogin(int32 LocalUserNum) override
Logs a user in to the online service.
Definition: OnlineIdentityPico.cpp:140
virtual TSharedPtr< FUserOnlineAccount > GetUserAccount(const FUniqueNetId &UserId) const override
Gets the account information of a registered user.
Definition: OnlineIdentityPico.cpp:146
OnlineSubsystemPico class inherited from FOnlineSubsystemImpl(Unreal Engine)
Definition: OnlineSubsystemPico.h:44
UserOnlineAccountPico class inherited from FUserOnlineAccount(Unreal Engine).
Definition: OnlineIdentityPico.h:25
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:55
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:53