Add AttackToken methods to EnemyAIController
This commit is contained in:
parent
ca07abb131
commit
0afcd945ce
|
@ -3,6 +3,8 @@
|
||||||
#include "EnemyAIController.h"
|
#include "EnemyAIController.h"
|
||||||
#include "Engine/EngineTypes.h"
|
#include "Engine/EngineTypes.h"
|
||||||
#include "Components/CapsuleComponent.h"
|
#include "Components/CapsuleComponent.h"
|
||||||
|
#include "NakatomiGameInstance.h"
|
||||||
|
#include <Kismet/GameplayStatics.h>
|
||||||
|
|
||||||
AEnemyAIController::AEnemyAIController(const FObjectInitializer& object_initializer)
|
AEnemyAIController::AEnemyAIController(const FObjectInitializer& object_initializer)
|
||||||
{
|
{
|
||||||
|
@ -135,3 +137,34 @@ void AEnemyAIController::OnPerceptionUpdated(const TArray<AActor*>& actors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AEnemyAIController::TryObtainAttackToken()
|
||||||
|
{
|
||||||
|
if (HasAttackToken)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (auto gameInstance = Cast<UNakatomiGameInstance>(UGameplayStatics::GetGameInstance(GetWorld())))
|
||||||
|
{
|
||||||
|
HasAttackToken = gameInstance->GetAIAttackTokenManager()->RequestToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AEnemyAIController::TryReleaseAttackToken()
|
||||||
|
{
|
||||||
|
if (HasAttackToken)
|
||||||
|
{
|
||||||
|
if (auto gameInstance = Cast<UNakatomiGameInstance>(UGameplayStatics::GetGameInstance(GetWorld())))
|
||||||
|
{
|
||||||
|
HasAttackToken = gameInstance->GetAIAttackTokenManager()->ReleaseToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AEnemyAIController::GetHasAttackToken()
|
||||||
|
{
|
||||||
|
return HasAttackToken;
|
||||||
|
}
|
||||||
|
|
|
@ -30,6 +30,8 @@ private:
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (AllowPrivateAccess = "true"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (AllowPrivateAccess = "true"))
|
||||||
UAIPerceptionComponent* AIPerception;
|
UAIPerceptionComponent* AIPerception;
|
||||||
|
|
||||||
|
bool HasAttackToken = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AEnemyAIController(const FObjectInitializer& object_initializer);
|
AEnemyAIController(const FObjectInitializer& object_initializer);
|
||||||
|
|
||||||
|
@ -49,4 +51,13 @@ public:
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void OnPerceptionUpdated(const TArray<AActor*>& actors);
|
void OnPerceptionUpdated(const TArray<AActor*>& actors);
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
bool TryObtainAttackToken();
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void TryReleaseAttackToken();
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
bool GetHasAttackToken();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue