diff --git a/Content/Weapons/FireWand/BP_FireWandWeapon.uasset b/Content/Weapons/FireWand/BP_FireWandWeapon.uasset index 7f743b6..dccdb68 100644 --- a/Content/Weapons/FireWand/BP_FireWandWeapon.uasset +++ b/Content/Weapons/FireWand/BP_FireWandWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e8956e4c7ae4a2ca79d847068342fe6a76c5a1370d39b8b92c1dc8713b4784b -size 24533 +oid sha256:53fa481533b3b4a04efcc0e1acd36e6508ca9ffc307c093498a653f9134a16df +size 24671 diff --git a/Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset b/Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset index 0915d33..2d2f103 100644 --- a/Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset +++ b/Content/Widgets/LevelUp/BP_UpgradeButtonTemplate.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dff06b420cd72355e62ca8a3a688e689ce59729f5ff9ed859758b3a074118eea +oid sha256:ae1b6fcace4f2168c00cb57569422bee910b313f4e4d2ef7964bde187696287b size 35553 diff --git a/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset b/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset index 817bd02..6389df5 100644 --- a/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset +++ b/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3030be4067391da9a4d1e06594278fe5eec20d81426519fd7580ca04b306e6b1 -size 31057 +oid sha256:2ec5786143e6e67bc90193fc0db42a1c9df540171914a0ad1a35e7264e7e3197 +size 37344 diff --git a/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset b/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset new file mode 100644 index 0000000..77214ab --- /dev/null +++ b/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f39a382b0e96995f040175ffc22c6c3217277d0f5af52487ebd7bfc59baf4e39 +size 34087 diff --git a/Source/vampires/Widgets/SelectWeaponWidget.cpp b/Source/vampires/Widgets/SelectWeaponWidget.cpp index e43c998..d74aa44 100644 --- a/Source/vampires/Widgets/SelectWeaponWidget.cpp +++ b/Source/vampires/Widgets/SelectWeaponWidget.cpp @@ -4,7 +4,10 @@ #include "SelectWeaponWidget.h" #include "MainMenuWidget.h" +#include "StarterWeaponButtonDataObject.h" +#include "UpgradeButtonDataObject.h" #include "Components/Button.h" +#include "Components/ListView.h" #include "Kismet/GameplayStatics.h" void USelectWeaponWidget::NativeConstruct() @@ -15,6 +18,17 @@ void USelectWeaponWidget::NativeConstruct() { BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked); } + + if (UpgradesListView) + { + // Get a list of weapons that the player owns that can be upgraded + for (TSubclassOf weapon : starterWeapons) + { + UStarterWeaponButtonDataObject* Temp = NewObject(this); + Temp->SetData(weapon, this); + UpgradesListView->AddItem(Temp); + } + } } void USelectWeaponWidget::BackButtonClicked() diff --git a/Source/vampires/Widgets/SelectWeaponWidget.h b/Source/vampires/Widgets/SelectWeaponWidget.h index fda2271..b274142 100644 --- a/Source/vampires/Widgets/SelectWeaponWidget.h +++ b/Source/vampires/Widgets/SelectWeaponWidget.h @@ -7,6 +7,7 @@ #include "SelectWeaponWidget.generated.h" +class AWeapon; class UListView; class UButton; /** @@ -23,6 +24,9 @@ public: UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UListView* UpgradesListView; + + UPROPERTY(EditDefaultsOnly) + TArray> starterWeapons; UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) TSubclassOf PreviousWidget; diff --git a/Source/vampires/Widgets/StarterWeaponButtonDataObject.cpp b/Source/vampires/Widgets/StarterWeaponButtonDataObject.cpp new file mode 100644 index 0000000..b05d916 --- /dev/null +++ b/Source/vampires/Widgets/StarterWeaponButtonDataObject.cpp @@ -0,0 +1,37 @@ +// Louis Hobbs | 2024-2025 + + +#include "StarterWeaponButtonDataObject.h" + +#include "vampires/Weapon.h" + +void UStarterWeaponButtonDataObject::SetData(AWeapon* Weapon, UUserWidget* parent) +{ + WeaponName = Weapon->Name; + Description = Weapon->UpgradeDescriptions[Weapon->CurrentLevel]; + WeaponIcon = Weapon->Icon; + WeaponInstance = Weapon; + Parent = parent; +} + +void UStarterWeaponButtonDataObject::SetData(TSubclassOf Weapon, UUserWidget* parent) +{ + AWeapon* temp = NewObject(this, Weapon); + if (temp) + { + WeaponName = temp->Name; + Description = temp->Description; + WeaponIcon = temp->Icon; + WeaponTemplate = Weapon; + Parent = parent; + } +} + +void UStarterWeaponButtonDataObject::SetData(FText weaponName, FText description, TObjectPtr weaponIcon, + UUserWidget* parent) +{ + WeaponName = weaponName; + Description = description; + WeaponIcon = weaponIcon; + Parent = parent; +} diff --git a/Source/vampires/Widgets/StarterWeaponButtonDataObject.h b/Source/vampires/Widgets/StarterWeaponButtonDataObject.h new file mode 100644 index 0000000..3d9027c --- /dev/null +++ b/Source/vampires/Widgets/StarterWeaponButtonDataObject.h @@ -0,0 +1,39 @@ +// Louis Hobbs | 2024-2025 + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Object.h" +#include "StarterWeaponButtonDataObject.generated.h" + +class AWeapon; +/** + * + */ +UCLASS() +class VAMPIRES_API UStarterWeaponButtonDataObject : public UObject +{ + GENERATED_BODY() +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText WeaponName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText Description; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TObjectPtr WeaponIcon; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TSubclassOf WeaponTemplate; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TObjectPtr WeaponInstance; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TObjectPtr Parent; + + void SetData(AWeapon* Weapon, UUserWidget* parent); + void SetData(TSubclassOf Weapon, UUserWidget* parent); + void SetData(FText weaponName, FText description, TObjectPtr weaponIcon, UUserWidget* parent); +}; diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp new file mode 100644 index 0000000..99e2c22 --- /dev/null +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp @@ -0,0 +1,37 @@ +// Louis Hobbs | 2024-2025 + + +#include "StarterWeaponButtonWidget.h" + +#include "StarterWeaponButtonDataObject.h" +#include "Components/Button.h" +#include "Components/Image.h" +#include "Components/TextBlock.h" + +void UStarterWeaponButtonWidget::NativeConstruct() +{ + Super::NativeConstruct(); +} + +void UStarterWeaponButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject) +{ + UStarterWeaponButtonDataObject* Item = Cast(ListItemObject); + + if (Item) + { + WeaponNameTextBlock->SetText(Item->WeaponName); + DescriptionTextBlock->SetText(Item->Description); + WeaponIcon->SetBrushFromTexture(Item->WeaponIcon); + Parent = Item->Parent; + WeaponTemplate = Item->WeaponTemplate; + + if (Body) + { + Body->OnClicked.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::OnClicked); + } + } +} + +void UStarterWeaponButtonWidget::OnClicked() +{ +} diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.h b/Source/vampires/Widgets/StarterWeaponButtonWidget.h new file mode 100644 index 0000000..b1c3adc --- /dev/null +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.h @@ -0,0 +1,49 @@ +// Louis Hobbs | 2024-2025 + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/IUserObjectListEntry.h" +#include "Blueprint/UserWidget.h" +#include "StarterWeaponButtonWidget.generated.h" + +class AWeapon; +class UTextBlock; +class UImage; +class UButton; +/** + * + */ +UCLASS() +class VAMPIRES_API UStarterWeaponButtonWidget : public UUserWidget, public IUserObjectListEntry +{ + GENERATED_BODY() + +public: + UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) + TObjectPtr Body; + + UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) + TObjectPtr WeaponIcon; + + UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) + TObjectPtr WeaponNameTextBlock; + + UPROPERTY(EditDefaultsOnly, meta=(BindWidget)) + TObjectPtr DescriptionTextBlock; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TSubclassOf WeaponTemplate; + + UPROPERTY() + TObjectPtr Parent; + +protected: + virtual void NativeConstruct() override; + + virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override; + +private: + UFUNCTION() + virtual void OnClicked(); +}; diff --git a/Source/vampires/Widgets/UpgradeButtonWidget.h b/Source/vampires/Widgets/UpgradeButtonWidget.h index 7ee36dd..3755ab0 100644 --- a/Source/vampires/Widgets/UpgradeButtonWidget.h +++ b/Source/vampires/Widgets/UpgradeButtonWidget.h @@ -64,6 +64,7 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) TObjectPtr WeaponInstance; + UPROPERTY() TObjectPtr Parent; private: