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 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
173
180 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
181
187 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
188
189
193 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
194
198 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
199
203 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
204
208 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
209
210 // Not Supported
211 virtual FString GetAuthToken(int32 LocalUserNum) const override;
212
213 // Not Supported
214 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
215
216
217 // Not Supported
218 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
219
220 // Not Supported
221 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
222
225 virtual FString GetAuthType() const override;
226
227 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
228
229
230 // FOnlineIdentityPico
231
232 // <summary>The constructor.</summary>
233 // <param name="InSubsystem">The online subsystem being used.</param>
234 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
235
236 // The default destructor.
237 virtual ~FOnlineIdentityPico() = default;
238
239PACKAGE_SCOPE:
240
244
245 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
246
247private:
248
249 // @brief Reference to the main Pico subsystem.
250 FOnlineSubsystemPico& PicoSubsystem;
251
252 // @brief IDs mapped to locally registered users.
253#if ENGINE_MAJOR_VERSION > 4
254 TMap<int32, FUniqueNetIdRef> UserIds;
255#elif ENGINE_MINOR_VERSION > 26
256 TMap<int32, FUniqueNetIdRef> UserIds;
257#elif ENGINE_MINOR_VERSION > 24
258 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
259#endif
260 TMap<int32, UPico_User*> LoginPicoUserMap;
261
263#if ENGINE_MAJOR_VERSION > 4
264 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
265#elif ENGINE_MINOR_VERSION > 26
266 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
267#elif ENGINE_MINOR_VERSION > 24
268 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
269#endif
270
271}; // end of Identity(OnlineSub) // end of Function
274typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:112
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:25
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:55
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:53