PICO Unreal Platform SDK
Pico_Room.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 "UObject/NoExportTypes.h"
20#include "OnlineSubsystemPicoNames.h"
21#include "PPF_Platform.h"
22#include "Pico_Room.generated.h"
23//
24
25DECLARE_LOG_CATEGORY_EXTERN(PicoRoom, Log, All);
26
27class UPico_User;
28class UPico_DataStore;
29class UPico_UserArray;
30class UPico_Room;
31class UPico_RoomArray;
32
33
37DECLARE_MULTICAST_DELEGATE_FourParams(FRoomUpdateNotify, bool, /*bIsError*/ int, /*ErrorCode*/ const FString&, /*ErrorMessage*/ UPico_Room* /*Room*/);
38DECLARE_MULTICAST_DELEGATE_ThreeParams(FRoomUpdateOwnerNotify, bool, /*bIsError*/ int, /*ErrorCode*/ const FString&/*ErrorMessage*/);
39DECLARE_MULTICAST_DELEGATE_FourParams(FRoomJoinNotify, bool, /*bIsError*/ int, /*ErrorCode*/ const FString&, /*ErrorMessage*/ UPico_Room* /*Room*/);
40DECLARE_MULTICAST_DELEGATE_FourParams(FRoomLeaveNotify, bool, /*bIsError*/ int, /*ErrorCode*/ const FString&, /*ErrorMessage*/ UPico_Room* /*Room*/);
41DECLARE_MULTICAST_DELEGATE_FourParams(FRoomInviteAcceptedNotify, bool, /*bIsError*/ int, /*ErrorCode*/ const FString&, /*ErrorMessage*/ const FString& /*RoomID*/);
42
43DECLARE_DYNAMIC_DELEGATE_ThreeParams(FRoomLaunchInvitableUserFlow, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage);
44DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomUpdateDataStore, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
45DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomCreateAndJoinPrivate2, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
46DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomGet, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
47DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomGetCurrent, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
48DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomGetCurrentForUser, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
49DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomGetInvitableUsers2, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_UserArray*, UserArray);
50DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomGetModeratedRooms, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_RoomArray*, RoomArray);
51DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomInviteUser, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
52DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomJoin2, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
53DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomKickUser, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
54DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomLeave, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
55DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomSetDescription, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
56DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomUpdateMembershipLockStatus, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
57DECLARE_DYNAMIC_DELEGATE_ThreeParams(FRoomUpdateOwner, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage);
58DECLARE_DYNAMIC_DELEGATE_FourParams(FRoomUpdatePrivateRoomJoinPolicy, bool, bIsError, int, ErrorCode, const FString&, ErrorMessage, UPico_Room*, Room);
59// FRoom_LaunchInvitableUserFlow
60// FRoom_GetNextRoomArrayPage
61
73class ONLINESUBSYSTEMPICO_API FPicoRoomInterface
74{
75private:
76 FOnlineSubsystemPico& PicoSubsystem;
77
78public:
79 FPicoRoomInterface(FOnlineSubsystemPico& InSubsystem);
81
82 FDelegateHandle RoomUpdateHandle;
83 void OnRoomUpdateNotification(ppfMessageHandle Message, bool bIsError);
84
85 FDelegateHandle RoomUpdateOwnerHandle;
86 void OnRoomUpdateOwnerNotification(ppfMessageHandle Message, bool bIsError);
87
88 FDelegateHandle RoomJoinHandle;
89 void OnRoomJoinNotification(ppfMessageHandle Message, bool bIsError);
90
91 FDelegateHandle RoomLeaveHandle;
92 void OnRoomLeaveNotification(ppfMessageHandle Message, bool bIsError);
93
94 FDelegateHandle RoomInviteAcceptedHandle;
95 void OnRoomInviteAcceptedNotification(ppfMessageHandle Message, bool bIsError);
96
97 FRoomUpdateNotify RoomUpdateNotify;
98 FRoomUpdateOwnerNotify RoomUpdateOwnerNotify;
99 FRoomJoinNotify RoomJoinNotify;
100 FRoomLeaveNotify RoomLeaveNotify;
101 FRoomInviteAcceptedNotify RoomInviteAcceptedNotify;
102
103 FRoomLaunchInvitableUserFlow LaunchInvitableUserFlowDelegate;
104 FRoomUpdateDataStore UpdateDataStoreDelegate;
105 FRoomCreateAndJoinPrivate2 CreateAndJoinPrivate2Delegate;
106 FRoomGet GetDelegate;
107 FRoomGetCurrent GetCurrentDelegate;
108 FRoomGetCurrentForUser GetCurrentForUserDelegate;
109 FRoomGetInvitableUsers2 GetInvitableUsers2Delegate;
110 FRoomGetModeratedRooms GetModeratedRoomsDelegate;
111 FRoomInviteUser InviteUserDelegate;
112 FRoomJoin2 Join2Delegate;
113 FRoomKickUser KickUserDelegate;
114 FRoomLeave LeaveDelegate;
115 FRoomSetDescription SetDescriptionDelegate;
116 FRoomUpdateMembershipLockStatus UpdateMembershipLockStatusDelegate;
117 FRoomUpdateOwner UpdateOwnerDelegate;
118 FRoomUpdatePrivateRoomJoinPolicy UpdatePrivateRoomJoinPolicyDelegate;
119
130 bool LaunchInvitableUserFlow(const FString& RoomID, FRoomLaunchInvitableUserFlow OnLaunchInvitableUserFlowCallback);
131
144 bool UpdateDataStore(const FString& RoomID, const TMap<FString, FString>& Data, FRoomUpdateDataStore OnUpdateDataStoreCallback);
145
167 bool CreateAndJoinPrivate2(ERoomJoinPolicy JoinPolicy, uint32 MaxUsers, FPicoRoomOptions RoomOptions, FRoomCreateAndJoinPrivate2 OnCreateAndJoinPrivate2Callback);
168
178 bool Get(const FString& RoomID, FRoomGet OnGetCallback);
179
188 bool GetCurrent(FRoomGetCurrent OnGetCurrentCallback);
189
202 bool GetCurrentForUser(const FString& UserId, FRoomGetCurrentForUser OnGetCurrentForUserCallback);
203
217 bool GetInvitableUsers2(FPicoRoomOptions roomOptions, FRoomGetInvitableUsers2 OnGetInvitableUsers2Callback);
218
230 bool GetModeratedRooms(int PageIndex, int PageSize, FRoomGetModeratedRooms OnGetModeratedRoomsCallback);
231
245 bool InviteUser(const FString& RoomID, const FString& Token, FRoomInviteUser OnInviteUserCallback);
246
247
259 bool Join2(const FString& RoomID, FPicoRoomOptions options, FRoomJoin2 OnJoin2Callback);
260
273 bool KickUser(const FString& RoomID, const FString& UserID, int KickDurationSeconds, FRoomKickUser OnKickUserCallback);
274
286 bool Leave(const FString& RoomID, FRoomLeave OnLeaveCallback);
287
299 bool SetDescription(const FString& RoomID, const FString& Description, FRoomSetDescription OnSetDescriptionCallback);
300
317 bool UpdateMembershipLockStatus(const FString& RoomID, ERoomMembershipLockStatus MembershipLockStatus, FRoomUpdateMembershipLockStatus OnUpdateMembershipLockStatusCallback);
318
330 bool UpdateOwner(const FString& RoomID, const FString& UserID, FRoomUpdateOwner OnUpdateOwnerCallback);
331
350 bool UpdatePrivateRoomJoinPolicy(const FString& RoomID, ERoomJoinPolicy JoinPolicy, FRoomUpdatePrivateRoomJoinPolicy OnUpdatePrivateRoomJoinPolicyCallback);
351
352private:
353 ppfRoomOptions* GetppfRoomOptions(FPicoRoomOptions PicoRoomOptions);
354
355 ppfRoomJoinPolicy GetppfRoomJoinPolicy(ERoomJoinPolicy JoinPolicy);
356 ppfID GetppfID(const FString& StringID);
357 ppfRoomMembershipLockStatus GetppfRoomMembershipLockStatus(ERoomMembershipLockStatus RoomMembershipLockStatus);
358};
359
375UCLASS()
376class ONLINESUBSYSTEMPICO_API UOnlinePicoRoomFunction : public UBlueprintFunctionLibrary
377{
378 GENERATED_BODY()
379
380
381public:
386 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
387 static void LaunchInvitableUserFlow(UObject* WorldContextObject, const FString& RoomID, FRoomLaunchInvitableUserFlow OnLaunchInvitableUserFlowCallback);
388
396 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
397 static void UpdateDataStore(UObject* WorldContextObject, const FString& RoomID, const TMap<FString, FString>& Data, FRoomUpdateDataStore OnUpdateDataStoreCallback);
398
414 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
415 static void CreateAndJoinPrivate2(UObject* WorldContextObject, ERoomJoinPolicy JoinPolicy, int32 MaxUsers, FPicoRoomOptions RoomOptions, FRoomCreateAndJoinPrivate2 OnCreateAndJoinPrivate2Callback);
416
421 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
422 static void Get(UObject* WorldContextObject, const FString& RoomID, FRoomGet OnGetCallback);
423
427 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
428 static void GetCurrent(UObject* WorldContextObject, FRoomGetCurrent OnGetCurrentCallback);
429
436 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
437 static void GetCurrentForUser(UObject* WorldContextObject, const FString& UserId, FRoomGetCurrentForUser OnGetCurrentForUserCallback);
438
446 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
447 static void GetInvitableUsers2(UObject* WorldContextObject, FPicoRoomOptions RoomOptions, FRoomGetInvitableUsers2 OnGetInvitableUsers2Callback);
448
454 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
455 static void GetModeratedRooms(UObject* WorldContextObject, int PageIndex, int PageSize, FRoomGetModeratedRooms OnGetModeratedRoomsCallback);
456
464 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
465 static void InviteUser(UObject* WorldContextObject, const FString& RoomID, const FString& Token, FRoomInviteUser OnInviteUserCallback);
466
467
473 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
474 static void Join2(UObject* WorldContextObject, const FString& RoomID, FPicoRoomOptions RoomOptions, FRoomJoin2 OnJoin2Callback);
475
482 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
483 static void KickUser(UObject* WorldContextObject, const FString& RoomID, const FString& UserID, int32 KickDurationSeconds, FRoomKickUser OnKickUserCallback);
484
490 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
491 static void Leave(UObject* WorldContextObject, const FString& RoomID, FRoomLeave OnLeaveCallback);
492
498 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
499 static void SetDescription(UObject* WorldContextObject, const FString& RoomID, const FString& Description, FRoomSetDescription OnSetDescriptionCallback);
500
511 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
512 static void UpdateMembershipLockStatus(UObject* WorldContextObject, const FString& RoomID, ERoomMembershipLockStatus MembershipLockStatus, FRoomUpdateMembershipLockStatus OnUpdateMembershipLockStatusCallback);
513
519 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
520 static void UpdateOwner(UObject* WorldContextObject, const FString& RoomID, const FString& UserID, FRoomUpdateOwner OnUpdateOwnerCallback);
521
534 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
535 static void UpdatePrivateRoomJoinPolicy(UObject* WorldContextObject, const FString& RoomID, ERoomJoinPolicy JoinPolicy, FRoomUpdatePrivateRoomJoinPolicy OnUpdatePrivateRoomJoinPolicyCallback);
536};
537
538
539UCLASS(BlueprintType)
540class ONLINESUBSYSTEMPICO_API UPico_Room : public UObject
541{
542 GENERATED_BODY()
543
544private:
545 UPROPERTY()
546 UPico_DataStore* DataStore = nullptr;
547
548 UPROPERTY()
549 UPico_User* Owner = nullptr;
550
551 UPROPERTY()
552 UPico_UserArray* Users = nullptr;
553
554 FString Description = FString();
555
556 ppfID ID = 0;
557
558 FString RoomID = FString();
559
560 bool bIsMembershipLocked = false;
561
563
565
566 int32 MaxUserNum = 0;
567
569
570public:
571 void InitParams(ppfRoomHandle InRoomHandle);
572
573 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
574 UPico_DataStore* GetDataStore();
575
576 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
577 UPico_User* GetOwner();
578
579 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
580 UPico_UserArray* GetUsers();
581
582 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
583 FString GetDescription();
584
585 ppfID GetppfID();
586
587 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
588 FString GetRoomID();
589
590 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
591 bool GetIsMembershipLocked();
592
593 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
594 ERoomJoinPolicy GetJoinPolicy();
595
596 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
597 ERoomJoinabilit GetJoinability();
598
599 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
600 int32 GetMaxUsers();
601
602 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
603 ERoomType GetRoomType();
604
605 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
606 FString GetDebugString();
607};
608
609
610UCLASS(BlueprintType)
611class ONLINESUBSYSTEMPICO_API UPico_RoomArray : public UObject
612{
613 GENERATED_BODY()
614private:
615 UPROPERTY()
616 TArray<UPico_Room*> RoomArray;
617 FString NextPageParam = FString();
618 int32 Size = 0;
619 int32 TotalSize = 0;
620 bool bHasNextPage;
621public:
622 void InitParams(ppfRoomArrayHandle InppfRoomArrayHandle);
623
624 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
625 UPico_Room* GetElement(int32 Index);
626
627 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
628 FString GetNextPageParam();
629
630 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
631 int32 GetSize();
632
633 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
634 int32 GetTotalSize();
635
636 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
637 bool HasNextPage();
638
639 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
640 FString GetDebugString();
641};
PicoRoomInterface class.
Definition: Pico_Room.h:74
OnlinePicoRoom Blueprint Function class.
Definition: Pico_Room.h:377
ERoomType
The type of room you can create.
Definition: OnlineSubsystemPicoNames.h:172
ERoomMembershipLockStatus
Room membership lock status.
Definition: OnlineSubsystemPicoNames.h:769
ERoomJoinabilit
The joinability of a room.
Definition: OnlineSubsystemPicoNames.h:194
ERoomJoinPolicy
The join policy type of a room.
Definition: OnlineSubsystemPicoNames.h:182
bool LaunchInvitableUserFlow(const FString &RoomID, FRoomLaunchInvitableUserFlow OnLaunchInvitableUserFlowCallback)
Launches the invitation flow to let the current user invite friends to a specified room....
bool UpdateDataStore(const FString &RoomID, const TMap< FString, FString > &Data, FRoomUpdateDataStore OnUpdateDataStoreCallback)
Updates the data store of the current room (the caller should be the room owner).
bool CreateAndJoinPrivate2(ERoomJoinPolicy JoinPolicy, uint32 MaxUsers, FPicoRoomOptions RoomOptions, FRoomCreateAndJoinPrivate2 OnCreateAndJoinPrivate2Callback)
Creates a new private room and joins it.
bool InviteUser(const FString &RoomID, const FString &Token, FRoomInviteUser OnInviteUserCallback)
Invites a user to the current room.
bool GetCurrentForUser(const FString &UserId, FRoomGetCurrentForUser OnGetCurrentForUserCallback)
Gets the current room of the specified user.
bool Join2(const FString &RoomID, FPicoRoomOptions options, FRoomJoin2 OnJoin2Callback)
Joins the target room and meanwhile leaves the current room.
bool UpdatePrivateRoomJoinPolicy(const FString &RoomID, ERoomJoinPolicy JoinPolicy, FRoomUpdatePrivateRoomJoinPolicy OnUpdatePrivateRoomJoinPolicyCallback)
Sets the join policy for a specified private room.
bool GetCurrent(FRoomGetCurrent OnGetCurrentCallback)
Gets the data of the room you are currently in.
bool UpdateMembershipLockStatus(const FString &RoomID, ERoomMembershipLockStatus MembershipLockStatus, FRoomUpdateMembershipLockStatus OnUpdateMembershipLockStatusCallback)
Locks/unlocks the membership of a room (the caller should be the room owner) to allow/disallow new me...
bool GetInvitableUsers2(FPicoRoomOptions roomOptions, FRoomGetInvitableUsers2 OnGetInvitableUsers2Callback)
Gets a list of members the user can invite to the room. These members are drawn from the user's frien...
bool KickUser(const FString &RoomID, const FString &UserID, int KickDurationSeconds, FRoomKickUser OnKickUserCallback)
Kicks a user out of a room. For use by homeowners only.
bool SetDescription(const FString &RoomID, const FString &Description, FRoomSetDescription OnSetDescriptionCallback)
Sets the description of a room. For use by homeowners only.
bool UpdateOwner(const FString &RoomID, const FString &UserID, FRoomUpdateOwner OnUpdateOwnerCallback)
Modifies the owner of the room, this person needs to be the person in this room.
bool Leave(const FString &RoomID, FRoomLeave OnLeaveCallback)
Leaves the current room.
bool Get(const FString &RoomID, FRoomGet OnGetCallback)
Gets the information about a specified room.
bool GetModeratedRooms(int PageIndex, int PageSize, FRoomGetModeratedRooms OnGetModeratedRoomsCallback)
Gets the list of moderated rooms created for the application.
Room options.
Definition: OnlineSubsystemPicoNames.h:753