diff --git a/EndlessVendetta/EndlessVendetta.uproject b/EndlessVendetta/EndlessVendetta.uproject index 4717d351..8aea7a6c 100644 --- a/EndlessVendetta/EndlessVendetta.uproject +++ b/EndlessVendetta/EndlessVendetta.uproject @@ -9,7 +9,8 @@ "Type": "Runtime", "LoadingPhase": "Default", "AdditionalDependencies": [ - "Engine" + "Engine", + "AIModule" ] } ], diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp index c6255c57..bbba7bcd 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp @@ -3,12 +3,38 @@ #include "EndlessVendettaGameMode.h" #include "EndlessVendettaCharacter.h" #include "UObject/ConstructorHelpers.h" +#include "EndlessVendetta/AI/EnemyCharacter.h" +#include "EndlessVendetta/AI/AIControlHub.h" +#include "Kismet/GameplayStatics.h" +#include "Engine/DamageEvents.h" -AEndlessVendettaGameMode::AEndlessVendettaGameMode() - : Super() +AEndlessVendettaGameMode::AEndlessVendettaGameMode() : Super() { // set default pawn class to our Blueprinted character static ConstructorHelpers::FClassFinder PlayerPawnClassFinder(TEXT("/Game/FirstPerson/Blueprints/BP_FirstPersonCharacter")); DefaultPawnClass = PlayerPawnClassFinder.Class; } + +void AEndlessVendettaGameMode::KillAllEnemies() +{ + TArray EnemyCharacters; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), AEnemyCharacter::StaticClass(), EnemyCharacters); + for (AActor* EnemyActor : EnemyCharacters) + { + AEnemyCharacter* EnemyCharacter = Cast(EnemyActor); + EnemyCharacter->TakeDamage(EnemyCharacter->MaxHealth, FDamageEvent(), GetWorld()->GetFirstPlayerController(), GetWorld()->GetFirstPlayerController()->GetOwner()); + } +} + +void AEndlessVendettaGameMode::SetLocalAIAlertLevel(int NewAlertLevel) +{ + TArray AIControlHubActors; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), AAIControlHub::StaticClass(), AIControlHubActors); + for (AActor* AIControlHubActor : AIControlHubActors) + { + AAIControlHub* AIControlHub = Cast(AIControlHubActor); + AIControlHub->SetPlayerLastKnownLocation(); + AIControlHub->SetAlertLevel(NewAlertLevel); + } +} diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h index 97d6b063..420ab589 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h @@ -13,7 +13,10 @@ class AEndlessVendettaGameMode : public AGameModeBase public: AEndlessVendettaGameMode(); + + UFUNCTION(Exec, Category = ExecFunctions) + void KillAllEnemies(); + + UFUNCTION(Exec, Category = ExecFunctions) + void SetLocalAIAlertLevel(int NewAlertLevel); }; - - -