From 9e618bbeb14dd45f4893a37f87d1a3e9cc6f6ec5 Mon Sep 17 00:00:00 2001 From: mordentral Date: Thu, 14 Jan 2016 15:21:37 -0500 Subject: [PATCH] added invite received delegate --- .../Classes/AdvancedFriendsGameInstance.h | 5 +++-- .../Classes/AdvancedSessionsLibrary.h | 2 +- .../Private/AdvancedFriendsGameInstance.cpp | 17 +++++++++-------- .../Private/AdvancedSessionsLibrary.cpp | 4 ++-- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h b/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h index e8184d1..b6f508f 100644 --- a/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h +++ b/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h @@ -46,11 +46,12 @@ public: FOnSessionInviteReceivedDelegate SessionInviteReceivedDelegate; FDelegateHandle SessionInviteReceivedDelegateHandle; - void OnSessionInviteReceivedMaster(TSharedPtr PersonInvited, TSharedPtr PersonInviting, const FOnlineSessionSearchResult& SessionToJoin); + //const FUniqueNetId& /*UserId*/, const FUniqueNetId& /*FromId*/, const FString& /*AppId*/, const FOnlineSessionSearchResult& /*InviteResult*/ + void OnSessionInviteReceivedMaster(const FUniqueNetId & PersonInvited, const FUniqueNetId & PersonInviting, const FString & AppId, const FOnlineSessionSearchResult& SessionToJoin); // After a session invite has been accepted by the local player this event is triggered, call JoinSession on the session result to join it UFUNCTION(BlueprintImplementableEvent, Category = "AdvancedFriends") - void OnSessionInviteReceived(int32 LocalPlayerNum, FBPUniqueNetId PersonInviting, const FBlueprintSessionResult& SessionToJoin); + void OnSessionInviteReceived(int32 LocalPlayerNum, FBPUniqueNetId PersonInviting, const FString& AppId, const FBlueprintSessionResult& SessionToJoin); //*** Session invite accepted by local ***// FOnSessionUserInviteAcceptedDelegate SessionInviteAcceptedDelegate; diff --git a/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h b/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h index 6441f38..7def1c7 100644 --- a/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h +++ b/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h @@ -129,7 +129,7 @@ public: // Get the number of network players UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|Misc", meta = (bIgnoreSelf = "true", WorldContext = "WorldContextObject", DisplayName = "GetNumNetworkPlayers")) - static void GetNumberOfNetworkPlayers(int32 &NumNetPlayers); + static void GetNumberOfNetworkPlayers(UObject* WorldContextObject, int32 &NumNetPlayers); // Get the network player index of the given controller UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|PlayerInfo|Misc") diff --git a/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp b/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp index a16669d..d0b2d88 100644 --- a/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp +++ b/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp @@ -29,7 +29,7 @@ void UAdvancedFriendsGameInstance::Shutdown() { // Clear all of the delegate handles here SessionInterface->ClearOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegateHandle); - + SessionInterface->ClearOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegateHandle); } @@ -63,6 +63,7 @@ void UAdvancedFriendsGameInstance::Init() // Multiple logins either (IE: Steam) SessionInviteAcceptedDelegateHandle = SessionInterface->AddOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegate); + SessionInviteReceivedDelegateHandle = SessionInterface->AddOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegate); } else { @@ -157,7 +158,7 @@ void UAdvancedFriendsGameInstance::OnPlayerTalkingStateChangedMaster(TSharedRef< } } -void UAdvancedFriendsGameInstance::OnSessionInviteReceivedMaster(TSharedPtr PersonInvited, TSharedPtr PersonInviting, const FOnlineSessionSearchResult& SessionToJoin) +void UAdvancedFriendsGameInstance::OnSessionInviteReceivedMaster(const FUniqueNetId & PersonInvited, const FUniqueNetId & PersonInviting, const FString& AppId, const FOnlineSessionSearchResult& SessionToJoin) { if (SessionToJoin.IsValid()) { @@ -165,10 +166,10 @@ void UAdvancedFriendsGameInstance::OnSessionInviteReceivedMaster(TSharedPtr PlayerList; @@ -177,17 +178,17 @@ void UAdvancedFriendsGameInstance::OnSessionInviteReceivedMaster(TSharedPtrNum(); i++) + for (int i = 0; i < PlayerList.Num(); i++) { - if (PlayerList[i]->PlayerState->UniqueId == PersonInvited) + if (*PlayerList[i]->PlayerState->UniqueId.GetUniqueNetId() == PersonInvited) { - PlayerNum = i; + LocalPlayer = i; Player = PlayerList[i]; break; } } - OnSessionInviteReceived(LocalPlayer, PInviting, BluePrintResult); + OnSessionInviteReceived(LocalPlayer, PInviting, AppId, BluePrintResult); IAdvancedFriendsInterface* TheInterface = NULL; diff --git a/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp b/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp index 0d3f21a..76411cf 100644 --- a/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp +++ b/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp @@ -374,7 +374,7 @@ void UAdvancedSessionsLibrary::GetPlayerName(APlayerController *PlayerController } } -void UAdvancedSessionsLibrary::GetNumberOfNetworkPlayers(int32 &NumNetPlayers) +void UAdvancedSessionsLibrary::GetNumberOfNetworkPlayers(UObject* WorldContextObject, int32 &NumNetPlayers) { //Get an actor to GetWorld() from /*TObjectIterator Itr; @@ -386,7 +386,7 @@ void UAdvancedSessionsLibrary::GetNumberOfNetworkPlayers(int32 &NumNetPlayers) //~~~~~~~~~~~~ //Get World - UWorld* TheWorld = GEngine->GetWorldFromContextObject(WorldContextObject) + UWorld* TheWorld = GEngine->GetWorldFromContextObject(WorldContextObject); if (!TheWorld) {