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 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
183
190 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
191
197 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
198
199
203 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
204
208 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
209
213 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
214
218 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
219
220 // Not Supported
221 virtual FString GetAuthToken(int32 LocalUserNum) const override;
222
223 // Not Supported
224 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
225
226
227 // Not Supported
228 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
229
230 // Not Supported
231 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
232
235 virtual FString GetAuthType() const override;
236
237 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
238
239
240 // FOnlineIdentityPico
241
242 // <summary>The constructor.</summary>
243 // <param name="InSubsystem">The online subsystem being used.</param>
244 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
245
246 // The default destructor.
247 virtual ~FOnlineIdentityPico() = default;
248
249PACKAGE_SCOPE:
250
254
255 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
256
257private:
258
259 // @brief Reference to the main Pico subsystem.
260 FOnlineSubsystemPico& PicoSubsystem;
261
262 // @brief IDs mapped to locally registered users.
263#if ENGINE_MAJOR_VERSION > 4
264 TMap<int32, FUniqueNetIdRef> UserIds;
265#elif ENGINE_MINOR_VERSION > 26
266 TMap<int32, FUniqueNetIdRef> UserIds;
267#elif ENGINE_MINOR_VERSION > 24
268 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
269#endif
270 TMap<int32, UPico_User*> LoginPicoUserMap;
271
273#if ENGINE_MAJOR_VERSION > 4
274 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
275#elif ENGINE_MINOR_VERSION > 26
276 TUniqueNetIdMap<TSharedRef<FUserOnlineAccountPico>> UserAccounts;
277#elif ENGINE_MINOR_VERSION > 24
278 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
279#endif
280
281}; // end of Identity(OnlineSub) // end of Function
284typedef 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