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());
|
SetActorLocation(UGameplayStatics::GetPlayerController(GetWorld(), 0)->GetCharacter()->GetActorLocation());
|
||||||
SetActorRotation(FRotator(0, 0, 0));
|
SetActorRotation(FRotator(0, 0, 0));
|
||||||
TargetDirection = direction;
|
TargetDirection = Direction;
|
||||||
ProjectileMovement->SetVelocityInLocalSpace(TargetDirection * ProjectileSpeed);
|
ProjectileMovement->SetVelocityInLocalSpace(TargetDirection * ProjectileSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AProjectile::LoadDataFromDataAsset_Implementation(UProjectileDataAsset* projectileDataAsset)
|
void AProjectile::LoadDataFromDataAsset_Implementation(UProjectileDataAsset* ProjectileDataAsset)
|
||||||
{
|
{
|
||||||
ProjectileSpeed = projectileDataAsset->ProjectileSpeed;
|
ProjectileSpeed = ProjectileDataAsset->ProjectileSpeed;
|
||||||
StaticMeshComponent->SetStaticMesh(projectileDataAsset->StaticMesh);
|
StaticMeshComponent->SetStaticMesh(ProjectileDataAsset->StaticMesh);
|
||||||
ProjectileSpeed = projectileDataAsset->ProjectileSpeed;
|
ProjectileSpeed = ProjectileDataAsset->ProjectileSpeed;
|
||||||
ProjectileMovement->InitialSpeed = ProjectileSpeed;
|
ProjectileMovement->InitialSpeed = ProjectileSpeed;
|
||||||
ProjectileMovement->MaxSpeed = ProjectileSpeed;
|
ProjectileMovement->MaxSpeed = ProjectileSpeed;
|
||||||
RemainingDamagableEnemies = projectileDataAsset->DamagableEnemies;
|
RemainingDamageableEnemies = ProjectileDataAsset->DamageableEnemies;
|
||||||
NiagaraRibbonComponent->SetAsset(projectileDataAsset->NiagaraRibbonSystem);
|
NiagaraRibbonComponent->SetAsset(ProjectileDataAsset->NiagaraRibbonSystem);
|
||||||
NiagaraRibbonComponent->ActivateSystem();
|
NiagaraRibbonComponent->ActivateSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ void AProjectile::ResetData_Implementation()
|
|||||||
{
|
{
|
||||||
ProjectileSpeed = NULL;
|
ProjectileSpeed = NULL;
|
||||||
StaticMeshComponent->SetStaticMesh(nullptr);
|
StaticMeshComponent->SetStaticMesh(nullptr);
|
||||||
RemainingDamagableEnemies = 1;
|
RemainingDamageableEnemies = 1;
|
||||||
NiagaraRibbonComponent->DeactivateImmediate();
|
NiagaraRibbonComponent->DeactivateImmediate();
|
||||||
NiagaraRibbonComponent->SetAsset(nullptr);
|
NiagaraRibbonComponent->SetAsset(nullptr);
|
||||||
}
|
}
|
||||||
@ -112,9 +112,9 @@ void AProjectile::OnProjectileBeginOverlap(UPrimitiveComponent* OverlappedCompon
|
|||||||
AProjectileWeapon* ownerWeapon = Cast<AProjectileWeapon>(GetOwner());
|
AProjectileWeapon* ownerWeapon = Cast<AProjectileWeapon>(GetOwner());
|
||||||
EnemyHealthComponent->TakeDamage(Enemy, ownerWeapon->GetDamage(), nullptr, ownerController, this);
|
EnemyHealthComponent->TakeDamage(Enemy, ownerWeapon->GetDamage(), nullptr, ownerController, this);
|
||||||
|
|
||||||
RemainingDamagableEnemies--;
|
RemainingDamageableEnemies--;
|
||||||
|
|
||||||
if (RemainingDamagableEnemies == 0)
|
if (RemainingDamageableEnemies == 0)
|
||||||
{
|
{
|
||||||
ReturnProjectileToPool();
|
ReturnProjectileToPool();
|
||||||
}
|
}
|
||||||
|
@ -17,33 +17,31 @@ class VAMPIRES_API AProjectile : public AActor, public IProjectilable
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
UPROPERTY(EditDefaultsOnly)
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
|
||||||
TObjectPtr<USphereComponent> SphereComponent = nullptr;
|
TObjectPtr<USphereComponent> SphereComponent = nullptr;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TObjectPtr<UProjectileMovementComponent> ProjectileMovement = nullptr;
|
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;
|
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
|
// Sets default values for this actor's properties
|
||||||
AProjectile();
|
AProjectile();
|
||||||
|
|
||||||
@ -54,9 +52,9 @@ protected:
|
|||||||
public:
|
public:
|
||||||
virtual void SetActorHiddenInGame(bool bNewHidden) override;
|
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;
|
virtual void ResetData_Implementation() override;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
TObjectPtr<UStaticMesh> StaticMesh;
|
TObjectPtr<UStaticMesh> StaticMesh;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere)
|
UPROPERTY(EditAnywhere)
|
||||||
int DamagableEnemies = 1;
|
int DamageableEnemies = 1;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere)
|
UPROPERTY(EditAnywhere)
|
||||||
TObjectPtr<UNiagaraSystem> NiagaraRibbonSystem = nullptr;
|
TObjectPtr<UNiagaraSystem> NiagaraRibbonSystem = nullptr;
|
||||||
|
@ -37,7 +37,7 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
|
|||||||
ProjectilesPerActivation++;
|
ProjectilesPerActivation++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
ProjectileTemplate->DamagableEnemies += 2;
|
ProjectileTemplate->DamageableEnemies += 2;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
ProjectilesPerActivation++;
|
ProjectilesPerActivation++;
|
||||||
@ -46,14 +46,14 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
|
|||||||
Damage += 5.0f;
|
Damage += 5.0f;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
ProjectileTemplate->DamagableEnemies += 2;
|
ProjectileTemplate->DamageableEnemies += 2;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
Damage += 5.0f;
|
Damage += 5.0f;
|
||||||
ProjectileTemplate->ProjectileSpeed *= 1.50f;
|
ProjectileTemplate->ProjectileSpeed *= 1.50f;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
ProjectileTemplate->DamagableEnemies += 2;
|
ProjectileTemplate->DamageableEnemies += 2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -65,7 +65,7 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
|
|||||||
|
|
||||||
void AGunWeapon::FireProjectile()
|
void AGunWeapon::FireProjectile()
|
||||||
{
|
{
|
||||||
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
|
if (ProjectileTemplate && OverlappedEnemies.Num() > 0)
|
||||||
{
|
{
|
||||||
AGameModeBase* gamemode = UGameplayStatics::GetGameMode(GetWorld());
|
AGameModeBase* gamemode = UGameplayStatics::GetGameMode(GetWorld());
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ bool AKnifeWeapon::UpgradeWeapon_Implementation()
|
|||||||
ProjectilesPerActivation++;
|
ProjectilesPerActivation++;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
ProjectileTemplate->DamagableEnemies++;
|
ProjectileTemplate->DamageableEnemies++;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
ProjectilesPerActivation++;
|
ProjectilesPerActivation++;
|
||||||
@ -52,7 +52,7 @@ bool AKnifeWeapon::UpgradeWeapon_Implementation()
|
|||||||
Damage += 5.0f;
|
Damage += 5.0f;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
ProjectileTemplate->DamagableEnemies++;
|
ProjectileTemplate->DamageableEnemies++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -47,7 +47,7 @@ bool AMagicWandWeapon::UpgradeWeapon_Implementation()
|
|||||||
ProjectilesPerActivation++;
|
ProjectilesPerActivation++;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
ProjectileTemplate->DamagableEnemies++;
|
ProjectileTemplate->DamageableEnemies++;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
Damage += 10;
|
Damage += 10;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user