Compare commits

..

8 Commits

Author SHA1 Message Date
baz
af60880d17 Simplify class 2025-08-15 22:36:07 +01:00
baz
2768e84d66 Simplify class 2025-08-15 22:34:22 +01:00
baz
d43b8c8df3 Simplify class 2025-08-15 22:32:59 +01:00
baz
f8a18b2e8d Simplify class 2025-08-15 22:31:02 +01:00
baz
a8aeedf7ce Simplify class 2025-08-15 22:30:39 +01:00
baz
44e6876a8c Simplify class definition 2025-08-15 22:26:54 +01:00
baz
26d6f2affa Simplify class definition 2025-08-15 22:26:19 +01:00
baz
447459d982 Make everything private 2025-08-15 22:25:36 +01:00
13 changed files with 151 additions and 112 deletions

View File

@ -17,30 +17,29 @@ class VAMPIRES_API UGameOverWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
protected: UPROPERTY(meta=(BindWidget))
UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UButton> ReturnButton; TObjectPtr<UButton> ReturnButton;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr <UTextBlock> ReturnBlock; TObjectPtr<UTextBlock> ReturnBlock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr <UTextBlock> LevelBlock; TObjectPtr<UTextBlock> LevelBlock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr <UTextBlock> TimerBlock; TObjectPtr<UTextBlock> TimerBlock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr <UTextBlock> KillBlock; TObjectPtr<UTextBlock> KillBlock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr <UTextBlock> GoldBlock; TObjectPtr<UTextBlock> GoldBlock;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
public: public:
void SetGameInfo(int Level, float Timer, int Kill, int Gold); void SetGameInfo(int Level, float Timer, int Kill, int Gold);
private: private:
UFUNCTION() UFUNCTION()
void ReturnButtonOnClicked(); void ReturnButtonOnClicked();

View File

