Pico Unreal Platform SDK
OnlineSubsystemPico.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 "OnlineSubsystem.h"
8#include "OnlineSubsystemImpl.h"
9#include "OnlineSubsystemPicoPackage.h"
10#include "OnlineMessageTaskManagerPico.h"
11#include "OnlineSubsystemPicoNames.h"
12
14
16//typedef TSharedPtr<class FOnlineSessionPico, ESPMode::ThreadSafe> FOnlineSessionPicoPtr;
17//typedef TSharedPtr<class FOnlineProfilePico, ESPMode::ThreadSafe> FOnlineProfilePicoPtr;
18//typedef TSharedPtr<class FOnlineUserCloudPico, ESPMode::ThreadSafe> FOnlineUserCloudPicoPtr;
19//typedef TSharedPtr<class FOnlineLeaderboardPico, ESPMode::ThreadSafe> FOnlineLeaderboardsPicoPtr;
20//typedef TSharedPtr<class FOnlineVoicePico, ESPMode::ThreadSafe> FOnlineVoicePicoPtr;
21//typedef TSharedPtr<class FOnlineExternalUIPico, ESPMode::ThreadSafe> FOnlineExternalUIPicoPtr;
22//typedef TSharedPtr<class FRTCPicoUserInterface, ESPMode::ThreadSafe> FRTCPicoUserInterfacePtr;
23//typedef TSharedPtr<class FOnlineAchievementsPico, ESPMode::ThreadSafe> FOnlineAchievementsPicoPtr;
24
25typedef TSharedPtr<class FOnlineIdentityPico, ESPMode::ThreadSafe> FOnlineIdentityPicoPtr;
26typedef TSharedPtr<class FOnlineFriendsPico, ESPMode::ThreadSafe> FOnlineFriendsPicoPtr;
27
29typedef TSharedPtr<class FOnlineSessionPico, ESPMode::ThreadSafe> FOnlineSessionPicoPtr;
31typedef TSharedPtr<class FOnlineLeaderboardPico, ESPMode::ThreadSafe> FOnlineLeaderboardPicoPtr;
32
34class FPicoApplicationInterface;
41
43class ONLINESUBSYSTEMPICO_API FOnlineSubsystemPico : public FOnlineSubsystemImpl
44{
45public:
46 virtual ~FOnlineSubsystemPico() = default;
47
48 virtual IOnlineSessionPtr GetSessionInterface() const override;
49
51 virtual IOnlineFriendsPtr GetFriendsInterface() const override;
52 virtual IOnlinePartyPtr GetPartyInterface() const override;
53 virtual IOnlineGroupsPtr GetGroupsInterface() const override;
54 virtual IOnlineSharedCloudPtr GetSharedCloudInterface() const override;
55 virtual IOnlineUserCloudPtr GetUserCloudInterface() const override;
56 virtual IOnlineEntitlementsPtr GetEntitlementsInterface() const override;
57 virtual IOnlineLeaderboardsPtr GetLeaderboardsInterface() const override;
58 virtual IOnlineVoicePtr GetVoiceInterface() const override;
59 virtual IOnlineExternalUIPtr GetExternalUIInterface() const override;
60 virtual IOnlineTimePtr GetTimeInterface() const override;
61
63 virtual IOnlineIdentityPtr GetIdentityInterface() const override;
64 virtual IOnlineTitleFilePtr GetTitleFileInterface() const override;
65 virtual IOnlineStoreV2Ptr GetStoreV2Interface() const override;
66 virtual IOnlinePurchasePtr GetPurchaseInterface() const override;
67 virtual IOnlineEventsPtr GetEventsInterface() const override;
68 virtual IOnlineAchievementsPtr GetAchievementsInterface() const override;
69 virtual IOnlineSharingPtr GetSharingInterface() const override;
70 virtual IOnlineUserPtr GetUserInterface() const override;
71 virtual IOnlineMessagePtr GetMessageInterface() const override;
72 virtual IOnlinePresencePtr GetPresenceInterface() const override;
73 virtual IOnlineChatPtr GetChatInterface() const override;
74 virtual IOnlineStatsPtr GetStatsInterface() const override;
75 virtual IOnlineTurnBasedPtr GetTurnBasedInterface() const override;
76 virtual IOnlineTournamentPtr GetTournamentInterface() const override;
77
78
79 virtual bool Init() override;
80 virtual bool Shutdown() override;
81 virtual FString GetAppId() const override;
82 virtual bool Exec(class UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override;
83 virtual FText GetOnlineServiceName() const override;
84
85 // FTickerObjectBase
86
87 virtual bool Tick(float DeltaTime) override;
88
89 //Rtc
90
92 TSharedPtr<FRTCPicoUserInterface> GetRtcUserInterface() const;
93
94 TSharedPtr<FPicoApplicationInterface> GetApplicationInterface() const;
95
96 TSharedPtr<FApplicationLifecycleInterface> GetApplicationLifecycleInterface() const;
97
98 TSharedPtr<FPicoIAPInterface> GetPicoIAPInterface() const;
99
100 TSharedPtr<FPicoUserInterface> GetPicoUserInterface() const;
101
102 TSharedPtr<FPicoPresenceInterface> GetPicoPresenceInterface() const;
103
104 TSharedPtr<FPicoSportInterface> GetPicoSportInterface() const;
105
106
107 // Game
108 FOnlineSessionPicoPtr GetGameSessionInterface() const;
109
110 TSharedPtr<FPicoAchievementsInterface> GetPicoAchievementsInterface() const;
111
112
113
117 void AddAsyncTask(ppfRequest RequestId, FPicoMessageOnCompleteDelegate Delegate);
118
119// void AddAsyncTask(ppfRequest RequestId, FPicoMessageOnCompleteDelegate Delegate);
120
121 FPicoMulticastMessageOnCompleteDelegate& GetOrAddNotify(ppfMessageType MessageType) const;
122 void RemoveNotifyDelegate(ppfMessageType MessageType, const FDelegateHandle& Delegate) const;
123
124PACKAGE_SCOPE:
125
128 explicit FOnlineSubsystemPico(FName InInstanceName) :
129 FOnlineSubsystemImpl(PICO_SUBSYSTEM, InInstanceName),
130 bPicoInit(false)
131 {}
132
133 bool IsInitialized() const;
134
135private:
136
137 bool bPicoInit;
138
139#if PLATFORM_WINDOWS
140 bool InitWithWindowsPlatform() const;
141#elif PLATFORM_ANDROID
142 bool InitWithAndroidPlatform();
143#endif
144
146 FOnlineIdentityPicoPtr IdentityInterface;
147
149 FOnlineFriendsPicoPtr FriendsInterface;
150
151 TSharedPtr<FRTCPicoUserInterface> RtcPicoUserInterface;
152
153 TSharedPtr<FPicoApplicationInterface> PicoApplicationInterface;
154
155 TSharedPtr<FPicoPresenceInterface> PicoPresenceInterface;
156
157 TSharedPtr<FApplicationLifecycleInterface> PicoApplicationLifecycleInterface;
158
159 TSharedPtr<FPicoIAPInterface> PicoIAPInterface;
160
161 TSharedPtr<FPicoUserInterface> PicoUserInterface;
162
163 TSharedPtr<FPicoSportInterface> PicoSportInterface;
164
165 FOnlineSessionPicoPtr GameSessionInterface;
166
167 FOnlineLeaderboardPicoPtr LeaderboardInterface;
168
169 TSharedPtr<FPicoAchievementsInterface> PicoAchievementsInterface;
170
172 class FOnlineAsyncTaskManagerPico* OnlineAsyncTaskThreadRunnable;
173
174};
175namespace FNetworkProtocolTypes
176{
177 ONLINESUBSYSTEMPICO_API extern const FLazyName Pico;
178}
179
180typedef TSharedPtr<FOnlineSubsystemPico, ESPMode::ThreadSafe> FOnlineSubsystemPicoPtr;
Pico Application interface class.
Definition: ApplicationLifecycleInterface.h:29
Definition: OnlineLeaderboardInterfacePico.h:31
FOnlineSessionPico class inherited from IOnlineSession(Unreal Engine).
Definition: OnlineSessionInterfacePico.h:58
OnlineSubsystemPico class inherited from FOnlineSubsystemImpl(Unreal Engine)
Definition: OnlineSubsystemPico.h:44
FOnlineSubsystemPico()=delete
class FOnlineAsyncTaskManagerPico * OnlineAsyncTaskThreadRunnable
Definition: OnlineSubsystemPico.h:172
FOnlineIdentityPicoPtr IdentityInterface
Definition: OnlineSubsystemPico.h:146
FOnlineFriendsPicoPtr FriendsInterface
Definition: OnlineSubsystemPico.h:149
PicoAchievementsInterface class.
Definition: Pico_Achievements.h:46
PicoIAPInterface class.
Definition: Pico_IAP.h:38
Pico Presence interface class.
Definition: PicoPresenceInterface.h:45
PicoSportInterface class.
Definition: Pico_Sport.h:37
PicoUserInterface class.
Definition: Pico_User.h:43
Pico RTC interface class.
Definition: RTCPicoUserInterface.h:198