Add random pickups

This commit is contained in:
baz 2025-08-16 02:17:31 +01:00
parent af60880d17
commit c50d32c3bd
15 changed files with 56 additions and 16 deletions

BIN
Content/Enemy/DA_Enemy.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Materials/M_EXPGlow.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Materials/M_EXPGlowBlue.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Materials/M_EXPGlowGreen.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Materials/M_EXPGlowRed.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Meshes/SM_EXP.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Meshes/SM_EXPBlue.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Meshes/SM_EXPGreen.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Meshes/SM_EXPRed.uasset (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
Content/Pickups/EXP/DA_GreenEXPPickup.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Pickups/EXP/DA_RedEXPPickup.uasset (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -62,7 +62,7 @@ void AEnemyCharacter::OnDamaged(FDamageInfo DamageInfo)
void AEnemyCharacter::OnDeath(FDamageInfo DamageInfo) void AEnemyCharacter::OnDeath(FDamageInfo DamageInfo)
{ {
if (PickupTemplate) if (PickupArray.Num() > 0)
{ {
AGameModeBase* Gamemode = UGameplayStatics::GetGameMode(GetWorld()); AGameModeBase* Gamemode = UGameplayStatics::GetGameMode(GetWorld());
if (UKismetSystemLibrary::DoesImplementInterface(Gamemode, UPools::StaticClass())) if (UKismetSystemLibrary::DoesImplementInterface(Gamemode, UPools::StaticClass()))
@ -75,7 +75,20 @@ void AEnemyCharacter::OnDeath(FDamageInfo DamageInfo)
{ {
FVector PickupLocation = GetActorLocation(); FVector PickupLocation = GetActorLocation();
Pickup->SetActorLocation(PickupLocation); Pickup->SetActorLocation(PickupLocation);
IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupTemplate, PickupLocation);
int32 Rand = FMath::Rand() % 100;
if (Rand < 60 && PickupArray[0])
{
IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[0], PickupLocation);
}
else if (Rand < 90 && PickupArray[1])
{
IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[1], PickupLocation);
}
else if (PickupArray[2])
{
IPickupable::Execute_LoadDataFromDataAsset(Pickup, PickupArray[2], PickupLocation);
}
} }
} }
} }
@ -98,11 +111,14 @@ void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* Enem
{ {
StaticMeshComponent->SetStaticMesh(EnemyDataAsset->StaticMesh); StaticMeshComponent->SetStaticMesh(EnemyDataAsset->StaticMesh);
BehaviorTree = EnemyDataAsset->BehaviorTree; BehaviorTree = EnemyDataAsset->BehaviorTree;
PickupTemplate = EnemyDataAsset->PickupDataAsset;
OnDamagedSound = EnemyDataAsset->OnDamagedSoundBase; OnDamagedSound = EnemyDataAsset->OnDamagedSoundBase;
OnDeathSound = EnemyDataAsset->OnDeathSoundBase; OnDeathSound = EnemyDataAsset->OnDeathSoundBase;
OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem; OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem;
OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem; OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem;
PickupArray.Add(EnemyDataAsset->CommonPickupDataAsset);
PickupArray.Add(EnemyDataAsset->UncommonPickupDataAsset);
PickupArray.Add(EnemyDataAsset->RarePickupDataAsset);
} }
} }
@ -110,7 +126,7 @@ void AEnemyCharacter::ResetData_Implementation()
{ {
StaticMeshComponent->SetStaticMesh(nullptr); StaticMeshComponent->SetStaticMesh(nullptr);
BehaviorTree = nullptr; BehaviorTree = nullptr;
PickupTemplate = nullptr; PickupArray.Empty();
OnDamagedSound = nullptr; OnDamagedSound = nullptr;
OnDeathSound = nullptr; OnDeathSound = nullptr;
OnDamagedNiagaraSystem = nullptr; OnDamagedNiagaraSystem = nullptr;

View File

@ -42,7 +42,7 @@ private:
TObjectPtr<UObjectPoolComponent> ObjectPoolComponent = nullptr; TObjectPtr<UObjectPoolComponent> ObjectPoolComponent = nullptr;
UPROPERTY() UPROPERTY()
TObjectPtr<UPickupDataAsset> PickupTemplate = nullptr; TArray<TObjectPtr<UPickupDataAsset>> PickupArray;
TArray<TObjectPtr<AActor>> Player; TArray<TObjectPtr<AActor>> Player;

View File

@ -26,7 +26,13 @@ public:
TObjectPtr<UBehaviorTree> BehaviorTree = nullptr; TObjectPtr<UBehaviorTree> BehaviorTree = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
TObjectPtr<UPickupDataAsset> PickupDataAsset = nullptr; TObjectPtr<UPickupDataAsset> CommonPickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UPickupDataAsset> UncommonPickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly)
TObjectPtr<UPickupDataAsset> RarePickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr; TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr;