From 3d2826087e7f0be3493a20a4d5f5c230cc8a5699 Mon Sep 17 00:00:00 2001 From: baz Date: Tue, 15 Apr 2025 21:22:59 +0100 Subject: [PATCH] Add Knife upgrades --- Content/Weapons/Knife/BP_KnifeWeapon.uasset | 4 +- Source/vampires/Weapons/KnifeWeapon.cpp | 42 +++++++++++++++++++++ Source/vampires/Weapons/KnifeWeapon.h | 7 +++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/Content/Weapons/Knife/BP_KnifeWeapon.uasset b/Content/Weapons/Knife/BP_KnifeWeapon.uasset index 8183ac4..c8fee5c 100644 --- a/Content/Weapons/Knife/BP_KnifeWeapon.uasset +++ b/Content/Weapons/Knife/BP_KnifeWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e12e220e099360a33df42183f2c0d5f9201d234094a7369c8f15bdb1a6d88f0 -size 23612 +oid sha256:215476c241283d46a09a19aff80758c052b4211040ade798c53ab4d03d656eb9 +size 24563 diff --git a/Source/vampires/Weapons/KnifeWeapon.cpp b/Source/vampires/Weapons/KnifeWeapon.cpp index 956060c..166879a 100644 --- a/Source/vampires/Weapons/KnifeWeapon.cpp +++ b/Source/vampires/Weapons/KnifeWeapon.cpp @@ -8,6 +8,7 @@ #include "vampires/ObjectPoolManager.h" #include "vampires/PlayerCharacter.h" #include "vampires/Projectile.h" +#include "vampires/ProjectileDataAsset.h" #include "vampires/Interfaces/Pools.h" AKnifeWeapon::AKnifeWeapon() @@ -22,7 +23,46 @@ void AKnifeWeapon::BeginPlay() void AKnifeWeapon::FireWeaponAction_Implementation() { Super::FireWeaponAction_Implementation(); +} +bool AKnifeWeapon::UpgradeWeapon_Implementation() +{ + if (!Super::UpgradeWeapon_Implementation()) return false; + + switch (CurrentLevel) + { + case 1: + ProjectilesPerActivation++; + break; + case 2: + ProjectilesPerActivation++; + Damage += 5.0f; + break; + case 3: + ProjectilesPerActivation++; + break; + case 4: + ProjectileTemplate->DamagableEnemies++; + break; + case 5: + ProjectilesPerActivation++; + break; + case 6: + ProjectilesPerActivation++; + Damage += 5.0f; + break; + case 7: + ProjectileTemplate->DamagableEnemies++; + break; + default: + return false; + } + + return true; +} + +void AKnifeWeapon::FireProjectile() +{ if (UKismetSystemLibrary::DoesImplementInterface(GetOwner(), UInputable::StaticClass())) { if (ProjectileTemplate && OverlappedEnemies.Num() > 0) @@ -46,6 +86,8 @@ void AKnifeWeapon::FireWeaponAction_Implementation() IProjectilable::Execute_SetTargetDirection(projectile, direction); } + + Super::FireProjectile(); } } } diff --git a/Source/vampires/Weapons/KnifeWeapon.h b/Source/vampires/Weapons/KnifeWeapon.h index bec73f2..143a10f 100644 --- a/Source/vampires/Weapons/KnifeWeapon.h +++ b/Source/vampires/Weapons/KnifeWeapon.h @@ -13,7 +13,7 @@ UCLASS() class VAMPIRES_API AKnifeWeapon : public AProjectileWeapon { GENERATED_BODY() - + public: AKnifeWeapon(); @@ -22,4 +22,9 @@ protected: public: virtual void FireWeaponAction_Implementation() override; + + virtual bool UpgradeWeapon_Implementation() override; + +protected: + virtual void FireProjectile() override; };