Compare commits

..

No commits in common. "bb6ad4b9f7777ba0b294e81855d84bb0b62e9636" and "49fab1bf38eda731f23a5683d03fce5b12dc0031" have entirely different histories.

10 changed files with 21 additions and 219 deletions

Binary file not shown.

Binary file not shown.

View File

@ -59,26 +59,12 @@ float UHealthComponent::GetCurrentHealth()
void UHealthComponent::SetCurrentHealth(float Value) void UHealthComponent::SetCurrentHealth(float Value)
{ {
CurrentHealth = Value;
if (Value > MaxHealth) if (CurrentHealth > MaxHealth)
{ {
CurrentHealth = MaxHealth; CurrentHealth = MaxHealth;
} }
else if (Value <= 0.0f)
{
IsDead = true;
OnDeath.Broadcast({GetOwner(), CurrentHealth - Value, nullptr, nullptr, nullptr});
CurrentHealth = 0.0f;
}
else
{
if (Value < CurrentHealth)
{
OnDamaged.Broadcast({GetOwner(), CurrentHealth - Value, nullptr, nullptr, nullptr});
}
CurrentHealth = Value;
}
} }
void UHealthComponent::ResetHealth() void UHealthComponent::ResetHealth()
@ -89,10 +75,8 @@ void UHealthComponent::ResetHealth()
void UHealthComponent::RecoverHealth(float value) void UHealthComponent::RecoverHealth(float value)
{ {
if (value > 0) // TODO: We might want to add some extra checking here
{
IncrementHealth(value); IncrementHealth(value);
}
} }
bool UHealthComponent::GetIsDead() bool UHealthComponent::GetIsDead()

View File

@ -47,7 +47,6 @@ protected:
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
float CurrentHealth; float CurrentHealth;
private:
bool IsDead = false; bool IsDead = false;
bool CanDamage = true; bool CanDamage = true;

View File

@ -15,7 +15,7 @@ void UGameOverWidget::NativeConstruct()
if (ReturnButton) if (ReturnButton)
{ {
ReturnButton->OnClicked.AddUniqueDynamic(this, &UGameOverWidget::ReturnButtonOnClicked); ReturnButton->OnClicked.AddUniqueDynamic(this, &UGameOverWidget::ReturnButtonClicked);
ReturnButton->OnClicked.AddUniqueDynamic(this, &UGameOverWidget::PlayClickedSound); ReturnButton->OnClicked.AddUniqueDynamic(this, &UGameOverWidget::PlayClickedSound);
ReturnButton->OnHovered.AddUniqueDynamic(this, &UGameOverWidget::PlayHoveredSound); ReturnButton->OnHovered.AddUniqueDynamic(this, &UGameOverWidget::PlayHoveredSound);
@ -55,7 +55,7 @@ void UGameOverWidget::SetGameInfo(int Level, float Timer, int Kill, int Gold)
GoldBlock->SetText(FText::FromString(FString::FromInt(Gold))); GoldBlock->SetText(FText::FromString(FString::FromInt(Gold)));
} }
void UGameOverWidget::ReturnButtonOnClicked() void UGameOverWidget::ReturnButtonClicked()
{ {
if (UVampireGameInstance* GameInstance = Cast<UVampireGameInstance>(GetGameInstance())) if (UVampireGameInstance* GameInstance = Cast<UVampireGameInstance>(GetGameInstance()))
{ {

View File

@ -43,7 +43,7 @@ public:
private: private:
UFUNCTION() UFUNCTION()
void ReturnButtonOnClicked(); void ReturnButtonClicked();
UFUNCTION() UFUNCTION()
void ReturnTextBlockHoveredDelegate() { SetTextBlockHovered(ReturnBlock); } void ReturnTextBlockHoveredDelegate() { SetTextBlockHovered(ReturnBlock); }

View File

@ -24,18 +24,6 @@ void UMainMenuWidget::NativeConstruct()
NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound);
} }
if (OptionsButton)
{
OptionsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OptionsButtonOnClicked);
OptionsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound);
OptionsButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound);
OptionsButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsTextBlockHoveredDelegate);
OptionsButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsTextBlockUnhoveredDelegate);
OptionsButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound);
}
if (QuitButton) if (QuitButton)
{ {
QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnClicked); QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnClicked);
@ -73,22 +61,6 @@ void UMainMenuWidget::NewGameButtonOnClicked()
} }
} }
void UMainMenuWidget::OptionsButtonOnClicked()
{
if (OptionsMenuWidget)
{
RemoveFromParent();
UUserWidget* OptionWeaponWidget = CreateWidget<UUserWidget, APlayerController*>(
UGameplayStatics::GetPlayerController(GetWorld(), 0), OptionsMenuWidget);
if (OptionWeaponWidget)
{
OptionWeaponWidget->AddToViewport();
}
}
}
void UMainMenuWidget::QuitButtonOnClicked() void UMainMenuWidget::QuitButtonOnClicked()
{ {
// TODO: Add platform specific Exit requests // TODO: Add platform specific Exit requests

View File

@ -15,33 +15,30 @@ class VAMPIRES_API UMainMenuWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
// TODO: Add options menu
protected: protected:
UPROPERTY(meta = (BindWidget)) UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
TObjectPtr<UButton> NewGameButton; TObjectPtr<UButton> NewGameButton;
UPROPERTY(meta = (BindWidget)) UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
TObjectPtr<UTextBlock> NewGameTextBlock; TObjectPtr<UTextBlock> NewGameTextBlock;
UPROPERTY(meta = (BindWidget)) UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
TObjectPtr<UButton> OptionsButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> OptionsTextBlock;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> QuitButton; TObjectPtr<UButton> QuitButton;
UPROPERTY(meta = (BindWidget)) UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
TObjectPtr<UTextBlock> QuitTextBlock; TObjectPtr<UTextBlock> QuitTextBlock;
UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | New Game") UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Widget Settings | New Game")
TSubclassOf<UUserWidget> NewGameMenuWidget; TSubclassOf<class UUserWidget> NewGameMenuWidget;
UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | New Game") UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Widget Settings | New Game")
TSoftObjectPtr<UWorld> NewGameLevel; TSoftObjectPtr<UWorld> NewGameLevel;
UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | Options") private:
TSubclassOf<UUserWidget> OptionsMenuWidget; UPROPERTY()
TObjectPtr<UUserWidget> CurrentNewGameWidget;
public: public:
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
@ -50,9 +47,6 @@ private:
UFUNCTION() UFUNCTION()
void NewGameButtonOnClicked(); void NewGameButtonOnClicked();
UFUNCTION()
void OptionsButtonOnClicked();
UFUNCTION() UFUNCTION()
void QuitButtonOnClicked(); void QuitButtonOnClicked();
@ -62,12 +56,6 @@ private:
UFUNCTION() UFUNCTION()
void NewGameTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(NewGameTextBlock); } void NewGameTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(NewGameTextBlock); }
UFUNCTION()
void OptionsTextBlockHoveredDelegate() { SetTextBlockHovered(OptionsTextBlock); }
UFUNCTION()
void OptionsTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(OptionsTextBlock); }
UFUNCTION() UFUNCTION()
void QuitTextBlockHoveredDelegate() { SetTextBlockHovered(QuitTextBlock); } void QuitTextBlockHoveredDelegate() { SetTextBlockHovered(QuitTextBlock); }

