From 02e231876163d10575f593e363ca0de5377ce97b Mon Sep 17 00:00:00 2001 From: baz Date: Mon, 15 Sep 2025 23:08:40 +0100 Subject: [PATCH] Add support for loading different health and speed values from enemy data asset --- Source/vampires/EnemyCharacter.cpp | 5 +++++ Source/vampires/EnemyDataAsset.h | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Source/vampires/EnemyCharacter.cpp b/Source/vampires/EnemyCharacter.cpp index 1e54913..00775d7 100644 --- a/Source/vampires/EnemyCharacter.cpp +++ b/Source/vampires/EnemyCharacter.cpp @@ -14,6 +14,7 @@ #include "Components/SphereComponent.h" #include "Kismet/GameplayStatics.h" #include "NiagaraFunctionLibrary.h" +#include "GameFramework/CharacterMovementComponent.h" AEnemyCharacter::AEnemyCharacter(const FObjectInitializer& ObjectInitializer) { @@ -115,6 +116,8 @@ void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* Enem OnDeathSound = EnemyDataAsset->OnDeathSoundBase; OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem; OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem; + HealthComponent->SetMaxHealth(EnemyDataAsset->MaxHealth); + GetCharacterMovement()->MaxWalkSpeed = EnemyDataAsset->MovementSpeed; PickupArray.Add(EnemyDataAsset->CommonPickupDataAsset); PickupArray.Add(EnemyDataAsset->UncommonPickupDataAsset); @@ -131,6 +134,8 @@ void AEnemyCharacter::ResetData_Implementation() OnDeathSound = nullptr; OnDamagedNiagaraSystem = nullptr; OnDeathNiagaraSystem = nullptr; + HealthComponent->SetMaxHealth(100.0f); + GetCharacterMovement()->MaxWalkSpeed = 300.0f; } float AEnemyCharacter::GetCapsuleRadius_Implementation() diff --git a/Source/vampires/EnemyDataAsset.h b/Source/vampires/EnemyDataAsset.h index 6ab9635..d6e7e44 100644 --- a/Source/vampires/EnemyDataAsset.h +++ b/Source/vampires/EnemyDataAsset.h @@ -19,30 +19,36 @@ class VAMPIRES_API UEnemyDataAsset : public UDataAsset GENERATED_BODY() public: - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Mesh") TObjectPtr StaticMesh; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "AI") TObjectPtr BehaviorTree = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Pickups") TObjectPtr CommonPickupDataAsset = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Pickups") TObjectPtr UncommonPickupDataAsset = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Pickups") TObjectPtr RarePickupDataAsset = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Sounds") TObjectPtr OnDamagedSoundBase = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Sounds") TObjectPtr OnDeathSoundBase = nullptr; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Particles") TObjectPtr OnDamagedNiagaraSystem; - UPROPERTY(EditDefaultsOnly) + UPROPERTY(EditDefaultsOnly, Category = "Particles") TObjectPtr OnDeathNiagaraSystem; + + UPROPERTY(EditDefaultsOnly, Category = "Properties") + float MaxHealth = 100.0f; + + UPROPERTY(EditDefaultsOnly, Category = "Properties") + float MovementSpeed = 300.0f; };