diff --git a/Source/vampires/Weapon.cpp b/Source/vampires/Weapon.cpp index b54017a..6c681ad 100644 --- a/Source/vampires/Weapon.cpp +++ b/Source/vampires/Weapon.cpp @@ -20,23 +20,24 @@ void AWeapon::BeginPlay() GetWorldTimerManager().SetTimer(WeaponTimerHandle, this, &AWeapon::FireWeaponAction, WeaponCooldown, true); } +void AWeapon::ResetWeaponTimer() +{ + GetWorldTimerManager().ClearTimer(WeaponTimerHandle); + GetWorldTimerManager().SetTimer(WeaponTimerHandle, this, &AWeapon::FireWeaponAction, WeaponCooldown, true); +} + void AWeapon::FireWeaponAction_Implementation() { // This should be overridden in child weapon classes } -bool AWeapon::UpgradeWeapon() +bool AWeapon::UpgradeWeapon_Implementation() { - if (CurrentLevel + 1 <= Upgrades.Num()) + if (CurrentLevel < MaxLevel) { CurrentLevel++; - WeaponCooldown *= Upgrades[CurrentLevel - 1].WeaponCooldownMultiplier; - Damage *= Upgrades[CurrentLevel - 1].WeaponDamageMultiplier; - - GetWorldTimerManager().ClearTimer(WeaponTimerHandle); - GetWorldTimerManager().SetTimer(WeaponTimerHandle, this, &AWeapon::FireWeaponAction, WeaponCooldown, true); return true; } return false; -} \ No newline at end of file +} diff --git a/Source/vampires/Weapon.h b/Source/vampires/Weapon.h index 39da385..7fcf8aa 100644 --- a/Source/vampires/Weapon.h +++ b/Source/vampires/Weapon.h @@ -9,24 +9,6 @@ class UPaperSprite; class UWeaponDataAsset; -USTRUCT(BlueprintType) -struct FWeaponLevelUpgrades -{ - GENERATED_BODY() - - UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = 0.01f, ClampMax = 1.0f)) - float WeaponCooldownMultiplier = 1.0f; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = 0.01f)) - float WeaponDamageMultiplier = 1.0f; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ClampMin = 0.01f)) - float WeaponRangeMultiplier = 1.0f; - - UPROPERTY(EditAnywhere, BlueprintReadWrite) - FText WeaponUpgradeText; -}; - UCLASS() class VAMPIRES_API AWeapon : public AActor { @@ -55,10 +37,13 @@ public: float Damage; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon Properties") - TArray Upgrades = TArray(); + TArray UpgradeDescriptions; int CurrentLevel = 0; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + int MaxLevel = 0; + private: FTimerHandle WeaponTimerHandle; @@ -71,11 +56,14 @@ protected: // Called when the game starts or when spawned virtual void BeginPlay() override; + void ResetWeaponTimer(); + public: UFUNCTION(BlueprintNativeEvent) void FireWeaponAction(); virtual void FireWeaponAction_Implementation(); - UFUNCTION() - virtual bool UpgradeWeapon(); + UFUNCTION(BlueprintNativeEvent) + bool UpgradeWeapon(); + virtual bool UpgradeWeapon_Implementation(); }; diff --git a/Source/vampires/Widgets/LevelUpWidget.cpp b/Source/vampires/Widgets/LevelUpWidget.cpp index fcf3f73..7ea61f7 100644 --- a/Source/vampires/Widgets/LevelUpWidget.cpp +++ b/Source/vampires/Widgets/LevelUpWidget.cpp @@ -43,7 +43,7 @@ void ULevelUpWidget::NativeConstruct() TArray upgradeItems; for (AWeapon* weapon : Inventory) { - if (weapon->CurrentLevel < weapon->Upgrades.Num()) + if (weapon->CurrentLevel < weapon->UpgradeDescriptions.Num()) { UUpgradeButtonDataObject* Temp = NewObject(this); Temp->SetData(weapon, this); diff --git a/Source/vampires/Widgets/UpgradeButtonDataObject.cpp b/Source/vampires/Widgets/UpgradeButtonDataObject.cpp index 6c19f4f..7be6839 100644 --- a/Source/vampires/Widgets/UpgradeButtonDataObject.cpp +++ b/Source/vampires/Widgets/UpgradeButtonDataObject.cpp @@ -8,7 +8,7 @@ void UUpgradeButtonDataObject::SetData(AWeapon* Weapon, UUserWidget* parent) { WeaponName = Weapon->Name; - Description = Weapon->Description; + Description = Weapon->UpgradeDescriptions[Weapon->CurrentLevel]; WeaponIcon = Weapon->Icon; WeaponInstance = Weapon; Parent = parent;