View File

@ -1,69 +0,0 @@
// Louis Hobbs | 2024-2025
#include "OptionsMenuWidget.h"
#include <string>
#include "Components/Button.h"
#include "Components/ComboBoxString.h"
#include "Kismet/GameplayStatics.h"
#include "Kismet/KismetSystemLibrary.h"
void UOptionsMenuWidget::NativeConstruct()
{
Super::NativeConstruct();
GenerateResolutionOptions();
if (ReturnButton)
{
ReturnButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnButtonOnClicked);
ReturnButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayClickedSound);
ReturnButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayHoveredSound);
ReturnButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnTextBlockHoveredDelegate);
ReturnButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnTextBlockUnhoveredDelegate);
ReturnButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayUnhoveredSound);
}
}
void UOptionsMenuWidget::GenerateResolutionOptions()
{
ResolutionComboBox->ClearOptions();
TArray<FIntPoint> Resolutions;
UKismetSystemLibrary::GetSupportedFullscreenResolutions(Resolutions);
for (FIntPoint Resolution : Resolutions)
{
ResolutionComboBox->AddOption(FString::FromInt(Resolution.X) + "x" + FString::FromInt(Resolution.Y));
}
FVector2D Resolution = FVector2D::ZeroVector;
GEngine->GameViewport->GetViewportSize(Resolution);
FString ResolutionString = FString::FromInt(Resolution.X) + "x" + FString::FromInt(Resolution.Y);
if (ResolutionComboBox->FindOptionIndex(ResolutionString) == -1)
{
ResolutionComboBox->AddOption(ResolutionString);
}
ResolutionComboBox->SetSelectedOption(ResolutionString);
}
void UOptionsMenuWidget::ReturnButtonOnClicked()
{
if (MainMenuMenuWidget)
{
RemoveFromParent();
UUserWidget* SelectWeaponWidget = CreateWidget<UUserWidget, APlayerController*>(
UGameplayStatics::GetPlayerController(GetWorld(), 0), MainMenuMenuWidget);
if (SelectWeaponWidget)
{
SelectWeaponWidget->AddToViewport();
}
}
}

View File

@ -1,69 +0,0 @@
// Louis Hobbs | 2024-2025
#pragma once
#include "CoreMinimal.h"
#include "VampireInteractiveWidget.h"
#include "OptionsMenuWidget.generated.h"
class UComboBoxString;
class UComboBox;
class UComboBox;
class UButton;
/**
*
*/
UCLASS()
class VAMPIRES_API UOptionsMenuWidget : public UVampireInteractiveWidget
{
GENERATED_BODY()
public:
UPROPERTY(meta = (BindWidget))
TObjectPtr<UComboBoxString> ResolutionComboBox;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> ResolutionTextBlock;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UComboBoxString> WindowTypeComboBox;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UComboBoxString> VsyncComboBox;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UComboBoxString> RefreshRateComboBox;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UComboBoxString> DynamicResolutionComboBox;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> ReturnButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> ReturnBlock;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> ResetToDefaultsButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> ResetToDefaultsBlock;
UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | New Game")
TSubclassOf<UUserWidget> MainMenuMenuWidget;
protected:
virtual void NativeConstruct() override;
private:
void GenerateResolutionOptions();
UFUNCTION()
void ReturnButtonOnClicked();
UFUNCTION()
void ReturnTextBlockHoveredDelegate() { SetTextBlockHovered(ReturnBlock); }
UFUNCTION()
void ReturnTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(ReturnBlock); }
};