PlatformUnrealSDK
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 "OnlineSubsystemPicoTypes.h"
11#include "PPF_Platform.h"
12#include "OnlineSubsystemPicoNames.h"
13#include "Pico_User.h"
14#include "OnlineFriendsInterfacePico.h"
17
20DECLARE_DELEGATE_ThreeParams(FOnGetUserAndRoomDelegate, const FString& , bool /*IsError*/, const FString& /*Error Message*/);
21
23class FUserOnlineAccountPico : public FUserOnlineAccount
24{
25public:
26
27
28 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
29 : UserId(InUserId),
30 Name(InName)
31 { }
32
34 {
35 }
36
37
39 FUniqueNetIdRef UserId;
40
42 TMap<FString, FString> AdditionalAuthData;
44 TMap<FString, FString> UserAttributes;
45
46
47 // FOnlineUser
48
49
50 // @return The ID associated with the user account provided by the online service during registration.
51 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
52
53 // @return The real name for the user if known.
54 virtual FString GetRealName() const override { return Name; }
55
56 // @return The nickname of the user if known.
57 virtual FString GetDisplayName(const FString& Platform = FString()) const override { return Name; }
58
59 // @return Any additional user data associated with a registered user.
60 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override;
61
62 // @return Whether a local attribute for a user was successfully set.
63 virtual bool SetUserAttribute(const FString& AttrName, const FString& AttrValue) override;
64
65 // FUserOnlineAccount
66
67
68 // @return The access token which is provided to user once authenticated by the online service.
69 virtual FString GetAccessToken() const override { return TEXT("ACCESSTOKEN"); }
70
71
72 // @return Any additional auth data associated with a registered user.
73 virtual bool GetAuthAttribute(const FString& AttrName, FString& OutAttrValue) const override;
74
75private:
76 FString Name;
77 FString AccessToken;
78};
79
95class FOnlineIdentityPico : public IOnlineIdentity
96{
97public:
98
109 virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override;
110
120 virtual bool Logout(int32 LocalUserNum) override;
121
130 virtual bool AutoLogin(int32 LocalUserNum) override;
131
140 virtual TSharedPtr<FUserOnlineAccount> GetUserAccount(const FUniqueNetId& UserId) const override;
141
149 virtual TArray<TSharedPtr<FUserOnlineAccount> > GetAllUserAccounts() const override;
150
159 virtual FUniqueNetIdPtr GetUniquePlayerId(int32 LocalUserNum) const override;
160
170 virtual FUniqueNetIdPtr CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
171
180 virtual FUniqueNetIdPtr CreateUniquePlayerId(const FString& Str) override;
181
185 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
186
190 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
191
195 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
196
200 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
201
202 // Not Supported
203 virtual FString GetAuthToken(int32 LocalUserNum) const override;
204
205 // Not Supported
206 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
207
208
209 // Not Supported
210 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
211
212 // Not Supported
213 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
214
217 virtual FString GetAuthType() const override;
218
219 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
220
221
222 // FOnlineIdentityPico
223
226 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
227
229 virtual ~FOnlineIdentityPico() = default;
230
231PACKAGE_SCOPE:
232
236
237 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
238
239private:
240 bool GetUserArrayRequest(ppfUserHandle UserHandle);
241
242private:
243
245 FOnlineSubsystemPico& PicoSubsystem;
246
248 TMap<int32, FUniqueNetIdRef> UserIds;
249
250 TMap<int32, UPico_User*> LoginPicoUserMap;
251
253 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
254
255public:
256
257
258}; // end of Identity // end of Function
261typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:96
virtual bool AutoLogin(int32 LocalUserNum) override
Auto login.
FOnlineSubsystemPico & PicoSubsystem
Reference to the main Pico subsystem.
Definition: OnlineIdentityPico.h:245
virtual TArray< TSharedPtr< FUserOnlineAccount > > GetAllUserAccounts() const override
Obtains the list of all known/registered user accounts.
virtual ~FOnlineIdentityPico()=default
The default destructor.
virtual FUniqueNetIdPtr CreateUniquePlayerId(uint8 *Bytes, int32 Size) override
Creates a unique ID from binary data (used during replication).
virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId &UserId) const override
Gets the login status for a given player.
virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override
Gets the login status for a given player.
TMap< int32, FUniqueNetIdRef > UserIds
IDs mapped to locally registered users.
Definition: OnlineIdentityPico.h:248
virtual FUniqueNetIdPtr GetUniquePlayerId(int32 LocalUserNum) const override
Gets the platform-specific unique ID for the specified player.
FOnlineIdentityPico(FOnlineSubsystemPico &InSubsystem)
The constructor.
virtual bool Logout(int32 LocalUserNum) override
Signs the player out of the online service.
virtual FUniqueNetIdPtr CreateUniquePlayerId(const FString &Str) override
Creates a unique ID from string.
TUniqueNetIdMap< TSharedRef< FUserOnlineAccountPico > > UserAccounts
IDs mapped to locally registered user accounts.
Definition: OnlineIdentityPico.h:253
virtual FString GetAuthType() const override
Gets the auth type associated with accounts for this platform.
virtual TSharedPtr< FUserOnlineAccount > GetUserAccount(const FUniqueNetId &UserId) const override
Obtains online account info for a user that has been registered.
virtual FString GetPlayerNickname(int32 LocalUserNum) const override
Reads the player's nickname from the online service.
virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials &AccountCredentials) override
Gets the account login information for the current device.
virtual FString GetPlayerNickname(const FUniqueNetId &UserId) const override
Reads the player's nickname from the online service.
UserOnlineAccountPico class inherited from FUserOnlineAccount(Unreal Engine).
Definition: OnlineIdentityPico.h:24
FUniqueNetIdRef UserId
Definition: OnlineIdentityPico.h:39
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:44
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:42