Compare commits

..

No commits in common. "488387767b5015e2873008a36a6eae1a43d679a6" and "78ebf0624ff87cc0ce88585c659eecfc2c690750" have entirely different histories.

6 changed files with 31 additions and 86 deletions

Binary file not shown.

Binary file not shown.

View File

@ -23,6 +23,33 @@ void AFireWandWeapon::BeginPlay()
void AFireWandWeapon::FireWeaponAction_Implementation()
{
Super::FireWeaponAction_Implementation();
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
{
AGameModeBase* gamemode = UGameplayStatics::GetGameMode(GetWorld());
if (UKismetSystemLibrary::DoesImplementInterface(gamemode, UPools::StaticClass()))
{
if (AObjectPoolManager* objectPoolManager = IPools::Execute_GetProjectileObjectPoolManager(gamemode))
{
AActor* projectile = objectPoolManager->GetObject();
if (UKismetSystemLibrary::DoesImplementInterface(projectile, UProjectilable::StaticClass()))
{
IProjectilable::Execute_LoadDataFromDataAsset(projectile, ProjectileTemplate);
projectile->SetOwner(this);
AActor* target = OverlappedEnemies[FMath::RandRange(0, OverlappedEnemies.Num() - 1)];
FVector direction = UKismetMathLibrary::GetDirectionUnitVector(
GetActorLocation(), target->GetActorLocation());
direction.Z = 0.0;
direction.Normalize();
IProjectilable::Execute_SetTargetDirection(projectile, direction);
}
}
}
}
}
bool AFireWandWeapon::UpgradeWeapon_Implementation()
@ -62,35 +89,3 @@ bool AFireWandWeapon::UpgradeWeapon_Implementation()
ResetWeaponTimer();
return true;
}
void AFireWandWeapon::FireProjectile()
{
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
{
AGameModeBase* gamemode = UGameplayStatics::GetGameMode(GetWorld());
if (UKismetSystemLibrary::DoesImplementInterface(gamemode, UPools::StaticClass()))
{
if (AObjectPoolManager* objectPoolManager = IPools::Execute_GetProjectileObjectPoolManager(gamemode))
{
AActor* projectile = objectPoolManager->GetObject();
if (UKismetSystemLibrary::DoesImplementInterface(projectile, UProjectilable::StaticClass()))
{
IProjectilable::Execute_LoadDataFromDataAsset(projectile, ProjectileTemplate);
projectile->SetOwner(this);
AActor* target = OverlappedEnemies[FMath::RandRange(0, OverlappedEnemies.Num() - 1)];
FVector direction = UKismetMathLibrary::GetDirectionUnitVector(
GetActorLocation(), target->GetActorLocation());
direction.Z = 0.0;
direction.Normalize();
IProjectilable::Execute_SetTargetDirection(projectile, direction);
}
Super::FireProjectile();
}
}
}
}

View File

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

View File

@ -8,7 +8,6 @@
#include "Kismet/KismetMathLibrary.h"
#include "vampires/ObjectPoolManager.h"
#include "vampires/Projectile.h"
#include "vampires/ProjectileDataAsset.h"
#include "vampires/Interfaces/Pools.h"
AMagicWandWeapon::AMagicWandWeapon()
@ -23,46 +22,7 @@ void AMagicWandWeapon::BeginPlay()
void AMagicWandWeapon::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)
{
float distance = 0.0f;
@ -90,8 +50,6 @@ void AMagicWandWeapon::FireProjectile()
IProjectilable::Execute_SetTargetDirection(projectile, direction);
}
Super::FireProjectile();
}
}
}

View File

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