Add MainMenuWidget
This commit is contained in:
		
							parent
							
								
									d6b143b7b1
								
							
						
					
					
						commit
						6ab631515b
					
				
							
								
								
									
										67
									
								
								Source/vampires/Widgets/MainMenuWidget.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								Source/vampires/Widgets/MainMenuWidget.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | |||||||
|  | // Louis Hobbs | 2024-2025
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "MainMenuWidget.h" | ||||||
|  | 
 | ||||||
|  | #include "Blueprint/WidgetBlueprintLibrary.h" | ||||||
|  | #include "Components/Button.h" | ||||||
|  | #include "Kismet/GameplayStatics.h" | ||||||
|  | 
 | ||||||
|  | void UMainMenuWidget::NativeConstruct() | ||||||
|  | { | ||||||
|  | 	Super::NativeConstruct(); | ||||||
|  | 
 | ||||||
|  | 	if (NewGameButton) | ||||||
|  | 	{ | ||||||
|  | 		NewGameButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::NewGameButtonOnClicked); | ||||||
|  | 		NewGameButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound); | ||||||
|  | 
 | ||||||
|  | 		NewGameButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound); | ||||||
|  | 		NewGameButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameTextBlockHoveredDelegate); | ||||||
|  | 
 | ||||||
|  | 		NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameTextBlockUnhoveredDelegate); | ||||||
|  | 		NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (QuitButton) | ||||||
|  | 	{ | ||||||
|  | 		QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnClicked); | ||||||
|  | 		QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound); | ||||||
|  | 
 | ||||||
|  | 		QuitButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound); | ||||||
|  | 		QuitButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitTextBlockHoveredDelegate); | ||||||
|  | 
 | ||||||
|  | 		QuitButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitTextBlockUnhoveredDelegate); | ||||||
|  | 		QuitButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0)) | ||||||
|  | 	{ | ||||||
|  | 		UWidgetBlueprintLibrary::SetInputMode_UIOnlyEx(PlayerController, this, EMouseLockMode::LockAlways); | ||||||
|  | 		PlayerController->bShowMouseCursor = true; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void UMainMenuWidget::NewGameButtonOnClicked() | ||||||
|  | { | ||||||
|  | 	if (!NewGameLevel.IsNull()) | ||||||
|  | 	{ | ||||||
|  | 		UGameplayStatics::OpenLevelBySoftObjectPtr(GetWorld(), NewGameLevel); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0)) | ||||||
|  | 	{ | ||||||
|  | 		PlayerController->bShowMouseCursor = false; | ||||||
|  | 		UWidgetBlueprintLibrary::SetInputMode_GameOnly(PlayerController); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	SetIsFocusable(false); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void UMainMenuWidget::QuitButtonOnClicked() | ||||||
|  | { | ||||||
|  | 	// TODO: Add platform specific Exit requests
 | ||||||
|  | 	// This is not a bit deal for the moment as we are only building for windows
 | ||||||
|  | 	// For some reason the generic version does not work the same as FWindowsPlatformMisc
 | ||||||
|  | 	FWindowsPlatformMisc::RequestExit(false); | ||||||
|  | } | ||||||
							
								
								
									
										64
									
								
								Source/vampires/Widgets/MainMenuWidget.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								Source/vampires/Widgets/MainMenuWidget.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | |||||||
|  | // Louis Hobbs | 2024-2025
 | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include "CoreMinimal.h" | ||||||
|  | #include "VampireInteractiveWidget.h" | ||||||
|  | #include "MainMenuWidget.generated.h" | ||||||
|  | 
 | ||||||
|  | class UButton; | ||||||
|  | /**
 | ||||||
|  |  *  | ||||||
|  |  */ | ||||||
|  | UCLASS() | ||||||
|  | class VAMPIRES_API UMainMenuWidget : public UVampireInteractiveWidget | ||||||
|  | { | ||||||
|  | 	GENERATED_BODY() | ||||||
|  | 
 | ||||||
|  | 	// TODO: Add options menu
 | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) | ||||||
|  | 	TObjectPtr<UButton> NewGameButton; | ||||||
|  | 
 | ||||||
|  | 	UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) | ||||||
|  | 	TObjectPtr<UTextBlock> NewGameTextBlock; | ||||||
|  | 
 | ||||||
|  | 	UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) | ||||||
|  | 	TObjectPtr<UButton> QuitButton; | ||||||
|  | 
 | ||||||
|  | 	UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) | ||||||
|  | 	TObjectPtr<UTextBlock> QuitTextBlock; | ||||||
|  | 
 | ||||||
|  | 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | ||||||
|  | 	TSubclassOf<class UUserWidget> NewGameMenuWidget; | ||||||
|  | 
 | ||||||
|  | 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | ||||||
|  | 	TSoftObjectPtr<UWorld> NewGameLevel; | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	UPROPERTY() | ||||||
|  | 	TObjectPtr<UUserWidget> currentNewGameWidget; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	virtual void NativeConstruct() override; | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void NewGameButtonOnClicked(); | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void QuitButtonOnClicked(); | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void NewGameTextBlockHoveredDelegate() { SetTextBlockHovered(NewGameTextBlock); } | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void NewGameTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(NewGameTextBlock); } | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void QuitTextBlockHoveredDelegate() { SetTextBlockHovered(QuitTextBlock); } | ||||||
|  | 
 | ||||||
|  | 	UFUNCTION() | ||||||
|  | 	void QuitTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(QuitTextBlock); } | ||||||
|  | }; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user