From ca24ebf39e11958ac0dbc145a94970b35468bdad Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Sat, 28 May 2022 15:29:15 +0200 Subject: [PATCH] 205 - Leaving the Game --- Config/DefaultInput.ini | 2 ++ .../BP_BlasterPlayerController.uasset | Bin 19044 -> 19327 bytes Source/Blaster/HUD/ReturnToMainMenu.cpp | 10 +++++- .../BlasterPlayerController.cpp | 33 +++++++++++++++++- .../BlasterPlayerController.h | 16 +++++++-- 5 files changed, 57 insertions(+), 4 deletions(-) diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 4f7902d..223f2ab 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -85,6 +85,8 @@ DoubleClickTime=0.200000 +ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton) +ActionMappings=(ActionName="Reload",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=R) +ActionMappings=(ActionName="ThrowGrenade",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=G) ++ActionMappings=(ActionName="Quit",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Escape) ++ActionMappings=(ActionName="Quit",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Q) +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W) +AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S) +AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D) diff --git a/Content/Blueprints/PlayerController/BP_BlasterPlayerController.uasset b/Content/Blueprints/PlayerController/BP_BlasterPlayerController.uasset index a18dfb2fc526bb128b0283d84aae312d70b80314..f2b6af4241250862c929ae7ec8be93a7a68f283a 100644 GIT binary patch delta 1741 zcmaJ>UrbwN6#qUfvqjq7OWRA?kkPF{hSLI3N+}Fzf&RfV%AYjTQ7BTijFnPaNz^Pp z7#DqFoP}gtjPuEtnGEZLPdd#^W~L~m`x=x=~xbbw>hi_o@nO?BSywdm_L>otHgW=7grEa zt-;1vGhPFDy=nUXknxkZdfpj(*!Y0Ljpty24?lhj%dhvNepl>Z(AFdQ-?;n0 z5po_%WOJF+$ZR;COobDvTr@fLaw5xo7r>dX)h}?~0N<8dY67D@&Zu{A{NHl+-Ri}O z4wQ7l4~AJwIXXIrU(6)aS?6fj&sxT|Yx8|&@seKJYd?c=AA2|VV5x@6g{{3axkNgX zOlAFvR3a14CZ>Ed@%ef7>gu&B_^|wII3ei`V<@NC1o>bkydmk0lPbYB@rYxva?(t! zL1XWM-Bi%=Nl2QG?CH3N9n)Gz(PsnMvl@$CO$YaOtz-R+RxfrD8{3y1-s7-4uKL>ZzsS(+w!u*JWMKq@(<2iBfD4o{2_pmPzYdtM= zvm)bWJDEb|dBJ2w-ona!!Rb>;QYHlZ80L;g)P>Cjac={(TlFBx4r^RU44AcXM!{b3 zq)=F3QI@PzLgmJMU*IoM6;)mlD?R2Ff%6`aPd3756$<<%OG;#y|IO%##o?n@hr7Ma%1ENtxc&vq;StmwSp5n?+JmD$7bRm+I8T@jg2HlB|cc z#i7s#fZ{k_bp^!O)1iV%%5t=nM#%uTnoCAP@P%B5H>6QXBdHBb?;OR1+C#^^ZIzTc zq%_H|1p#9-s-#A#Q~bNiv@^v}e{u9{O1+V$rLpO6z6*C0U)Ar3NJzeABIB2ejY32| z27{GNx)%KE!24y@u=I@mfEO2fSN?XTx8_lL|93v01-Zq?{cyu)gS1=62jOaq1D0D} z<2aeig1>dHMmdC9ieqYG0kp4$3$DXeJ%Z5`l2{MJ#fo~~3u~?u#ctY>A^`SQ=l^s@ z zBV;5bo(C3$?zSjI-BmE@vA|btox<=bPqkoA3Fb$S1JRCWg9l-wJOH5Ni6rDl9@_+R6T0Z{5C)E%`i2^N!7D_4QTjZyRd=$YTlrD@U8cSTb&;?+w zQ6t9a1{aEk)EIZLP!c2R#*HgAA-Yh+jhJXiz4PAmQG|Mv$-Q&Wx#!-Q_D%3QUAjgm zm(=Nngv1a+8b-V)(M1#A)z$ps`-y}kS+`p6L!lI<`bsu%<5}(jO5S*b@1UYNr?yr%V7-$-6eq zvy8kWTPiT*XhftlB61=kG87T9AQZAFN}Cna>w{40e$HVkG)IWXJwAbw9YThYR>Gt?J1vvvLMk|oWU`9Qobn%)CUr)#z14hX z9xLph7DwkLNm>VEb_2XNJE$8{EtTvf;I*{C2aAO^FpMU^oFx+)OA=`{be6PJr&Mvl zs)dgwHmS-8)z(ZU-^g=6t=Sl*mo8&nZ@Ev-2JV#!l-9zya|-J1Dv8hqPwWpjkbajd zq-n<=nM6H6oqAaX%AIwzHZbnILSdqMh1SEE+Yefo0PkIAap$SFfx+d+=!UBR*4(qS U1|HWOjBApwi?E{_L03EY7g91^Q~&?~ diff --git a/Source/Blaster/HUD/ReturnToMainMenu.cpp b/Source/Blaster/HUD/ReturnToMainMenu.cpp index 415ab5e..74b65c1 100644 --- a/Source/Blaster/HUD/ReturnToMainMenu.cpp +++ b/Source/Blaster/HUD/ReturnToMainMenu.cpp @@ -24,7 +24,7 @@ void UReturnToMainMenu::MenuSetup() } } - if (ReturnButton) + if (ReturnButton && !ReturnButton->OnClicked.IsBound()) { ReturnButton->OnClicked.AddDynamic(this, &UReturnToMainMenu::ReturnButtonClicked); } @@ -63,6 +63,14 @@ void UReturnToMainMenu::MenuTearDown() PlayerController->SetShowMouseCursor(false); } } + if (ReturnButton && ReturnButton->OnClicked.IsBound()) + { + ReturnButton->OnClicked.RemoveDynamic(this, &UReturnToMainMenu::ReturnButtonClicked); + } + if (MultiplayerSessionsSubsystem && MultiplayerSessionsSubsystem->MultiplayerOnDestroySessionComplete.IsBound()) + { + MultiplayerSessionsSubsystem->MultiplayerOnDestroySessionComplete.RemoveDynamic(this, &UReturnToMainMenu::OnDestroySessionComplete); + } } void UReturnToMainMenu::ReturnButtonClicked() diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.cpp b/Source/Blaster/PlayerController/BlasterPlayerController.cpp index 6549fb3..de0bf5c 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.cpp +++ b/Source/Blaster/PlayerController/BlasterPlayerController.cpp @@ -11,6 +11,7 @@ #include "Blaster/HUD/BlasterHUD.h" #include "Blaster/HUD/CharacterOverlay.h" #include "Blaster/HUD/DebugWidget.h" +#include "Blaster/HUD/ReturnToMainMenu.h" #include "Blaster/PlayerState/BlasterPlayerState.h" #include "Components/ProgressBar.h" #include "Components/TextBlock.h" @@ -27,6 +28,15 @@ void ABlasterPlayerController::BeginPlay() ServerCheckMatchState(); } +void ABlasterPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + if (InputComponent == nullptr) return; + + InputComponent->BindAction("Quit", IE_Pressed, this, &ABlasterPlayerController::ShowReturnToMainMenu); +} + void ABlasterPlayerController::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); @@ -70,7 +80,6 @@ void ABlasterPlayerController::CheckPing(float DeltaTime) PlayerState = PlayerState == nullptr ? GetPlayerState() : PlayerState; if (PlayerState) { - UE_LOG(LogTemp, Warning, TEXT("Ping: %f"), PlayerState->GetPingInMilliseconds()); if (PlayerState->GetPingInMilliseconds() > HighPingThreshold) { HighPingWarning(); @@ -468,6 +477,28 @@ void ABlasterPlayerController::StopHighPingWarning() } } +void ABlasterPlayerController::ShowReturnToMainMenu() +{ + if (ReturnToMainMenuWidget == nullptr) return; + + if (ReturnToMainMenu == nullptr) + { + ReturnToMainMenu = CreateWidget(this, ReturnToMainMenuWidget); + } + if (ReturnToMainMenu) + { + bReturnToMainMenuOpen = !bReturnToMainMenuOpen; + if (bReturnToMainMenuOpen) + { + ReturnToMainMenu->MenuSetup(); + } + else + { + ReturnToMainMenu->MenuTearDown(); + } + } +} + void ABlasterPlayerController::ServerRequestServerTime_Implementation(float TimeOfClientRequest) { float ServerTimeOfReceipt = GetWorld()->GetTimeSeconds(); diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.h b/Source/Blaster/PlayerController/BlasterPlayerController.h index df5911c..8aceb84 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.h +++ b/Source/Blaster/PlayerController/BlasterPlayerController.h @@ -52,7 +52,7 @@ public: FHighPingDelegate HighPingDelegate; protected: - + virtual void SetupInputComponent() override; virtual void BeginPlay() override; void CheckTimeSync(float DeltaTime); void HandleMatchHasStarted(); @@ -85,14 +85,26 @@ protected: void HighPingWarning(); void StopHighPingWarning(); -private: + void ShowReturnToMainMenu(); + +private: UPROPERTY() class UDebugWidget* DebugWidget; UPROPERTY() class ABlasterHUD* BlasterHUD; + // Return to main menu + + UPROPERTY(EditAnywhere, Category = HUD) + TSubclassOf ReturnToMainMenuWidget; + + UPROPERTY() + class UReturnToMainMenu* ReturnToMainMenu; + + bool bReturnToMainMenuOpen = false; + UPROPERTY() class ABlasterGameMode* BlasterGameMode;