205 - Leaving the Game

This commit is contained in:
Kingsmedia 2022-05-28 15:29:15 +02:00
parent 30e976772f
commit ca24ebf39e
5 changed files with 57 additions and 4 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
@ -70,7 +80,6 @@ void ABlasterPlayerController::CheckPing(float DeltaTime)
PlayerState = PlayerState == nullptr ? GetPlayerState<APlayerState>() : 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<UReturnToMainMenu>(this, ReturnToMainMenuWidget);
}
if (ReturnToMainMenu)
{
bReturnToMainMenuOpen = !bReturnToMainMenuOpen;
if (bReturnToMainMenuOpen)
{
ReturnToMainMenu->MenuSetup();
}
else
{
ReturnToMainMenu->MenuTearDown();
}
}
}
void ABlasterPlayerController::ServerRequestServerTime_Implementation(float TimeOfClientRequest)
{
float ServerTimeOfReceipt = GetWorld()->GetTimeSeconds();

View File

@ -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<class UUserWidget> ReturnToMainMenuWidget;
UPROPERTY()
class UReturnToMainMenu* ReturnToMainMenu;
bool bReturnToMainMenuOpen = false;
UPROPERTY()
class ABlasterGameMode* BlasterGameMode;