Compare commits

..

No commits in common. "375ed69817e84eda771d5168a73fba922bf25dae" and "2834d89b5d7d4b31bf7e0f25dbb42f85d4045e43" have entirely different histories.

8 changed files with 49 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()); 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;
RemainingDamageableEnemies = ProjectileDataAsset->DamageableEnemies; RemainingDamagableEnemies = projectileDataAsset->DamagableEnemies;
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);
RemainingDamageableEnemies = 1; RemainingDamagableEnemies = 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);
RemainingDamageableEnemies--; RemainingDamagableEnemies--;
if (RemainingDamageableEnemies == 0) if (RemainingDamagableEnemies == 0)
{ {
ReturnProjectileToPool(); ReturnProjectileToPool();
} }

View File

@ -17,31 +17,33 @@ class VAMPIRES_API AProjectile : public AActor, public IProjectilable
{ {
GENERATED_BODY() GENERATED_BODY()
UPROPERTY(EditDefaultsOnly) public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<USphereComponent> SphereComponent = nullptr; TObjectPtr<USphereComponent> SphereComponent = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
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();
@ -52,9 +54,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;

View File

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

View File

@ -37,7 +37,7 @@ bool AGunWeapon::UpgradeWeapon_Implementation()
ProjectilesPerActivation++; ProjectilesPerActivation++;
break; break;
case 2: case 2:
ProjectileTemplate->DamageableEnemies += 2; ProjectileTemplate->DamagableEnemies += 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->DamageableEnemies += 2; ProjectileTemplate->DamagableEnemies += 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->DamageableEnemies += 2; ProjectileTemplate->DamagableEnemies += 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());

View File

@ -42,7 +42,7 @@ bool AKnifeWeapon::UpgradeWeapon_Implementation()
ProjectilesPerActivation++; ProjectilesPerActivation++;
break; break;
case 4: case 4:
ProjectileTemplate->DamageableEnemies++; ProjectileTemplate->DamagableEnemies++;
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->DamageableEnemies++; ProjectileTemplate->DamagableEnemies++;
break; break;
default: default:
return false; return false;

View File

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

View File

@ -8,10 +8,14 @@
void UStarterWeaponButtonDataObject::SetData(AWeapon* Weapon, UUserWidget* parent) void UStarterWeaponButtonDataObject::SetData(AWeapon* Weapon, UUserWidget* parent)
{ {
WeaponName = Weapon->GetWeaponName(); WeaponName = Weapon->GetWeaponName();
Description = Weapon->GetDescription();
WeaponIcon = Weapon->GetIcon(); WeaponIcon = Weapon->GetIcon();
WeaponInstance = Weapon; WeaponInstance = Weapon;
Parent = parent; Parent = parent;
if (Weapon->GetUpgradeDescriptions().Num() > Weapon->GetWeaponLevel())
{
Description = Weapon->GetUpgradeDescriptions()[Weapon->GetWeaponLevel()];
}
} }
void UStarterWeaponButtonDataObject::SetData(TSubclassOf<AWeapon> Weapon, UUserWidget* parent) void UStarterWeaponButtonDataObject::SetData(TSubclassOf<AWeapon> Weapon, UUserWidget* parent)
@ -19,7 +23,6 @@ void UStarterWeaponButtonDataObject::SetData(TSubclassOf<AWeapon> Weapon, UUserW
if (AWeapon* tempWeapon = NewObject<AWeapon>(this, Weapon)) if (AWeapon* tempWeapon = NewObject<AWeapon>(this, Weapon))
{ {
SetData(tempWeapon, parent); SetData(tempWeapon, parent);
WeaponTemplate = Weapon;
} }
} }