From 9fb60888baa5a6d7121c58d5ccab46004a11761c Mon Sep 17 00:00:00 2001 From: Norman Lansing Date: Sun, 22 Mar 2026 17:18:22 -0400 Subject: [PATCH] Lesson 67 - Portal Setup --- .../Blueprints/Game/BP_MenuGameMode.uasset | Bin 21085 -> 21079 bytes .../Portal/BP_PortalHUD.uasset | Bin 0 -> 24522 bytes .../Portal/BP_PortalManager.uasset | Bin 0 -> 5742 bytes .../Portal/WBP_JoinGame.uasset | Bin 0 -> 35271 bytes .../Portal/WBP_SignInOverlay.uasset | Bin 0 -> 27084 bytes .../Private/UI/API/GameSessions/JoinGame.cpp | 4 ++ .../Private/UI/Portal/PortalHUD.cpp | 23 +++++++++++ .../Private/UI/Portal/PortalManager.cpp | 4 ++ .../UI/Portal/SignIn/SignInOverlay.cpp | 14 +++++++ .../Public/UI/API/GameSessions/JoinGame.h | 27 +++++++++++++ .../Public/UI/Portal/PortalHUD.h | 32 ++++++++++++++++ .../Public/UI/Portal/PortalManager.h | 16 ++++++++ .../Public/UI/Portal/SignIn/SignInOverlay.h | 36 ++++++++++++++++++ 13 files changed, 156 insertions(+) create mode 100644 Content/DedicatedServers/Portal/BP_PortalHUD.uasset create mode 100644 Content/DedicatedServers/Portal/BP_PortalManager.uasset create mode 100644 Content/DedicatedServers/Portal/WBP_JoinGame.uasset create mode 100644 Content/DedicatedServers/Portal/WBP_SignInOverlay.uasset create mode 100644 Source/DedicatedServers/Private/UI/API/GameSessions/JoinGame.cpp create mode 100644 Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp create mode 100644 Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp create mode 100644 Source/DedicatedServers/Private/UI/Portal/SignIn/SignInOverlay.cpp create mode 100644 Source/DedicatedServers/Public/UI/API/GameSessions/JoinGame.h create mode 100644 Source/DedicatedServers/Public/UI/Portal/PortalHUD.h create mode 100644 Source/DedicatedServers/Public/UI/Portal/PortalManager.h create mode 100644 Source/DedicatedServers/Public/UI/Portal/SignIn/SignInOverlay.h diff --git a/Content/Blueprints/Game/BP_MenuGameMode.uasset b/Content/Blueprints/Game/BP_MenuGameMode.uasset index 0d3830d3d9522c4342594863fa8193e2f644e21e..98562a3c7aa29b69b04d3e5297d28aedc825ff57 100644 GIT binary patch delta 380 zcmcb+gz@?k#t9OlwN{nc1{~tii?3MTHoQzC+xhKa8sZWk)JM!q~V znU^bGoFAwUStj0@;pL)~Z<|}VzHl)eb)3B3Q*QDaA&$ulL_L_kxJ*9C2;mBdc`$8s zo$MH(KDklMo#{4&`4PyR;06{=6nAHGbO$pp0-4jjz)VL8cc#C7VCF_3vo8S5RFrgQ s+5urs1TyCbf<+mnHge0;4FbFX) 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 Z_xL2bR(vXy{-?{DCqMeFTr~)R|G(fVu9^S< literal 0 HcmV?d00001 diff --git a/Content/DedicatedServers/Portal/BP_PortalManager.uasset b/Content/DedicatedServers/Portal/BP_PortalManager.uasset new file mode 100644 index 0000000000000000000000000000000000000000..cacf2104e1e063456a29f623163d28aac228a086 GIT binary patch literal 5742 zcmds5eQ;D)6+bB{ghC)i3Wx*(l!j19LI_{2mL}QV5E7Dw1g2U;c-g(1EbQ)E-g_Gw zT3RX}qMc4{b*4CVs%6A}K*u;1aG=UCqhqTxqQmHP#KJf-SZeFkkwN6ccz*ZYyZd$% z0z&`t?CiVup09h(x#yjG?>oMI&ddMm@9$qfjOeaAh%R#rn3|f^l>c@ldT{L8Su>t} zYX9->E5pA18KMzP`~2~Bi?1v{JN%O!bnwYdbMDJ$+^$K*>vyz-51c+Z;f+81^25SE zGw$i%Z;kG+X*u`Nsugd{K6LnJy^K3s^VBkdRd4nF9FFE;~Dq<%m6rm_JKOvsktrR>K# z&0zFH9@;I$Y1-`4#__DCqBUeilTJmQX^Ay0of|~Rp-T<(9vbVR`4e5ygrHpy?`#<7 zLASgba{edDW` z-NzOQq@r|xEyv5Ws(d6aZf}I7KOE&O^_ihmTqK-^M8u?{9Yt3#n@e(I95kG6`c2Ju zw;{t+d=KaO&cT5|%ru;|tyf+>eGO5p7YSkE4XBG5woSVV9%)0?)muigTZU)vSAN}d zCoqUrUGQ@EXdW~qGMe_CT(km9-elNLwwX4Ko_fb`A>3^8LSGp6i$YAPOx5dIbLz(* z7Bf0%gf{ZK)?|i^SagelMQ!GH)J_^9LF1g>-IzFNSnR)R>!kPhJzB)LR-;FR*G9$W zmPo`F4n6VCN4_-vOQspGiJPf}Lmd;IeHU?Q4RwpSLH$Rc**pouMt@UB?vnA!Ozdg@ z0Oq!u5yunVr(QYribOkBDwK&rC4J{A&}%w{)rH^%*%zB8&)mBJ%d6jqOzMG$&Yyb1 z_gN1)w;s{D$$!0s^+?On_@xU9VRjmmvw~$WCFgN1AvZ?O=Et6&!XuxE7^#@kF_@!2 zDt_&Vn}UibyY%f@K5iKoF3vNV6qIki)$Zn<9J|r%Xsn{29N$xj^5*a1C31P&_vN)C zo=Is;QJ>O-IZ?N-zC5%^ohw2~t6z1EeblpmWm}D1J)Uw?2Pv2*r zp{ne4cJn?K+o>`JGYzWSTkzdIx;$OXr36kxX-pk&&RwR3b1)J1*$l;uCwX5@IJT@~ zm4wiysXk%LBN)ywfNWyaPR5L0?5~n2-O;C_%&rR>>T_DDJYNjzR2G{&B1ufJ?TbNw zN3&_gjhH<9%55nSGrDX-T2xmrTvEMsk?aSewLZf!sQ5qq{rUW&;rAxHhPFUHT^ybx z)8k31S5F(rBta|qSx0f|p$KgvTVhkxOr4DHq;AIAEHPS1t>RIV`G8F^Z-ks1QeBH~ z--hAJhP4z@Rt>}qQ#`lpuh!hcF-Y)ic{C8CW1g97jGDcPBjZT96tz*9qO2jon)0Yv zaV+Qfb#fe|w#_|z0T|sW!*Fi#%VsV8->&H8xi!3_u9R?@ZHOmh0=Fg+=4*?vB7C2) z8Bc_&$5g)Zi*UN=+46oryG&NA1{)QrB@yc-oEh72W<>dG=IcohUs7`lFbcOz^4?Qw z8LM6P+=t6$DJ<2L+@pVa)}gpm?nce2_-c`ixt}c5RW8cTV5_O*nwEV(`gG=%TSLx; zmTyNmOK8)FUPt-)=Qg(ooXA$1;Z#h>Eo;yn2!^^ms|9~T;PsKa6=UiDaa|CSm-%jm zgO)xN(qwqcfTN2Bd?g|rJF(vayeBY8MEXpZB=?&Vx=`uWB87p3g#Jb(r4@4tw*c^9 zwE^fuxrP_f0TP7)P$Hi$ZkneL9u1g8&W^7;fD-w1h4e8N0_rQIq(VUZOSk|7kTx2W z>D!L!3juNj;B{Iu!2w*T0XR8k0WPjW{`PL~%jWGsmW! zeRt+#=k@fG$vf~~6to7n%_lw}^+OxLJA+qVM#GEXz1oEV9^x*6@&*{-Azmv$iG1FK zhX-4Z{Bv57^YHeui|N9~(5qe>j`Nq}7ccJHR{r46e}}m0l~KB>=k$_Q`M)|=R;du+ F|1ah?Wz7Hp literal 0 HcmV?d00001 diff --git a/Content/DedicatedServers/Portal/WBP_JoinGame.uasset b/Content/DedicatedServers/Portal/WBP_JoinGame.uasset new file mode 100644 index 0000000000000000000000000000000000000000..af206090289ff0e5eb5480402730f9c74ea42668 GIT binary patch literal 35271 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 literal 0 HcmV?d00001 diff --git a/Content/DedicatedServers/Portal/WBP_SignInOverlay.uasset b/Content/DedicatedServers/Portal/WBP_SignInOverlay.uasset new file mode 100644 index 0000000000000000000000000000000000000000..01e0b59847b8d8c37f786cc8c211eb69f4478eac GIT binary patch literal 27084 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 literal 0 HcmV?d00001 diff --git a/Source/DedicatedServers/Private/UI/API/GameSessions/JoinGame.cpp b/Source/DedicatedServers/Private/UI/API/GameSessions/JoinGame.cpp new file mode 100644 index 00000000..e90b2304 --- /dev/null +++ b/Source/DedicatedServers/Private/UI/API/GameSessions/JoinGame.cpp @@ -0,0 +1,4 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/API/GameSessions/JoinGame.h" diff --git a/Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp b/Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp new file mode 100644 index 00000000..5f30606f --- /dev/null +++ b/Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Portal/PortalHUD.h" +#include "UI/Portal/SignIn/SignInOverlay.h" +#include "Blueprint/UserWidget.h" + +void APortalHUD::BeginPlay() +{ + Super::BeginPlay(); + + APlayerController* OwningPlayerController = GetOwningPlayerController(); + SignInOverlay = CreateWidget(OwningPlayerController, SignInOverlayClass); + if (IsValid(SignInOverlay)) + { + SignInOverlay->AddToViewport(); + } + + const FInputModeGameAndUI InputModeData; + OwningPlayerController->SetInputMode(InputModeData); + OwningPlayerController->SetShowMouseCursor(true); + +} diff --git a/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp new file mode 100644 index 00000000..eb3c4197 --- /dev/null +++ b/Source/DedicatedServers/Private/UI/Portal/PortalManager.cpp @@ -0,0 +1,4 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Portal/PortalManager.h" diff --git a/Source/DedicatedServers/Private/UI/Portal/SignIn/SignInOverlay.cpp b/Source/DedicatedServers/Private/UI/Portal/SignIn/SignInOverlay.cpp new file mode 100644 index 00000000..b6586a6c --- /dev/null +++ b/Source/DedicatedServers/Private/UI/Portal/SignIn/SignInOverlay.cpp @@ -0,0 +1,14 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UI/Portal/SignIn/SignInOverlay.h" + +#include "UI/Portal/PortalManager.h" + +void USignInOverlay::NativeConstruct() +{ + Super::NativeConstruct(); + check(PortalManagerClass); + + PortalManager = NewObject(PortalManagerClass); +} diff --git a/Source/DedicatedServers/Public/UI/API/GameSessions/JoinGame.h b/Source/DedicatedServers/Public/UI/API/GameSessions/JoinGame.h new file mode 100644 index 00000000..e9d6d044 --- /dev/null +++ b/Source/DedicatedServers/Public/UI/API/GameSessions/JoinGame.h @@ -0,0 +1,27 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "JoinGame.generated.h" + +class UButton; +class UTextBlock; + +/** + * + */ +UCLASS() +class DEDICATEDSERVERS_API UJoinGame : public UUserWidget +{ + GENERATED_BODY() + +public: + + UPROPERTY(meta = (BindWidget)) + TObjectPtr Button_JoinGame; + + UPROPERTY(meta = (BindWidget)) + TObjectPtr TextBlock_StatusMessage; +}; diff --git a/Source/DedicatedServers/Public/UI/Portal/PortalHUD.h b/Source/DedicatedServers/Public/UI/Portal/PortalHUD.h new file mode 100644 index 00000000..c534ce0c --- /dev/null +++ b/Source/DedicatedServers/Public/UI/Portal/PortalHUD.h @@ -0,0 +1,32 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/HUD.h" +#include "PortalHUD.generated.h" + +class USignInOverlay; + +/** + * + */ +UCLASS() +class DEDICATEDSERVERS_API APortalHUD : public AHUD +{ + GENERATED_BODY() + +public: + + UPROPERTY(EditDefaultsOnly) + TSubclassOf SignInOverlayClass; + +protected: + + virtual void BeginPlay() override; + +private: + + UPROPERTY() + TObjectPtr SignInOverlay; +}; diff --git a/Source/DedicatedServers/Public/UI/Portal/PortalManager.h b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h new file mode 100644 index 00000000..8684744e --- /dev/null +++ b/Source/DedicatedServers/Public/UI/Portal/PortalManager.h @@ -0,0 +1,16 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UI/HTTP/HTTPRequestManager.h" +#include "PortalManager.generated.h" + +/** + * + */ +UCLASS() +class DEDICATEDSERVERS_API UPortalManager : public UHTTPRequestManager +{ + GENERATED_BODY() +}; diff --git a/Source/DedicatedServers/Public/UI/Portal/SignIn/SignInOverlay.h b/Source/DedicatedServers/Public/UI/Portal/SignIn/SignInOverlay.h new file mode 100644 index 00000000..a49673fa --- /dev/null +++ b/Source/DedicatedServers/Public/UI/Portal/SignIn/SignInOverlay.h @@ -0,0 +1,36 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "SignInOverlay.generated.h" + +class UJoinGame; +class UPortalManager; + +/** + * + */ +UCLASS() +class DEDICATEDSERVERS_API USignInOverlay : public UUserWidget +{ + GENERATED_BODY() + +public: + + UPROPERTY(meta = (BindWidget)) + TObjectPtr JoinGameWidget; + + UPROPERTY(EditDefaultsOnly) + TSubclassOf PortalManagerClass; + + +protected: + + virtual void NativeConstruct() override; +private: + + UPROPERTY() + TObjectPtr PortalManager; +};