@ -5,10 +5,6 @@
#include "Components/ProgressBar.h" #include "Components/ProgressBar.h"
#include "Components/TextBlock.h" #include "Components/TextBlock.h"
void UHUDWidget::Init()
{
}
void UHUDWidget::UpdateEXPBar(float CurrentLevelPercent) void UHUDWidget::UpdateEXPBar(float CurrentLevelPercent)
{ {
EXPbar->SetPercent(CurrentLevelPercent); EXPbar->SetPercent(CurrentLevelPercent);

View File

@ -16,24 +16,21 @@ class VAMPIRES_API UHUDWidget : public UUserWidget
{ {
GENERATED_BODY() GENERATED_BODY()
protected: UPROPERTY(meta = (BindWidget))
UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
UProgressBar* EXPbar; UProgressBar* EXPbar;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
UTextBlock* LevelBlock; UTextBlock* LevelBlock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
UTextBlock* TimerBLock; UTextBlock* TimerBLock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
UTextBlock* KillBLock; UTextBlock* KillBLock;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
UTextBlock* GoldBLock; UTextBlock* GoldBLock;
void Init();
public: public:
UFUNCTION() UFUNCTION()
void UpdateEXPBar(float CurrentLevelPercent); void UpdateEXPBar(float CurrentLevelPercent);

View File

@ -17,19 +17,17 @@ class VAMPIRES_API ULevelUpWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
protected: UPROPERTY(meta=(BindWidget))
UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UButton> ResumeButton; TObjectPtr<UButton> ResumeButton;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ResumeTextBlock; TObjectPtr<UTextBlock> ResumeTextBlock;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
UListView* UpgradesListView; UListView* UpgradesListView;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
private:
UFUNCTION() UFUNCTION()
void ResumeButtonClicked(); void ResumeButtonClicked();

View File

@ -39,25 +39,15 @@ void UOptionsMenuWidget::NativeConstruct()
if (ResetToDefaultsButton) if (ResetToDefaultsButton)
{ {
ResetToDefaultsButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsOnClicked); ResetToDefaultsButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsOnClicked);
ResetToDefaultsButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayClickedSound); ResetToDefaultsButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsButtonOnHovered);
ResetToDefaultsButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsButtonOnUnhovered);
ResetToDefaultsButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayHoveredSound);
ResetToDefaultsButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsTextBlockHoveredDelegate);
ResetToDefaultsButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ResetToDefaultsTextBlockUnhoveredDelegate);
ResetToDefaultsButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayUnhoveredSound);
} }
if (ReturnButton) if (ReturnButton)
{ {
ReturnButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnButtonOnClicked); ReturnButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnButtonOnClicked);
ReturnButton->OnClicked.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayClickedSound); ReturnButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnButtonOnHovered);
ReturnButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnButtonOnUnhovered);
ReturnButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayHoveredSound);
ReturnButton->OnHovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnTextBlockHoveredDelegate);
ReturnButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::ReturnTextBlockUnhoveredDelegate);
ReturnButton->OnUnhovered.AddUniqueDynamic(this, &UOptionsMenuWidget::PlayUnhoveredSound);
} }
} }
@ -129,9 +119,9 @@ void UOptionsMenuWidget::GenerateRefreshRateOptions()
RefreshRateComboBox->ClearOptions(); RefreshRateComboBox->ClearOptions();
TArray<uint32> RefreshRates; TArray<uint32> RefreshRates;
GetListOfUniqueRefreshRates(RefreshRates); GetListOfUniqueRefreshRates(RefreshRates);
for (uint32 RefreshRate : RefreshRates) for (uint32 RefreshRate : RefreshRates)
{ {
RefreshRateComboBox->AddOption(FString::FromInt(RefreshRate)); RefreshRateComboBox->AddOption(FString::FromInt(RefreshRate));
@ -268,13 +258,15 @@ void UOptionsMenuWidget::OnAudioLeverValueChanged(float Value)
MasterSoundClass->Properties.Volume = FMath::Clamp(Value, 0.0f, 1.0f); MasterSoundClass->Properties.Volume = FMath::Clamp(Value, 0.0f, 1.0f);
int AudioLevel = FMath::Clamp(Value, 0.0f, 1.0f) * 100.0f; int AudioLevel = FMath::Clamp(Value, 0.0f, 1.0f) * 100.0f;
MasterAudioTextBlock->SetText(FText::FromString(FString::FromInt(AudioLevel) + "%")); MasterAudioTextBlock->SetText(FText::FromString(FString::FromInt(AudioLevel) + "%"));
} }
} }
void UOptionsMenuWidget::ResetToDefaultsOnClicked() void UOptionsMenuWidget::ResetToDefaultsOnClicked()
{ {
PlayClickedSound();
// Set Resolution to Monitor Res // Set Resolution to Monitor Res
TArray<FIntPoint> Resolutions; TArray<FIntPoint> Resolutions;
UKismetSystemLibrary::GetSupportedFullscreenResolutions(Resolutions); UKismetSystemLibrary::GetSupportedFullscreenResolutions(Resolutions);
@ -282,7 +274,8 @@ void UOptionsMenuWidget::ResetToDefaultsOnClicked()
if (Resolutions.Num() > 0) if (Resolutions.Num() > 0)
{ {
GEngine->GameUserSettings->SetScreenResolution(Resolutions.Last()); GEngine->GameUserSettings->SetScreenResolution(Resolutions.Last());
FString ResolutionString = FString::FromInt(Resolutions.Last().X) + "x" + FString::FromInt(Resolutions.Last().Y); FString ResolutionString = FString::FromInt(Resolutions.Last().X) + "x" +
FString::FromInt(Resolutions.Last().Y);
ResolutionComboBox->SetSelectedOption(ResolutionString); ResolutionComboBox->SetSelectedOption(ResolutionString);
} }
else else
@ -292,7 +285,7 @@ void UOptionsMenuWidget::ResetToDefaultsOnClicked()
FString ResolutionString = FString::FromInt(1920) + "x" + FString::FromInt(1080); FString ResolutionString = FString::FromInt(1920) + "x" + FString::FromInt(1080);
ResolutionComboBox->SetSelectedOption(ResolutionString); ResolutionComboBox->SetSelectedOption(ResolutionString);
} }
// Set Fullscreen // Set Fullscreen
GEngine->GameUserSettings->SetFullscreenMode(EWindowMode::Fullscreen); GEngine->GameUserSettings->SetFullscreenMode(EWindowMode::Fullscreen);
WindowTypeComboBox->SetSelectedOption(LexToString(GEngine->GameUserSettings->GetFullscreenMode())); WindowTypeComboBox->SetSelectedOption(LexToString(GEngine->GameUserSettings->GetFullscreenMode()));
@ -322,6 +315,8 @@ void UOptionsMenuWidget::ResetToDefaultsOnClicked()
void UOptionsMenuWidget::ReturnButtonOnClicked() void UOptionsMenuWidget::ReturnButtonOnClicked()
{ {
PlayClickedSound();
if (MainMenuMenuWidget) if (MainMenuMenuWidget)
{ {
RemoveFromParent(); RemoveFromParent();
@ -336,6 +331,30 @@ void UOptionsMenuWidget::ReturnButtonOnClicked()
} }
} }
void UOptionsMenuWidget::ResetToDefaultsButtonOnHovered()
{
PlayHoveredSound();
SetTextBlockHovered(ResetToDefaultsBlock);
}
void UOptionsMenuWidget::ResetToDefaultsButtonOnUnhovered()
{
PlayUnhoveredSound();
SetTextBlockUnhovered(ResetToDefaultsBlock);
}
void UOptionsMenuWidget::ReturnButtonOnHovered()
{
PlayHoveredSound();
SetTextBlockHovered(ReturnBlock);
}
void UOptionsMenuWidget::ReturnButtonOnUnhovered()
{
PlayUnhoveredSound();
SetTextBlockUnhovered(ReturnBlock);
}
void UOptionsMenuWidget::GetListOfUniqueRefreshRates(TArray<uint32>& RefreshRates) void UOptionsMenuWidget::GetListOfUniqueRefreshRates(TArray<uint32>& RefreshRates)
{ {
FScreenResolutionArray ScreenResolutions; FScreenResolutionArray ScreenResolutions;

View File

@ -58,12 +58,10 @@ class VAMPIRES_API UOptionsMenuWidget : public UVampireInteractiveWidget
UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | Sound Settings") UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | Sound Settings")
TObjectPtr<USoundClass> MasterSoundClass = nullptr; TObjectPtr<USoundClass> MasterSoundClass = nullptr;
protected:
UFUNCTION() UFUNCTION()
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
private:
void GenerateWindowTypeOptions(); void GenerateWindowTypeOptions();
void GenerateResolutionOptions(); void GenerateResolutionOptions();
@ -104,16 +102,16 @@ private:
void ReturnButtonOnClicked(); void ReturnButtonOnClicked();
UFUNCTION() UFUNCTION()
void ResetToDefaultsTextBlockHoveredDelegate() { SetTextBlockHovered(ResetToDefaultsBlock); } void ResetToDefaultsButtonOnHovered();
UFUNCTION() UFUNCTION()
void ResetToDefaultsTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(ResetToDefaultsBlock); } void ResetToDefaultsButtonOnUnhovered();
UFUNCTION()
void ReturnTextBlockHoveredDelegate() { SetTextBlockHovered(ReturnBlock); }
UFUNCTION() UFUNCTION()
void ReturnTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(ReturnBlock); } void ReturnButtonOnHovered();
UFUNCTION()
void ReturnButtonOnUnhovered();
void GetListOfUniqueRefreshRates(TArray<uint32>& RefreshRates); void GetListOfUniqueRefreshRates(TArray<uint32>& RefreshRates);
}; };

