diff --git a/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp index 57d091a7..5702fb52 100644 --- a/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp +++ b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp @@ -3,7 +3,29 @@ #include "UI/Portal/PortalManager.h" +#include "HttpModule.h" +#include "Data/API/APIData.h" +#include "GameplayTags/DedicatedServerTags.h" + void UPortalManager::JoinGameSession() { BroadcastJoinGameSessionMessage.Broadcast(TEXT("Searching for Game Session...")); + + check(APIData); + + TSharedPtr Request = FHttpModule::Get().CreateRequest(); + Request->OnProcessRequestComplete().BindUObject(this, &UPortalManager::FindOrCreateGameSession_Response); + + const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::FindOrCreateGameSession); + + Request->SetURL(APIUrl); + Request->SetVerb("POST"); + Request->SetHeader("Content-Type", "application/json"); + Request->ProcessRequest(); +} + +void UPortalManager::FindOrCreateGameSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, + bool bWasSuccessful) +{ + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Find or Create Game Session Response Received")); } diff --git a/Source/DedicatedServers/Private/UI/Portal/Signin/SignInOverlay.cpp b/Source/DedicatedServers/Private/UI/Portal/Signin/SignInOverlay.cpp index a21b286c..308c329e 100644 --- a/Source/DedicatedServers/Private/UI/Portal/Signin/SignInOverlay.cpp +++ b/Source/DedicatedServers/Private/UI/Portal/Signin/SignInOverlay.cpp @@ -12,7 +12,9 @@ void USignInOverlay::NativeConstruct() Super::NativeConstruct(); check(PortalManagerClass); - PortalManager = NewObject(PortalManagerClass); + check(IsValid(JoinGameWidget)); + check(IsValid(JoinGameWidget->Button_JoinGame)); + PortalManager = NewObject(this, PortalManagerClass); JoinGameWidget->Button_JoinGame->OnClicked.AddDynamic(this, &USignInOverlay::OnJoinGameButtonClicked); } @@ -20,6 +22,8 @@ void USignInOverlay::NativeConstruct() void USignInOverlay::OnJoinGameButtonClicked() { check (IsValid(PortalManager)); + check(IsValid(JoinGameWidget)); + check(IsValid(JoinGameWidget->Button_JoinGame)); PortalManager->BroadcastJoinGameSessionMessage.AddDynamic(this, &USignInOverlay::UpdateJoinGameStatusMessage); PortalManager->JoinGameSession(); @@ -28,5 +32,6 @@ void USignInOverlay::OnJoinGameButtonClicked() void USignInOverlay::UpdateJoinGameStatusMessage(const FString& StatusMessage) { + check(IsValid(JoinGameWidget)); JoinGameWidget->SetStatusMessage(StatusMessage); } diff --git a/Source/DedicatedServers/Public/UI/Portal/PortalManager.h b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h index bc8767f3..54b6f974 100644 --- a/Source/DedicatedServers/Public/UI/Portal/PortalManager.h +++ b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "Interfaces/IHttpRequest.h" #include "UI/HTTP/HTTPRequestManager.h" #include "PortalManager.generated.h" @@ -21,5 +22,9 @@ public: UPROPERTY(BlueprintAssignable) FBroadcastJoinGameSessionMessage BroadcastJoinGameSessionMessage; - void JoinGameSession(); + auto JoinGameSession() -> void; + +private: + + void FindOrCreateGameSession_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful); };