PICO Unreal Platform SDK
OnlineIdentityPico.h
1/*******************************************************************************
2Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
3
4NOTICE:All information contained herein is, and remains the property of
5PICO Technology Co., Ltd. The intellectual and technical concepts
6contained herein are proprietary to PICO Technology Co., Ltd. and may be
7covered by patents, patents in process, and are protected by trade secret or
8copyright law. Dissemination of this information or reproduction of this
9material is strictly forbidden unless prior written permission is obtained from
10PICO Technology Co., Ltd.
11*******************************************************************************/
12// 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.
13// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
14
15#pragma once
16
17#include "CoreMinimal.h"
18#include "OnlineSubsystemPico.h"
19#include "Interfaces/OnlineIdentityInterface.h"
20#include "PPF_Platform.h"
21#include "OnlineSubsystemPicoNames.h"
22#include "Pico_User.h"
23#include "OnlineFriendsInterfacePico.h"
24#include "OnlineSubsystemPicoTypes.h"
25
28
31DECLARE_DELEGATE_ThreeParams(FOnGetUserAndRoomDelegate, const FString& , bool /*IsError*/, const FString& /*Error Message*/);
32
34class FUserOnlineAccountPico : public FUserOnlineAccount
35{
36public:
37
38#if ENGINE_MAJOR_VERSION > 4
39 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
40#elif ENGINE_MINOR_VERSION > 26
41 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
42#elif ENGINE_MINOR_VERSION > 24
43 FUserOnlineAccountPico(const TSharedRef<const FUniqueNetId>& InUserId, const FString& InName)
44#endif
45 : UserId(InUserId),
46 Name(InName)
47 { }
48
50 {
51 }
52
53
55#if ENGINE_MAJOR_VERSION > 4
56 FUniqueNetIdRef UserId;
57#elif ENGINE_MINOR_VERSION > 26
58 FUniqueNetIdRef UserId;
59#elif ENGINE_MINOR_VERSION > 24
60 TSharedRef<const FUniqueNetId> UserId;
61#endif
63 TMap<FString, FString> AdditionalAuthData;
65 TMap<FString, FString> UserAttributes;
66
67
68 // FOnlineUser
69
70
71 // @return The ID associated with the user account provided by the online service during registration.
72#if ENGINE_MAJOR_VERSION > 4
73 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
74#elif ENGINE_MINOR_VERSION > 26
75 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
76#elif ENGINE_MINOR_VERSION > 24
77 virtual TSharedRef<const FUniqueNetId> GetUserId() const override { return UserId; }
78#endif
79 // @return The real name for the user if known.
80 virtual FString GetRealName() const override { return Name; }
81
82 // @return The nickname of the user if known.
83 virtual FString GetDisplayName(const FString& Platform = FString()) const override { return Name; }
84
85 // @return Any additional user data associated with a registered user.
86 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override;
87
88 // @return Whether a local attribute for a user was successfully set.
89 virtual bool SetUserAttribute(const FString& AttrName, const FString& AttrValue) override;
90
91 // FUserOnlineAccount
92
93
94 // @return The access token which is provided to user once authenticated by the online service.
95 virtual FString GetAccessToken() const override { return TEXT("ACCESSTOKEN"); }
96
97
98 // @return Any additional auth data associated with a registered user.
99 virtual bool GetAuthAttribute(const FString& AttrName, FString& OutAttrValue) const override;
100
101private:
102 FString Name;
103 FString AccessToken;
104};
105
121class FOnlineIdentityPico : public IOnlineIdentity
122{
123public:
124
136 virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override;
137
148 virtual bool Logout(int32 LocalUserNum) override;
149
158 virtual bool AutoLogin(int32 LocalUserNum) override;
159
165 virtual TSharedPtr<FUserOnlineAccount> GetUserAccount(const FUniqueNetId& UserId) const override;
166
175 virtual TArray<TSharedPtr<FUserOnlineAccount> > GetAllUserAccounts() const override;
176
182
183 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
184
191 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
192
198 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
199
200
204 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
205
209 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
210
214 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
215
219 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
220
221 // Not Supported
222 virtual FString GetAuthToken(int32 LocalUserNum) const override;
223
224 // Not Supported
225 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
226
227
228 // Not Supported
229 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
230
231 // Not Supported
232 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
233
236 virtual FString GetAuthType() const override;
237
238 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
239
240
241 // FOnlineIdentityPico
242
243 // <summary>The constructor.</summary>
244 // <param name="InSubsystem">The online subsystem being used.</param>
245 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
246
247 // The default destructor.
248 virtual ~FOnlineIdentityPico() = default;
249
250PACKAGE_SCOPE:
251
255
256 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
257
258private:
259
260 // @brief Reference to the main Pico subsystem.
261 FOnlineSubsystemPico& PicoSubsystem;
262
263 // @brief IDs mapped to locally registered users.
264#if ENGINE_MAJOR_VERSION > 4
265 TMap<int32, FUniqueNetIdRef> UserIds;
266#elif ENGINE_MINOR_VERSION > 26
267 TMap<int32, FUniqueNetIdRef> UserIds;
268#elif ENGINE_MINOR_VERSION > 24
269 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
270#endif
271 TMap<int32, UPico_User*> LoginPicoUserMap;
272
274#if ENGINE_MAJOR_VERSION > 4
275 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
276#elif ENGINE_MINOR_VERSION > 26
277 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
278#elif ENGINE_MINOR_VERSION > 24
279 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
280#endif
281
282}; // end of Identity(OnlineSub) // end of Function
285typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:122
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:35
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:65
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:63
UPico_User class.
Definition: Pico_User.h:422