View File

@ -15,23 +15,21 @@ UCLASS()
class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
public: UPROPERTY(meta=(BindWidget))
UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UButton> ResumeButton; TObjectPtr<UButton> ResumeButton;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ResumeTextBlock; TObjectPtr<UTextBlock> ResumeTextBlock;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> ReturnToMainMenuButton; TObjectPtr<UButton> ReturnToMainMenuButton;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ReturnToMainMenuTextBlock; TObjectPtr<UTextBlock> ReturnToMainMenuTextBlock;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
private:
UFUNCTION() UFUNCTION()
void ResumeButtonOnClicked(); void ResumeButtonOnClicked();

View File

@ -17,13 +17,8 @@ void USelectWeaponWidget::NativeConstruct()
if (BackButton) if (BackButton)
{ {
BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked); BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked);
BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::PlayClickedSound); BackButton->OnHovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonOnHovered);
BackButton->OnUnhovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonOnUnhovered);
BackButton->OnHovered.AddUniqueDynamic(this, &USelectWeaponWidget::PlayHoveredSound);
BackButton->OnHovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonTextBlockHoveredDelegate);
BackButton->OnUnhovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonTextBlockUnhoveredDelegate);
BackButton->OnUnhovered.AddUniqueDynamic(this, &USelectWeaponWidget::PlayUnhoveredSound);
} }
if (UpgradesListView) if (UpgradesListView)
@ -40,6 +35,7 @@ void USelectWeaponWidget::NativeConstruct()
void USelectWeaponWidget::BackButtonClicked() void USelectWeaponWidget::BackButtonClicked()
{ {
PlayClickedSound();
if (PreviousWidget) if (PreviousWidget)
{ {
RemoveFromParent(); RemoveFromParent();
@ -53,3 +49,15 @@ void USelectWeaponWidget::BackButtonClicked()
} }
} }
} }
void USelectWeaponWidget::BackButtonOnHovered()
{
PlayHoveredSound();
SetTextBlockHovered(BackTextBlock);
}
void USelectWeaponWidget::BackButtonOnUnhovered()
{
PlayUnhoveredSound();
SetTextBlockUnhovered(BackTextBlock);
}

