Updated TurnBasedCombat for Event Delegation
This commit is contained in:
parent
775f3b4945
commit
02832aee0e
@ -18,7 +18,6 @@ ATurnBaseCombatV2::ATurnBaseCombatV2()
|
|||||||
{
|
{
|
||||||
if (HUDWidget == nullptr)
|
if (HUDWidget == nullptr)
|
||||||
{
|
{
|
||||||
// Load the HUD widget from the specified path
|
|
||||||
static ConstructorHelpers::FClassFinder<UUserWidget> HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI"));
|
static ConstructorHelpers::FClassFinder<UUserWidget> HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI"));
|
||||||
HUDWidget = HUDWidgetClass.Class;
|
HUDWidget = HUDWidgetClass.Class;
|
||||||
static ConstructorHelpers::FClassFinder<UStatusEffect> StatusEffectThornsClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_Thorns"));
|
static ConstructorHelpers::FClassFinder<UStatusEffect> StatusEffectThornsClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_Thorns"));
|
||||||
@ -71,7 +70,7 @@ void ATurnBaseCombatV2::EndCombat()
|
|||||||
{
|
{
|
||||||
StatusEffect->OnExpiry(PlayerActor);
|
StatusEffect->OnExpiry(PlayerActor);
|
||||||
}
|
}
|
||||||
//Remove the HUD from the viewport
|
|
||||||
HUD->RemoveFromParent();
|
HUD->RemoveFromParent();
|
||||||
APawn* PlayerPawn = Cast<APawn>(GetWorld()->GetFirstPlayerController()->GetPawn());
|
APawn* PlayerPawn = Cast<APawn>(GetWorld()->GetFirstPlayerController()->GetPawn());
|
||||||
PlayerPawn->bUseControllerRotationYaw = true;
|
PlayerPawn->bUseControllerRotationYaw = true;
|
||||||
@ -143,7 +142,6 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
|||||||
if (!IsValidCombo(Combo))
|
if (!IsValidCombo(Combo))
|
||||||
{
|
{
|
||||||
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo"));
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo"));
|
||||||
//For each character in the current combo add back the resource
|
|
||||||
for (int i = 0; i < Combo.Len(); i++)
|
for (int i = 0; i < Combo.Len(); i++)
|
||||||
{
|
{
|
||||||
if (Combo[i] == 'P')
|
if (Combo[i] == 'P')
|
||||||
@ -183,7 +181,6 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
|||||||
|
|
||||||
if (GunEffect)
|
if (GunEffect)
|
||||||
{
|
{
|
||||||
//Get Static Mesh Location on the player actor
|
|
||||||
const UStaticMeshComponent* GunComponent = Cast<UStaticMeshComponent>(PlayerActor->GetComponentsByTag(UPrimitiveComponent::StaticClass(), FName("Gun"))[0]);
|
const UStaticMeshComponent* GunComponent = Cast<UStaticMeshComponent>(PlayerActor->GetComponentsByTag(UPrimitiveComponent::StaticClass(), FName("Gun"))[0]);
|
||||||
const FVector GunLocationOffset = GunComponent->GetSocketTransform("Muzzle").TransformPosition(FVector(-100, 0, 0));
|
const FVector GunLocationOffset = GunComponent->GetSocketTransform("Muzzle").TransformPosition(FVector(-100, 0, 0));
|
||||||
UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), GunEffect, GunLocationOffset, PlayerActor->GetActorRotation());
|
UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), GunEffect, GunLocationOffset, PlayerActor->GetActorRotation());
|
||||||
@ -200,14 +197,17 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
|||||||
// Player Turn
|
// Player Turn
|
||||||
DamageEnemy(*ValidCombos.Find(Combo));
|
DamageEnemy(*ValidCombos.Find(Combo));
|
||||||
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo)));
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo)));
|
||||||
|
OnPlayerTurn.Broadcast(PlayerActor, EnemyActor);
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
// Enemy Turn
|
// Enemy Turn
|
||||||
DamagePlayer(*ValidCombos.Find(Combo));
|
DamagePlayer(*ValidCombos.Find(Combo));
|
||||||
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo)));
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo)));
|
||||||
|
OnEnemyTurn.Broadcast(EnemyActor, PlayerActor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//End Combat if either the player or enemy is dead
|
|
||||||
|
//Ends Combat if either the player or enemy is dead
|
||||||
if (*EnemyHealth <= 0)
|
if (*EnemyHealth <= 0)
|
||||||
{
|
{
|
||||||
EndCombat();
|
EndCombat();
|
||||||
@ -277,7 +277,7 @@ void ATurnBaseCombatV2::SwitchTurn()
|
|||||||
//bIsPlayerTurn = !bIsPlayerTurn;
|
//bIsPlayerTurn = !bIsPlayerTurn;
|
||||||
TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn"));
|
TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn"));
|
||||||
ToggleButtons();
|
ToggleButtons();
|
||||||
//wait for 2 seconds
|
|
||||||
FTimerHandle UnusedHandle;
|
FTimerHandle UnusedHandle;
|
||||||
GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombatV2::EnemyTurn, 2.0f, false);
|
GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombatV2::EnemyTurn, 2.0f, false);
|
||||||
|
|
||||||
|
@ -99,6 +99,11 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void WKeyPressed();
|
void WKeyPressed();
|
||||||
|
|
||||||
|
DECLARE_EVENT_TwoParams(ATurnBaseCombatV2, FOnPlayerTurn, AActor*, AActor*);
|
||||||
|
DECLARE_EVENT_TwoParams(ATurnBaseCombatV2, FOnEnemyTurn, AActor*, AActor*);
|
||||||
|
FOnPlayerTurn OnPlayerTurn;
|
||||||
|
FOnEnemyTurn OnEnemyTurn;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
void ExecuteCast(FString Combo);
|
void ExecuteCast(FString Combo);
|
||||||
|
Loading…
Reference in New Issue
Block a user