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*/);
20
22class FUserOnlineAccountPico : public FUserOnlineAccount
23{
24public:
25
26#if ENGINE_MAJOR_VERSION > 4
27 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
28#elif ENGINE_MINOR_VERSION > 26
29 FUserOnlineAccountPico(const FUniqueNetIdRef& InUserId, const FString& InName)
30#elif ENGINE_MINOR_VERSION > 24
31 FUserOnlineAccountPico(const TSharedRef<const FUniqueNetId>& InUserId, const FString& InName)
32#endif
33 : UserId(InUserId),
34 Name(InName)
35 { }
36
38 {
39 }
40
41
43#if ENGINE_MAJOR_VERSION > 4
44 FUniqueNetIdRef UserId;
45#elif ENGINE_MINOR_VERSION > 26
46 FUniqueNetIdRef UserId;
47#elif ENGINE_MINOR_VERSION > 24
48 TSharedRef<const FUniqueNetId> UserId;
49#endif
51 TMap<FString, FString> AdditionalAuthData;
53 TMap<FString, FString> UserAttributes;
54
55
56 // FOnlineUser
57
58
59 // @return The ID associated with the user account provided by the online service during registration.
60#if ENGINE_MAJOR_VERSION > 4
61 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
62#elif ENGINE_MINOR_VERSION > 26
63 virtual FUniqueNetIdRef GetUserId() const override { return UserId; };
64#elif ENGINE_MINOR_VERSION > 24
65 virtual TSharedRef<const FUniqueNetId> GetUserId() const override { return UserId; }
66#endif
67 // @return The real name for the user if known.
68 virtual FString GetRealName() const override { return Name; }
69
70 // @return The nickname of the user if known.
71 virtual FString GetDisplayName(const FString& Platform = FString()) const override { return Name; }
72
73 // @return Any additional user data associated with a registered user.
74 virtual bool GetUserAttribute(const FString& AttrName, FString& OutAttrValue) const override;
75
76 // @return Whether a local attribute for a user was successfully set.
77 virtual bool SetUserAttribute(const FString& AttrName, const FString& AttrValue) override;
78
79 // FUserOnlineAccount
80
81
82 // @return The access token which is provided to user once authenticated by the online service.
83 virtual FString GetAccessToken() const override { return TEXT("ACCESSTOKEN"); }
84
85
86 // @return Any additional auth data associated with a registered user.
87 virtual bool GetAuthAttribute(const FString& AttrName, FString& OutAttrValue) const override;
88
89private:
90 FString Name;
91 FString AccessToken;
92};
93
109class FOnlineIdentityPico : public IOnlineIdentity
110{
111public:
112
124 virtual bool Login(int32 LocalUserNum, const FOnlineAccountCredentials& AccountCredentials) override;
125
136 virtual bool Logout(int32 LocalUserNum) override;
137
146 virtual bool AutoLogin(int32 LocalUserNum) override;
147
153 virtual TSharedPtr<FUserOnlineAccount> GetUserAccount(const FUniqueNetId& UserId) const override;
154
163 virtual TArray<TSharedPtr<FUserOnlineAccount> > GetAllUserAccounts() const override;
164
170 virtual TSharedPtr<const FUniqueNetId> GetUniquePlayerId(int32 LocalUserNum) const override;
171
172
179 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(uint8* Bytes, int32 Size) override;
180
186 virtual TSharedPtr<const FUniqueNetId> CreateUniquePlayerId(const FString& Str) override;
187
188
192 virtual ELoginStatus::Type GetLoginStatus(int32 LocalUserNum) const override;
193
197 virtual ELoginStatus::Type GetLoginStatus(const FUniqueNetId& UserId) const override;
198
202 virtual FString GetPlayerNickname(int32 LocalUserNum) const override;
203
207 virtual FString GetPlayerNickname(const FUniqueNetId& UserId) const override;
208
209 // Not Supported
210 virtual FString GetAuthToken(int32 LocalUserNum) const override;
211
212 // Not Supported
213 virtual void RevokeAuthToken(const FUniqueNetId& UserId, const FOnRevokeAuthTokenCompleteDelegate& Delegate) override;
214
215
216 // Not Supported
217 virtual void GetUserPrivilege(const FUniqueNetId& UserId, EUserPrivileges::Type Privilege, const FOnGetUserPrivilegeCompleteDelegate& Delegate) override;
218
219 // Not Supported
220 virtual FPlatformUserId GetPlatformUserIdFromUniqueNetId(const FUniqueNetId& UniqueNetId) const override;
221
224 virtual FString GetAuthType() const override;
225
226 UPico_User* GetLoginPicoUser(int32 LocalUserNum);
227
228
229 // FOnlineIdentityPico
230
231 // <summary>The constructor.</summary>
232 // <param name="InSubsystem">The online subsystem being used.</param>
233 FOnlineIdentityPico(FOnlineSubsystemPico& InSubsystem);
234
235 // The default destructor.
236 virtual ~FOnlineIdentityPico() = default;
237
238PACKAGE_SCOPE:
239
243
244 void OnLoginComplete(ppfMessageHandle Message, bool bIsError, int32 LocalUserNum);
245
246private:
247
248 // @brief Reference to the main Pico subsystem.
249 FOnlineSubsystemPico& PicoSubsystem;
250
251 // @brief IDs mapped to locally registered users.
252#if ENGINE_MAJOR_VERSION > 4
253 TMap<int32, FUniqueNetIdRef> UserIds;
254#elif ENGINE_MINOR_VERSION > 26
255 TMap<int32, FUniqueNetIdRef> UserIds;
256#elif ENGINE_MINOR_VERSION > 24
257 TMap<int32, TSharedPtr<const FUniqueNetId>> UserIds;
258#endif
259 TMap<int32, UPico_User*> LoginPicoUserMap;
260
262 TMap<FUniqueNetIdPico, TSharedRef<FUserOnlineAccountPico>> UserAccounts;
263
264}; // end of Identity(OnlineSub) // end of Function
267typedef TSharedPtr<FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
OnlineIdentityPico class inherited from IOnlineIdentity(Unreal Engine)
Definition: OnlineIdentityPico.h:110
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.
TMap< FUniqueNetIdPico, TSharedRef< FUserOnlineAccountPico > > UserAccounts
IDs mapped to locally registered user accounts.
Definition: OnlineIdentityPico.h:262
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:23
TMap< FString, FString > UserAttributes
Definition: OnlineIdentityPico.h:53
TMap< FString, FString > AdditionalAuthData
Definition: OnlineIdentityPico.h:51
UPico_User class.
Definition: Pico_User.h:451