Minor refactor to Projectile class

This commit is contained in:
baz 2025-07-25 23:45:12 +01:00
parent 31c3c4c981
commit 375ed69817
7 changed files with 42 additions and 44 deletions

Binary file not shown.

View File

@ -64,23 +64,23 @@ void AProjectile::SetActorHiddenInGame(bool bNewHidden)
}
}
void AProjectile::SetTargetDirection_Implementation(FVector direction)
void AProjectile::SetTargetDirection_Implementation(FVector Direction)
{
SetActorLocation(UGameplayStatics::GetPlayerController(GetWorld(), 0)->GetCharacter()->GetActorLocation());
SetActorRotation(FRotator(0, 0, 0));
TargetDirection = direction;
TargetDirection = Direction;
ProjectileMovement->SetVelocityInLocalSpace(TargetDirection * ProjectileSpeed);
}
void AProjectile::LoadDataFromDataAsset_Implementation(UProjectileDataAsset* projectileDataAsset)
void AProjectile::LoadDataFromDataAsset_Implementation(UProjectileDataAsset* ProjectileDataAsset)
{
ProjectileSpeed = projectileDataAsset->ProjectileSpeed;
StaticMeshComponent->SetStaticMesh(projectileDataAsset->StaticMesh);
ProjectileSpeed = projectileDataAsset->ProjectileSpeed;
ProjectileSpeed = ProjectileDataAsset->ProjectileSpeed;
StaticMeshComponent->SetStaticMesh(ProjectileDataAsset->StaticMesh);
ProjectileSpeed = ProjectileDataAsset->ProjectileSpeed;
ProjectileMovement->InitialSpeed = ProjectileSpeed;
ProjectileMovement->MaxSpeed = ProjectileSpeed;
RemainingDamagableEnemies = projectileDataAsset->DamagableEnemies;
NiagaraRibbonComponent->SetAsset(projectileDataAsset->NiagaraRibbonSystem);
RemainingDamageableEnemies = ProjectileDataAsset->DamageableEnemies;
NiagaraRibbonComponent->SetAsset(ProjectileDataAsset->NiagaraRibbonSystem);
NiagaraRibbonComponent->ActivateSystem();
}
@ -88,7 +88,7 @@ void AProjectile::ResetData_Implementation()
{
ProjectileSpeed = NULL;
StaticMeshComponent->SetStaticMesh(nullptr);
RemainingDamagableEnemies = 1;
RemainingDamageableEnemies = 1;
NiagaraRibbonComponent->DeactivateImmediate();
NiagaraRibbonComponent->SetAsset(nullptr);
}
@ -112,9 +112,9 @@ void AProjectile::OnProjectileBeginOverlap(UPrimitiveComponent* OverlappedCompon
AProjectileWeapon* ownerWeapon = Cast<AProjectileWeapon>(GetOwner());
EnemyHealthComponent->TakeDamage(Enemy, ownerWeapon->GetDamage(), nullptr, ownerController, this);
RemainingDamagableEnemies--;
RemainingDamageableEnemies--;
if (RemainingDamagableEnemies == 0)
if (RemainingDamageableEnemies == 0)
{
ReturnProjectileToPool();
}

View File

@ -17,33 +17,31 @@ class VAMPIRES_API AProjectile : public AActor, public IProjectilable
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UPROPERTY(EditDefaultsOnly)
TObjectPtr<USphereComponent> SphereComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UProjectileMovementComponent> ProjectileMovement = nullptr;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UNiagaraComponent> NiagaraRibbonComponent = nullptr;
UPROPERTY(EditDefaultsOnly)
float ProjectileSpeed = 500.0f;
UPROPERTY(EditDefaultsOnly)
int RemainingDamageableEnemies = 1;
UPROPERTY(EditDefaultsOnly)
float ProjectileLifespan = 15.0f;
FTimerHandle ProjectileLifetimeTimerHandle;
FVector TargetDirection = FVector::ZeroVector;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float ProjectileSpeed = 500.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int RemainingDamagableEnemies = 1;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<UNiagaraComponent> NiagaraRibbonComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
float ProjectileLifespan = 15.0f;
private:
FTimerHandle ProjectileLifetimeTimerHandle;
// Sets default values for this actor's properties
AProjectile();
@ -54,9 +52,9 @@ protected:
public:
virtual void SetActorHiddenInGame(bool bNewHidden) override;
virtual void SetTargetDirection_Implementation(FVector direction) override;
virtual void SetTargetDirection_Implementation(FVector Direction) override;
virtual void LoadDataFromDataAsset_Implementation(UProjectileDataAsset* projectileDataAsset) override;
virtual void LoadDataFromDataAsset_Implementation(UProjectileDataAsset* ProjectileDataAsset) override;
virtual void ResetData_Implementation() override;

View File

@ -23,7 +23,7 @@ public:
TObjectPtr<UStaticMesh> StaticMesh;
UPROPERTY(EditAnywhere)
int DamagableEnemies = 1;
int DamageableEnemies = 1;
UPROPERTY(EditAnywhere)
TObjectPtr<UNiagaraSystem> NiagaraRibbonSystem = nullptr;

View File

@ -37,7 +37,7 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
ProjectilesPerActivation++;
break;
case 2:
ProjectileTemplate->DamagableEnemies += 2;
ProjectileTemplate->DamageableEnemies += 2;
break;
case 3:
ProjectilesPerActivation++;
@ -46,14 +46,14 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
Damage += 5.0f;
break;
case 5:
ProjectileTemplate->DamagableEnemies += 2;
ProjectileTemplate->DamageableEnemies += 2;
break;
case 6:
Damage += 5.0f;
ProjectileTemplate->ProjectileSpeed *= 1.50f;
break;
case 7:
ProjectileTemplate->DamagableEnemies += 2;
ProjectileTemplate->DamageableEnemies += 2;
break;
default:
return false;
@ -65,7 +65,7 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
void AGunWeapon::FireProjectile()
{
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
{
AGameModeBase* gamemode = UGameplayStatics::GetGameMode(GetWorld());

View File

@ -42,7 +42,7 @@ bool AKnifeWeapon::UpgradeWeapon_Implementation()
ProjectilesPerActivation++;
break;
case 4:
ProjectileTemplate->DamagableEnemies++;
ProjectileTemplate->DamageableEnemies++;
break;
case 5:
ProjectilesPerActivation++;
@ -52,7 +52,7 @@ bool AKnifeWeapon::UpgradeWeapon_Implementation()
Damage += 5.0f;
break;
case 7:
ProjectileTemplate->DamagableEnemies++;
ProjectileTemplate->DamageableEnemies++;
break;
default:
return false;

View File

@ -47,7 +47,7 @@ bool AMagicWandWeapon::UpgradeWeapon_Implementation()
ProjectilesPerActivation++;
break;
case 6:
ProjectileTemplate->DamagableEnemies++;
ProjectileTemplate->DamageableEnemies++;
break;
case 7:
Damage += 10;