View File

@ -17,16 +17,17 @@ UCLASS()
class VAMPIRES_API USelectWeaponWidget : public UVampireInteractiveWidget class VAMPIRES_API USelectWeaponWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
protected:
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> BackButton; TObjectPtr<UButton> BackButton;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> BackTextBlock; TObjectPtr<UTextBlock> BackTextBlock;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UListView> UpgradesListView; TObjectPtr<UListView> UpgradesListView;
protected:
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
TArray<TSubclassOf<AWeapon>> StarterWeapons; TArray<TSubclassOf<AWeapon>> StarterWeapons;
@ -42,8 +43,8 @@ private:
void BackButtonClicked(); void BackButtonClicked();
UFUNCTION() UFUNCTION()
void BackButtonTextBlockHoveredDelegate() { SetTextBlockHovered(BackTextBlock); } void BackButtonOnHovered();
UFUNCTION() UFUNCTION()
void BackButtonTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(BackTextBlock); } void BackButtonOnUnhovered();
}; };

View File

@ -58,3 +58,15 @@ void UStarterWeaponButtonWidget::OnClicked()
} }
} }
} }
void UStarterWeaponButtonWidget::OnHoveredDelegate()
{
SetTextBlockHovered(WeaponNameTextBlock);
SetTextBlockHovered(DescriptionTextBlock);
}
void UStarterWeaponButtonWidget::OnUnhoveredDelegate()
{
SetTextBlockUnhovered(WeaponNameTextBlock);
SetTextBlockUnhovered(DescriptionTextBlock);
}

View File

@ -20,20 +20,19 @@ class VAMPIRES_API UStarterWeaponButtonWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
protected: UPROPERTY(meta=(BindWidget))
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
TObjectPtr<UButton> Body; TObjectPtr<UButton> Body;
UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UImage> WeaponIcon; TObjectPtr<UImage> WeaponIcon;
UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> WeaponNameTextBlock; TObjectPtr<UTextBlock> WeaponNameTextBlock;
UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> DescriptionTextBlock; TObjectPtr<UTextBlock> DescriptionTextBlock;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY()
TSubclassOf<AWeapon> WeaponTemplate; TSubclassOf<AWeapon> WeaponTemplate;
UPROPERTY() UPROPERTY()
@ -43,14 +42,12 @@ protected:
virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override; virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override;
private:
UFUNCTION() UFUNCTION()
virtual void OnClicked(); virtual void OnClicked();
UFUNCTION() UFUNCTION()
void OnHoveredDelegate() { SetTextBlockHovered(WeaponNameTextBlock); SetTextBlockHovered(DescriptionTextBlock); } void OnHoveredDelegate();
UFUNCTION() UFUNCTION()
void OnUnhoveredDelegate() { SetTextBlockUnhovered(WeaponNameTextBlock); SetTextBlockUnhovered(DescriptionTextBlock); } void OnUnhoveredDelegate();
}; };

View File

