PICO Unreal Platform SDK
OnlineIdentityPico.h
1// Copyright® 2015-2023 PICO Technology Co., Ltd. All rights reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "OnlineSubsystemPico.h"
7#include "Interfaces/OnlineIdentityInterface.h"
8#include "PPF_Platform.h"
9#include "OnlineSubsystemPicoNames.h"
10#include "Pico_User.h"
11#include "OnlineFriendsInterfacePico.h"
12#include "OnlineSubsystemPicoTypes.h"
13
16
19DECLARE_DELEGATE_ThreeParams(FOnGetUserAndRoomDelegate, const FString& , bool /*IsError*/, const FString& /*Error Message*/);
21class FUserOnlineAccountPico : public FUserOnlineAccount
22{
23public:
24
25#if ENGINE_MAJOR_VERSION > 4
26 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
27#elif ENGINE_MINOR_VERSION > 26
28 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
29#elif ENGINE_MINOR_VERSION > 24
30 FUserOnlineAccountPico(const TSharedRef<const FUniqueNetId>& InUserId, const FString& InName)
31#endif
32 : UserId(InUserId),
33 Name(InName)
34 { }
35
37 {
38 }
39
40
42#if ENGINE_MAJOR_VERSION > 4
43 FUniqueNetIdRef UserId;
44#elif ENGINE_MINOR_VERSION > 26
45 FUniqueNetIdRef UserId;
46#elif ENGINE_MINOR_VERSION > 24
47 TSharedRef<const FUniqueNetId> UserId;
48#endif
50 TMap<FString, FString> AdditionalAuthData;
52 TMap<FString, FString> UserAttributes;
53
54
55 // FOnlineUser
56
57
58 // @return The ID associated with the user account provided by the online service during registration.
59#if ENGINE_MAJOR_VERSION > 4
60 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
61#elif ENGINE_MINOR_VERSION > 26
62 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
63#elif ENGINE_MINOR_VERSION > 24
64 virtual TSharedRef<const FUniqueNetId> GetUserId() const override { return UserId; }
65#endif
66 // @return The real name for the user if known.
67 virtual FString GetRealName() const override { return Name; }
68
69 // @return The nickname of the user if known.
70 virtual FString GetDisplayName(const FString& Platform = FString()) const override { return Name; }
71
72 // @return Any additional user data associated with a registered user.
73 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override;
74
75 // @return Whether a local attribute for a user was successfully set.
76 virtual bool SetUserAttribute(const FString& AttrName, const FString& AttrValue) override;
77
78 // FUserOnlineAccount
79
80
81 // @return The access token which is provided to user once authenticated by the online service.
82 virtual FString GetAccessToken() const override { return TEXT("ACCESSTOKEN"); }
83
84
85 // @return Any additional auth data associated with a registered user.
86 virtual bool GetAuthAttribute(const FString& AttrName, FString& OutAttrValue) const override;
87
88private:
89 FString Name;
90 FString AccessToken;
91};
92
108class FOnlineIdentityPico : public IOnlineIdentity
109{
110public:
111
123 virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override;
124
135 virtual bool Logout(int32 LocalUserNum) override;
136
145 virtual bool AutoLogin(int32 LocalUserNum) override;
146
152 virtual TSharedPtr<FUserOnlineAccount> GetUserAccount(const FUniqueNetId& UserId) const override;
153
162 virtual TArray<TSharedPtr<FUserOnlineAccount> > GetAllUserAccounts() const override;
163
169 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
170
177 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
178
184 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
185
186
190 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
191
195 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
196
200 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
201
205 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
206
207
208 virtual FString GetAuthToken(int32 LocalUserNum) const override;
209
210 // Not Supported
211 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
212
213
214 // Not Supported
215 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
216
217 // Not Supported
218 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
219
220#if ENGINE_MINOR_VERSION > 26
221 virtual void GetLinkedAccountAuthToken(int32 LocalUserNum, const FOnGetLinkedAccountAuthTokenCompleteDelegate& Delegate) const override;
222#endif
225 virtual FString GetAuthType() const override;
226
227 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
228
229 void GetLoginUserOpenID(FGetIDToken OnGetIdTokenDelegate);
230
231 // FOnlineIdentityPico
232
233 // <summary>The constructor.</summary>
234 // <param name="InSubsystem">The online subsystem being used.</param>
235 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
236
237 // The default destructor.
238 virtual ~FOnlineIdentityPico() = default;
239
240PACKAGE_SCOPE:
241
245
246 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
247
248private:
249
250 // @brief Reference to the main Pico subsystem.
251 FOnlineSubsystemPico& PicoSubsystem;
252
253 // @brief IDs mapped to locally registered users.
254#if ENGINE_MAJOR_VERSION > 4
255 TMap<int32, FUniqueNetIdRef> UserIds;
256#elif ENGINE_MINOR_VERSION > 26
257 TMap<int32, FUniqueNetIdRef> UserIds;
258#elif ENGINE_MINOR_VERSION > 24
259 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
260#endif
261 TMap<int32, UPico_User*> LoginPicoUserMap;
262
263 FString AuthToken;
265#if ENGINE_MAJOR_VERSION > 4
266 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
267#elif ENGINE_MINOR_VERSION > 26
268 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
269#elif ENGINE_MINOR_VERSION > 24
270 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
271#endif
272
273}; // end of Identity(OnlineSub) // end of Function
276typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:109
virtual bool AutoLogin(int32 LocalUserNum) override
Logs a user in to the online service.
virtual TArray< TSharedPtr< FUserOnlineAccount > > GetAllUserAccounts() const override
Gets the account information of all known/registered users.
virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId &UserId) const override
Gets a user's login status by unique net ID.
virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override
Gets a user's login status by controller number.
virtual bool Logout(int32 LocalUserNum) override
Clears the account login information for a user.
virtual FString GetAuthType() const override
Gets the auth type associated with accounts for this platform.
virtual TSharedPtr< const FUniqueNetId > CreateUniquePlayerId(uint8 *Bytes, int32 Size) override
Creates a unique ID from binary data (used during replication).
virtual TSharedPtr< FUserOnlineAccount > GetUserAccount(const FUniqueNetId &UserId) const override
Gets the account information of a registered user.
virtual TSharedPtr< const FUniqueNetId > GetUniquePlayerId(int32 LocalUserNum) const override
Gets the platform-specific unique ID for a user.
virtual FString GetPlayerNickname(int32 LocalUserNum) const override
Gets a users's nickname from the online service by controller number.
virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials &AccountCredentials) override
Gets the account login information for a user.
virtual FString GetPlayerNickname(const FUniqueNetId &UserId) const override
Gets a user's nickname from the online service by unique net ID.
virtual TSharedPtr< const FUniqueNetId > CreateUniquePlayerId(const FString &Str) override
Creates a unique ID from string.
UserOnlineAccountPico class inherited from FUserOnlineAccount(Unreal Engine).
Definition: OnlineIdentityPico.h:22
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:52
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:50
UPico_User class.
Definition: Pico_User.h:515