Update Level Up UI to custom buttons
This commit is contained in:
parent
20dbb97b7c
commit
a0a3aaddff
BIN
Content/Widgets/LevelUp/BP_LevelUpWidget.uasset
(Stored with Git LFS)
BIN
Content/Widgets/LevelUp/BP_LevelUpWidget.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset
(Stored with Git LFS)
BIN
Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset
(Stored with Git LFS)
BIN
Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset
(Stored with Git LFS)
Binary file not shown.
@ -202,9 +202,6 @@ void AVampirePlayerController::ShowLevelUpScreen(int Level)
|
|||||||
if (CurrentLevelUpUI)
|
if (CurrentLevelUpUI)
|
||||||
{
|
{
|
||||||
CurrentLevelUpUI->AddToViewport();
|
CurrentLevelUpUI->AddToViewport();
|
||||||
UWidgetBlueprintLibrary::SetInputMode_UIOnlyEx(this, CurrentLevelUpUI,
|
|
||||||
EMouseLockMode::LockInFullscreen);
|
|
||||||
bShowMouseCursor = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,13 @@
|
|||||||
|
|
||||||
#include "LevelUpWidget.h"
|
#include "LevelUpWidget.h"
|
||||||
|
|
||||||
|
#include "CustomButton.h"
|
||||||
#include "Blueprint/WidgetBlueprintLibrary.h"
|
#include "Blueprint/WidgetBlueprintLibrary.h"
|
||||||
#include "Components/Button.h"
|
|
||||||
#include "Components/ListView.h"
|
#include "Components/ListView.h"
|
||||||
#include "Kismet/GameplayStatics.h"
|
#include "Kismet/GameplayStatics.h"
|
||||||
#include "UpgradeButtonDataObject.h"
|
#include "UpgradeButtonDataObject.h"
|
||||||
|
#include "UpgradeButtonWidget.h"
|
||||||
|
#include "Components/ScrollBox.h"
|
||||||
#include "GameFramework/Character.h"
|
#include "GameFramework/Character.h"
|
||||||
#include "vampires/VampireCharacter.h"
|
#include "vampires/VampireCharacter.h"
|
||||||
#include "vampires/Weapon.h"
|
#include "vampires/Weapon.h"
|
||||||
@ -20,11 +22,10 @@ void ULevelUpWidget::NativeConstruct()
|
|||||||
if (ResumeButton)
|
if (ResumeButton)
|
||||||
{
|
{
|
||||||
ResumeButton->OnClicked.AddUniqueDynamic(this, &ULevelUpWidget::ResumeButtonClicked);
|
ResumeButton->OnClicked.AddUniqueDynamic(this, &ULevelUpWidget::ResumeButtonClicked);
|
||||||
ResumeButton->OnHovered.AddUniqueDynamic(this, &ULevelUpWidget::ResumeButtonOnHovered);
|
ResumeButton->OnFocused.AddUniqueDynamic(this, &ULevelUpWidget::BackButtonFocused);
|
||||||
ResumeButton->OnUnhovered.AddUniqueDynamic(this, &ULevelUpWidget::ResumeButtonOnUnhovered);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UpgradesListView)
|
if (UpgradesScrollBox && UpgradeButtonWidgetTemplate)
|
||||||
{
|
{
|
||||||
ACharacter* Player = Cast<AVampireCharacter>(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0));
|
ACharacter* Player = Cast<AVampireCharacter>(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0));
|
||||||
if (!Player)
|
if (!Player)
|
||||||
@ -38,7 +39,7 @@ void ULevelUpWidget::NativeConstruct()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpgradesListView->ClearListItems();
|
UpgradesScrollBox->ClearChildren();
|
||||||
TArray<AWeapon*> Inventory = InventoryComponent->GetInventory();
|
TArray<AWeapon*> Inventory = InventoryComponent->GetInventory();
|
||||||
|
|
||||||
// Get list of weapons that the player owns that can be upgraded
|
// Get list of weapons that the player owns that can be upgraded
|
||||||
@ -84,17 +85,34 @@ void ULevelUpWidget::NativeConstruct()
|
|||||||
for (int i = 0; i < 3 && UpgradeItems.Num() > 0; i++)
|
for (int i = 0; i < 3 && UpgradeItems.Num() > 0; i++)
|
||||||
{
|
{
|
||||||
int Rand = FMath::RandRange(0, UpgradeItems.Num() - 1);
|
int Rand = FMath::RandRange(0, UpgradeItems.Num() - 1);
|
||||||
UpgradesListView->AddItem(UpgradeItems[Rand]);
|
UUpgradeButtonDataObject* Selection = UpgradeItems[Rand];
|
||||||
|
UUpgradeButtonWidget* Widget = CreateWidget<UUpgradeButtonWidget>(
|
||||||
|
GetWorld(), UpgradeButtonWidgetTemplate);
|
||||||
|
Widget->SetData(Selection);
|
||||||
|
UpgradesScrollBox->AddChild(Widget);
|
||||||
UpgradeItems.RemoveAt(Rand);
|
UpgradeItems.RemoveAt(Rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0))
|
||||||
|
{
|
||||||
|
UWidgetBlueprintLibrary::SetInputMode_UIOnlyEx(PlayerController, UpgradesScrollBox->GetChildAt(0),
|
||||||
|
EMouseLockMode::LockAlways);
|
||||||
|
PlayerController->bShowMouseCursor = true;
|
||||||
}
|
}
|
||||||
SetIsFocusable(true);
|
}
|
||||||
|
|
||||||
|
SetIsFocusable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
FReply ULevelUpWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
|
||||||
|
{
|
||||||
|
CurrentFocus->SetKeyboardFocus();
|
||||||
|
|
||||||
|
return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ULevelUpWidget::ResumeButtonClicked()
|
void ULevelUpWidget::ResumeButtonClicked()
|
||||||
{
|
{
|
||||||
PlayClickedSound();
|
|
||||||
|
|
||||||
RemoveFromParent();
|
RemoveFromParent();
|
||||||
|
|
||||||
if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0))
|
if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0))
|
||||||
@ -107,14 +125,7 @@ void ULevelUpWidget::ResumeButtonClicked()
|
|||||||
SetIsFocusable(false);
|
SetIsFocusable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ULevelUpWidget::ResumeButtonOnHovered()
|
void ULevelUpWidget::BackButtonFocused(FFocusEvent InFocusEvent)
|
||||||
{
|
{
|
||||||
SetTextBlockHovered(ResumeTextBlock);
|
SetCurrentFocus(ResumeButton);
|
||||||
PlayHoveredSound();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ULevelUpWidget::ResumeButtonOnUnhovered()
|
|
||||||
{
|
|
||||||
SetTextBlockUnhovered(ResumeTextBlock);
|
|
||||||
PlayUnhoveredSound();
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
#include "VampireInteractiveWidget.h"
|
#include "VampireInteractiveWidget.h"
|
||||||
#include "LevelUpWidget.generated.h"
|
#include "LevelUpWidget.generated.h"
|
||||||
|
|
||||||
|
class UUpgradeButtonWidget;
|
||||||
|
class UScrollBox;
|
||||||
class UUpgradeButtonDataObject;
|
class UUpgradeButtonDataObject;
|
||||||
class UListView;
|
class UListView;
|
||||||
class UButton;
|
class UButton;
|
||||||
@ -17,23 +19,25 @@ class VAMPIRES_API ULevelUpWidget : public UVampireInteractiveWidget
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
UPROPERTY(meta=(BindWidget))
|
UPROPERTY(meta=(BindWidget))
|
||||||
TObjectPtr<UButton> ResumeButton;
|
TObjectPtr<UCustomButton> ResumeButton;
|
||||||
|
|
||||||
UPROPERTY(meta=(BindWidget))
|
UPROPERTY(meta=(BindWidget))
|
||||||
TObjectPtr<UTextBlock> ResumeTextBlock;
|
TObjectPtr<UScrollBox> UpgradesScrollBox;
|
||||||
|
|
||||||
UPROPERTY(meta=(BindWidget))
|
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||||
UListView* UpgradesListView;
|
TSubclassOf<UUpgradeButtonWidget> UpgradeButtonWidgetTemplate;
|
||||||
|
|
||||||
|
protected:
|
||||||
virtual void NativeConstruct() override;
|
virtual void NativeConstruct() override;
|
||||||
|
|
||||||
|
virtual FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
|
||||||
|
|
||||||
|
private:
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void ResumeButtonClicked();
|
void ResumeButtonClicked();
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void ResumeButtonOnHovered();
|
void BackButtonFocused(FFocusEvent InFocusEvent);
|
||||||
|
|
||||||
UFUNCTION()
|
|
||||||
void ResumeButtonOnUnhovered();
|
|
||||||
};
|
};
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
#include "UpgradeButtonWidget.h"
|
#include "UpgradeButtonWidget.h"
|
||||||
|
|
||||||
|
#include "LevelUpWidget.h"
|
||||||
#include "UpgradeButtonDataObject.h"
|
#include "UpgradeButtonDataObject.h"
|
||||||
#include "Blueprint/WidgetBlueprintLibrary.h"
|
#include "Blueprint/WidgetBlueprintLibrary.h"
|
||||||
#include "Components/Button.h"
|
|
||||||
#include "Components/Image.h"
|
#include "Components/Image.h"
|
||||||
#include "Components/TextBlock.h"
|
#include "Components/TextBlock.h"
|
||||||
#include "Kismet/GameplayStatics.h"
|
#include "Kismet/GameplayStatics.h"
|
||||||
@ -18,13 +18,16 @@
|
|||||||
void UUpgradeButtonWidget::NativeConstruct()
|
void UUpgradeButtonWidget::NativeConstruct()
|
||||||
{
|
{
|
||||||
Super::NativeConstruct();
|
Super::NativeConstruct();
|
||||||
|
|
||||||
|
OnFocused.AddUniqueDynamic(this, &UUpgradeButtonWidget::SetFocusInParent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UUpgradeButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject)
|
void UUpgradeButtonWidget::SetData(UUpgradeButtonDataObject* ListItemObject)
|
||||||
{
|
{
|
||||||
if (UUpgradeButtonDataObject* Item = Cast<UUpgradeButtonDataObject>(ListItemObject))
|
if (UUpgradeButtonDataObject* Item = Cast<UUpgradeButtonDataObject>(ListItemObject))
|
||||||
{
|
{
|
||||||
WeaponNameTextBlock->SetText(Item->WeaponName);
|
TextBlock->SetText(Item->WeaponName);
|
||||||
|
ButtonText = Item->WeaponName;
|
||||||
DescriptionTextBlock->SetText(Item->WeaponDescription);
|
DescriptionTextBlock->SetText(Item->WeaponDescription);
|
||||||
WeaponIcon->SetBrushFromTexture(Item->WeaponIcon);
|
WeaponIcon->SetBrushFromTexture(Item->WeaponIcon);
|
||||||
Parent = Item->Parent;
|
Parent = Item->Parent;
|
||||||
@ -47,13 +50,6 @@ void UUpgradeButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject)
|
|||||||
{
|
{
|
||||||
UpgradeType = Gold;
|
UpgradeType = Gold;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Body)
|
|
||||||
{
|
|
||||||
Body->OnClicked.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnClicked);
|
|
||||||
Body->OnHovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnHoveredDelegate);
|
|
||||||
Body->OnUnhovered.AddUniqueDynamic(this, &UUpgradeButtonWidget::OnUnhoveredDelegate);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -75,9 +71,9 @@ void UUpgradeButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UUpgradeButtonWidget::OnClicked()
|
void UUpgradeButtonWidget::OnButtonClicked()
|
||||||
{
|
{
|
||||||
PlayClickedSound();
|
Super::OnButtonClicked();
|
||||||
|
|
||||||
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0);
|
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0);
|
||||||
|
|
||||||
@ -136,16 +132,10 @@ void UUpgradeButtonWidget::OnClicked()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UUpgradeButtonWidget::OnHoveredDelegate()
|
void UUpgradeButtonWidget::SetFocusInParent(FFocusEvent InFocusEvent)
|
||||||
{
|
{
|
||||||
PlayHoveredSound();
|
if (ULevelUpWidget* LevelUpMenu = Cast<ULevelUpWidget>(Parent))
|
||||||
SetTextBlockHovered(WeaponNameTextBlock);
|
|
||||||
SetTextBlockHovered(DescriptionTextBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UUpgradeButtonWidget::OnUnhoveredDelegate()
|
|
||||||
{
|
{
|
||||||
PlayUnhoveredSound();
|
LevelUpMenu->SetCurrentFocus(this);
|
||||||
SetTextBlockUnhovered(WeaponNameTextBlock);
|
}
|
||||||
SetTextBlockUnhovered(DescriptionTextBlock);
|
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "VampireInteractiveWidget.h"
|
#include "CustomButton.h"
|
||||||
#include "Blueprint/IUserObjectListEntry.h"
|
#include "Blueprint/IUserObjectListEntry.h"
|
||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
#include "UpgradeButtonWidget.generated.h"
|
#include "UpgradeButtonWidget.generated.h"
|
||||||
|
|
||||||
|
class UUpgradeButtonDataObject;
|
||||||
class AWeapon;
|
class AWeapon;
|
||||||
|
|
||||||
UENUM(BlueprintType)
|
UENUM(BlueprintType)
|
||||||
@ -27,7 +28,7 @@ class UButton;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS()
|
||||||
class VAMPIRES_API UUpgradeButtonWidget : public UVampireInteractiveWidget, public IUserObjectListEntry
|
class VAMPIRES_API UUpgradeButtonWidget : public UCustomButton, public IUserObjectListEntry
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
@ -45,16 +46,9 @@ protected:
|
|||||||
TObjectPtr<UTexture2D> GoldIcon;
|
TObjectPtr<UTexture2D> GoldIcon;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
|
||||||
TObjectPtr<UButton> Body;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
||||||
TObjectPtr<UImage> WeaponIcon;
|
TObjectPtr<UImage> WeaponIcon;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
|
||||||
TObjectPtr<UTextBlock> WeaponNameTextBlock;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
UPROPERTY(EditDefaultsOnly, meta=(BindWidget))
|
||||||
TObjectPtr<UTextBlock> DescriptionTextBlock;
|
TObjectPtr<UTextBlock> DescriptionTextBlock;
|
||||||
|
|
||||||
@ -70,22 +64,18 @@ private:
|
|||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
TObjectPtr<UUserWidget> Parent;
|
TObjectPtr<UUserWidget> Parent;
|
||||||
|
|
||||||
private:
|
|
||||||
UPROPERTY(meta=(BindWidget))
|
UPROPERTY(meta=(BindWidget))
|
||||||
UImage* UpgradeTypeIcon;
|
UImage* UpgradeTypeIcon;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void NativeConstruct() override;
|
virtual void NativeConstruct() override;
|
||||||
|
|
||||||
virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override;
|
public:
|
||||||
|
virtual void SetData(UUpgradeButtonDataObject* ListItemObject);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UFUNCTION()
|
virtual void OnButtonClicked() override;
|
||||||
virtual void OnClicked();
|
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void OnHoveredDelegate();
|
void SetFocusInParent(FFocusEvent InFocusEvent);
|
||||||
|
|
||||||
UFUNCTION()
|
|
||||||
void OnUnhoveredDelegate();
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user