@ -51,12 +51,8 @@ void UUpgradeButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject)
if (Body) if (Body)
{ {
Body->OnClicked.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnClicked); Body->OnClicked.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnClicked);
Body->OnHovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::PlayHoveredSound);
Body->OnHovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnHoveredDelegate); Body->OnHovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnHoveredDelegate);
Body->OnUnhovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnUnhoveredDelegate); Body->OnUnhovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnUnhoveredDelegate);
Body->OnUnhovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::PlayUnhoveredSound);
} }
} }
@ -81,6 +77,8 @@ void UUpgradeButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject)
void UUpgradeButtonWidget::OnClicked() void UUpgradeButtonWidget::OnClicked()
{ {
PlayClickedSound();
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0); APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0);
switch (UpgradeType) switch (UpgradeType)
@ -90,7 +88,8 @@ void UUpgradeButtonWidget::OnClicked()
break; break;
case NewWeapon: case NewWeapon:
if (UWeaponInventoryComponent* Inventory = PlayerController->GetPawn()->GetComponentByClass<UWeaponInventoryComponent>()) if (UWeaponInventoryComponent* Inventory = PlayerController->GetPawn()->GetComponentByClass<
UWeaponInventoryComponent>())
{ {
Inventory->AddWeaponToInventory(WeaponTemplate); Inventory->AddWeaponToInventory(WeaponTemplate);
Inventory->ObtainableWeapons.Remove(WeaponTemplate); Inventory->ObtainableWeapons.Remove(WeaponTemplate);
@ -100,7 +99,8 @@ void UUpgradeButtonWidget::OnClicked()
case Health: case Health:
if (PlayerController) if (PlayerController)
{ {
if (UHealthComponent* HealthComponent = PlayerController->GetPawn()->GetComponentByClass<UHealthComponent>()) if (UHealthComponent* HealthComponent = PlayerController->GetPawn()->GetComponentByClass<
UHealthComponent>())
{ {
HealthComponent->RecoverHealth(HealthComponent->GetMaxHealth() / 10.0f); HealthComponent->RecoverHealth(HealthComponent->GetMaxHealth() / 10.0f);
} }
@ -135,3 +135,17 @@ void UUpgradeButtonWidget::OnClicked()
Parent->SetIsFocusable(false); Parent->SetIsFocusable(false);
} }
} }
void UUpgradeButtonWidget::OnHoveredDelegate()
{
PlayHoveredSound();
SetTextBlockHovered(WeaponNameTextBlock);
SetTextBlockHovered(DescriptionTextBlock);
}
void UUpgradeButtonWidget::OnUnhoveredDelegate()
{
PlayUnhoveredSound();
SetTextBlockUnhovered(WeaponNameTextBlock);
SetTextBlockUnhovered(DescriptionTextBlock);
}

View File

@ -32,6 +32,20 @@ class VAMPIRES_API UUpgradeButtonWidget : public UVampireInteractiveWidget, publ
GENERATED_BODY() GENERATED_BODY()
protected: protected:
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> UpgradeIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> NewWeaponIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> HealthIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> GoldIcon;
private:
UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
TObjectPtr<UButton> Body; TObjectPtr<UButton> Body;
@ -44,25 +58,13 @@ protected:
UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
TObjectPtr<UTextBlock> DescriptionTextBlock; TObjectPtr<UTextBlock> DescriptionTextBlock;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> UpgradeIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> NewWeaponIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> HealthIcon;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UTexture2D> GoldIcon;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
TEnumAsByte<EUpgradeType> UpgradeType; TEnumAsByte<EUpgradeType> UpgradeType;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY()
TSubclassOf<AWeapon> WeaponTemplate; TSubclassOf<AWeapon> WeaponTemplate;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY()
TObjectPtr<AWeapon> WeaponInstance; TObjectPtr<AWeapon> WeaponInstance;
UPROPERTY() UPROPERTY()
@ -82,8 +84,8 @@ private:
virtual void OnClicked(); virtual void OnClicked();
UFUNCTION() UFUNCTION()
void OnHoveredDelegate() { SetTextBlockHovered(WeaponNameTextBlock); SetTextBlockHovered(DescriptionTextBlock); } void OnHoveredDelegate();
UFUNCTION() UFUNCTION()
void OnUnhoveredDelegate() { SetTextBlockUnhovered(WeaponNameTextBlock); SetTextBlockUnhovered(DescriptionTextBlock); } void OnUnhoveredDelegate();
}; };