Add Upgrades to Magic Wand

This commit is contained in:
baz 2025-04-16 14:34:34 +01:00
parent 78ebf0624f
commit 43dad6b126
4 changed files with 51 additions and 4 deletions

Binary file not shown.

Binary file not shown.

View File

@ -8,6 +8,7 @@
#include "Kismet/KismetMathLibrary.h" #include "Kismet/KismetMathLibrary.h"
#include "vampires/ObjectPoolManager.h" #include "vampires/ObjectPoolManager.h"
#include "vampires/Projectile.h" #include "vampires/Projectile.h"
#include "vampires/ProjectileDataAsset.h"
#include "vampires/Interfaces/Pools.h" #include "vampires/Interfaces/Pools.h"
AMagicWandWeapon::AMagicWandWeapon() AMagicWandWeapon::AMagicWandWeapon()
@ -22,7 +23,46 @@ void AMagicWandWeapon::BeginPlay()
void AMagicWandWeapon::FireWeaponAction_Implementation() void AMagicWandWeapon::FireWeaponAction_Implementation()
{ {
Super::FireWeaponAction_Implementation(); Super::FireWeaponAction_Implementation();
}
bool AMagicWandWeapon::UpgradeWeapon_Implementation()
{
if (!Super::UpgradeWeapon_Implementation()) return false;
switch (CurrentLevel)
{
case 1:
ProjectilesPerActivation++;
break;
case 2:
WeaponCooldown -= 0.2;
break;
case 3:
ProjectilesPerActivation++;
break;
case 4:
Damage += 10;
break;
case 5:
ProjectilesPerActivation++;
break;
case 6:
ProjectileTemplate->DamagableEnemies++;
break;
case 7:
Damage += 10;
break;
default:
return false;
}
ResetWeaponTimer();
return true;
}
void AMagicWandWeapon::FireProjectile()
{
if (ProjectileTemplate && OverlappedEnemies.Num() > 0) if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
{ {
float distance = 0.0f; float distance = 0.0f;
@ -50,6 +90,8 @@ void AMagicWandWeapon::FireWeaponAction_Implementation()
IProjectilable::Execute_SetTargetDirection(projectile, direction); IProjectilable::Execute_SetTargetDirection(projectile, direction);
} }
Super::FireProjectile();
} }
} }
} }

View File

@ -22,4 +22,9 @@ protected:
public: public:
virtual void FireWeaponAction_Implementation() override; virtual void FireWeaponAction_Implementation() override;
virtual bool UpgradeWeapon_Implementation() override;
protected:
virtual void FireProjectile() override;
}; };