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
132 bool LaunchInvitableUserFlow(const FString& RoomID, FRoomLaunchInvitableUserFlow OnLaunchInvitableUserFlowCallback);
133
147 bool UpdateDataStore(const FString& RoomID, const TMap<FString, FString>& Data, FRoomUpdateDataStore OnUpdateDataStoreCallback);
148
171 bool CreateAndJoinPrivate2(ERoomJoinPolicy JoinPolicy, uint32 MaxUsers, FPicoRoomOptions RoomOptions, FRoomCreateAndJoinPrivate2 OnCreateAndJoinPrivate2Callback);
172
183 bool Get(const FString& RoomID, FRoomGet OnGetCallback);
184
194 bool GetCurrent(FRoomGetCurrent OnGetCurrentCallback);
195
209 bool GetCurrentForUser(const FString& UserId, FRoomGetCurrentForUser OnGetCurrentForUserCallback);
210
225 bool GetInvitableUsers2(FPicoRoomOptions roomOptions, FRoomGetInvitableUsers2 OnGetInvitableUsers2Callback);
226
242 bool GetModeratedRooms(int PageIndex, int PageSize, FRoomGetModeratedRooms OnGetModeratedRoomsCallback);
243
258 bool InviteUser(const FString& RoomID, const FString& Token, FRoomInviteUser OnInviteUserCallback);
259
260
273 bool Join2(const FString& RoomID, FPicoRoomOptions options, FRoomJoin2 OnJoin2Callback);
274
288 bool KickUser(const FString& RoomID, const FString& UserID, int KickDurationSeconds, FRoomKickUser OnKickUserCallback);
289
302 bool Leave(const FString& RoomID, FRoomLeave OnLeaveCallback);
303
316 bool SetDescription(const FString& RoomID, const FString& Description, FRoomSetDescription OnSetDescriptionCallback);
317
335 bool UpdateMembershipLockStatus(const FString& RoomID, ERoomMembershipLockStatus MembershipLockStatus, FRoomUpdateMembershipLockStatus OnUpdateMembershipLockStatusCallback);
336
349 bool UpdateOwner(const FString& RoomID, const FString& UserID, FRoomUpdateOwner OnUpdateOwnerCallback);
350
370 bool UpdatePrivateRoomJoinPolicy(const FString& RoomID, ERoomJoinPolicy JoinPolicy, FRoomUpdatePrivateRoomJoinPolicy OnUpdatePrivateRoomJoinPolicyCallback);
371
372private:
373 ppfRoomOptions* GetppfRoomOptions(FPicoRoomOptions PicoRoomOptions);
374
375 ppfRoomJoinPolicy GetppfRoomJoinPolicy(ERoomJoinPolicy JoinPolicy);
376 ppfID GetppfID(const FString& StringID);
377 ppfRoomMembershipLockStatus GetppfRoomMembershipLockStatus(ERoomMembershipLockStatus RoomMembershipLockStatus);
378};
379
395UCLASS()
396class ONLINESUBSYSTEMPICO_API UOnlinePicoRoomFunction : public UBlueprintFunctionLibrary
397{
398 GENERATED_BODY()
399
400
401public:
407 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
408 static void LaunchInvitableUserFlow(UObject* WorldContextObject, const FString& RoomID, FRoomLaunchInvitableUserFlow OnLaunchInvitableUserFlowCallback);
409
418 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
419 static void UpdateDataStore(UObject* WorldContextObject, const FString& RoomID, const TMap<FString, FString>& Data, FRoomUpdateDataStore OnUpdateDataStoreCallback);
420
437 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
438 static void CreateAndJoinPrivate2(UObject* WorldContextObject, ERoomJoinPolicy JoinPolicy, int32 MaxUsers, FPicoRoomOptions RoomOptions, FRoomCreateAndJoinPrivate2 OnCreateAndJoinPrivate2Callback);
439
445 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
446 static void Get(UObject* WorldContextObject, const FString& RoomID, FRoomGet OnGetCallback);
447
452 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
453 static void GetCurrent(UObject* WorldContextObject, FRoomGetCurrent OnGetCurrentCallback);
454
462 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
463 static void GetCurrentForUser(UObject* WorldContextObject, const FString& UserId, FRoomGetCurrentForUser OnGetCurrentForUserCallback);
464
473 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
474 static void GetInvitableUsers2(UObject* WorldContextObject, FPicoRoomOptions RoomOptions, FRoomGetInvitableUsers2 OnGetInvitableUsers2Callback);
475
485 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
486 static void GetModeratedRooms(UObject* WorldContextObject, int PageIndex, int PageSize, FRoomGetModeratedRooms OnGetModeratedRoomsCallback);
487
496 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
497 static void InviteUser(UObject* WorldContextObject, const FString& RoomID, const FString& Token, FRoomInviteUser OnInviteUserCallback);
498
499
506 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
507 static void Join2(UObject* WorldContextObject, const FString& RoomID, FPicoRoomOptions RoomOptions, FRoomJoin2 OnJoin2Callback);
508
516 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
517 static void KickUser(UObject* WorldContextObject, const FString& RoomID, const FString& UserID, int32 KickDurationSeconds, FRoomKickUser OnKickUserCallback);
518
525 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
526 static void Leave(UObject* WorldContextObject, const FString& RoomID, FRoomLeave OnLeaveCallback);
527
534 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
535 static void SetDescription(UObject* WorldContextObject, const FString& RoomID, const FString& Description, FRoomSetDescription OnSetDescriptionCallback);
536
548 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
549 static void UpdateMembershipLockStatus(UObject* WorldContextObject, const FString& RoomID, ERoomMembershipLockStatus MembershipLockStatus, FRoomUpdateMembershipLockStatus OnUpdateMembershipLockStatusCallback);
550
557 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
558 static void UpdateOwner(UObject* WorldContextObject, const FString& RoomID, const FString& UserID, FRoomUpdateOwner OnUpdateOwnerCallback);
559
573 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"), Category = "OnlinePico|Room")
574 static void UpdatePrivateRoomJoinPolicy(UObject* WorldContextObject, const FString& RoomID, ERoomJoinPolicy JoinPolicy, FRoomUpdatePrivateRoomJoinPolicy OnUpdatePrivateRoomJoinPolicyCallback);
575};
576
582UCLASS(BlueprintType)
583class ONLINESUBSYSTEMPICO_API UPico_Room : public UObject
584{
585 GENERATED_BODY()
586
587private:
588 UPROPERTY()
589 UPico_DataStore* DataStore = nullptr;
590
591 UPROPERTY()
592 UPico_User* Owner = nullptr;
593
594 UPROPERTY()
595 UPico_UserArray* Users = nullptr;
596
597 FString Description = FString();
598
599 ppfID ID = 0;
600
601 FString RoomID = FString();
602
603 bool bIsMembershipLocked = false;
604
606
608
609 int32 MaxUserNum = 0;
610
612
613public:
614 void InitParams(ppfRoomHandle InRoomHandle);
615
617 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
618 UPico_DataStore* GetDataStore();
619
621 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
622 UPico_User* GetOwner();
623
625 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
626 UPico_UserArray* GetUsers();
627
629 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
630 FString GetDescription();
631
632 ppfID GetppfID();
633
635 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
636 FString GetRoomID();
637
639 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
640 bool GetIsMembershipLocked();
641
643 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
644 ERoomJoinPolicy GetJoinPolicy();
645
647 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
648 ERoomJoinabilit GetJoinability();
649
651 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
652 int32 GetMaxUsers();
653
655 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
656 ERoomType GetRoomType();
657
658 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room")
659 FString GetDebugString();
660};
661
662
664UCLASS(BlueprintType)
665class ONLINESUBSYSTEMPICO_API UPico_RoomArray : public UObject
666{
667 GENERATED_BODY()
668private:
669 UPROPERTY()
670 TArray<UPico_Room*> RoomArray;
671 FString NextPageParam = FString();
672 int32 Size = 0;
673 int32 TotalSize = 0;
674 bool bHasNextPage;
675public:
676 void InitParams(ppfRoomArrayHandle InppfRoomArrayHandle);
677
679 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
680 UPico_Room* GetElement(int32 Index);
681
682
683 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
684 FString GetNextPageParam();
685
687 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
688 int32 GetSize();
689
690 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
691 int32 GetTotalSize();
692
694 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
695 bool HasNextPage();
696
697 UFUNCTION(BlueprintPure, Category = "Pico Platform|Room|Room Array")
698 FString GetDebugString();
699};
PicoRoomInterface class.
Definition: Pico_Room.h:74
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. The payload returned is roomarray....
OnlinePicoRoom Blueprint Function class.
Definition: Pico_Room.h:397
UPico_DataStore class.
Definition: Pico_DataStore.h:30
UPico_RoomArray class.
Definition: Pico_Room.h:666
UPico_Room class.
Definition: Pico_Room.h:584
UPico_UserArray class.
Definition: Pico_User.h:510
UPico_User class.
Definition: Pico_User.h:422
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
Room options.
Definition: OnlineSubsystemPicoNames.h:753