Minor refactor to Projectile class
This commit is contained in:
parent
31c3c4c981
commit
375ed69817
BIN
Content/Weapons/PhieraDerTuphello/BP_PhieraDerTuphelloWeapon.uasset
(Stored with Git LFS)
BIN
Content/Weapons/PhieraDerTuphello/BP_PhieraDerTuphelloWeapon.uasset
(Stored with Git LFS)
Binary file not shown.
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
FVector TargetDirection = FVector::ZeroVector;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ProjectileSpeed = 500.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
int RemainingDamagableEnemies = 1;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TObjectPtr<UNiagaraComponent> NiagaraRibbonComponent = nullptr;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
float ProjectileSpeed = 500.0f;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
int RemainingDamageableEnemies = 1;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
float ProjectileLifespan = 15.0f;
|
||||
|
||||
private:
|
||||
FTimerHandle ProjectileLifetimeTimerHandle;
|
||||
|
||||
FVector TargetDirection = FVector::ZeroVector;
|
||||
|
||||
// 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;
|
||||
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
TObjectPtr<UStaticMesh> StaticMesh;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
int DamagableEnemies = 1;
|
||||
int DamageableEnemies = 1;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TObjectPtr<UNiagaraSystem> NiagaraRibbonSystem = nullptr;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -47,7 +47,7 @@ bool AMagicWandWeapon::UpgradeWeapon_Implementation()
|
||||
ProjectilesPerActivation++;
|
||||
break;
|
||||
case 6:
|
||||
ProjectileTemplate->DamagableEnemies++;
|
||||
ProjectileTemplate->DamageableEnemies++;
|
||||
break;
|
||||
case 7:
|
||||
Damage += 10;
|
||||
|
Loading…
x
Reference in New Issue
Block a user