From 02832aee0e62de0130496b3790e439a2fe0db526 Mon Sep 17 00:00:00 2001 From: PHILIP White Date: Mon, 27 Feb 2023 20:01:02 +0000 Subject: [PATCH] Updated TurnBasedCombat for Event Delegation --- .../TurnBasedCombatV2/TurnBaseCombatV2.cpp | 12 ++++++------ .../TurnBasedCombatV2/TurnBaseCombatV2.h | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp index 511fcdc..fa527c2 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -18,7 +18,6 @@ ATurnBaseCombatV2::ATurnBaseCombatV2() { if (HUDWidget == nullptr) { - // Load the HUD widget from the specified path static ConstructorHelpers::FClassFinder HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI")); HUDWidget = HUDWidgetClass.Class; static ConstructorHelpers::FClassFinder StatusEffectThornsClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_Thorns")); @@ -71,7 +70,7 @@ void ATurnBaseCombatV2::EndCombat() { StatusEffect->OnExpiry(PlayerActor); } - //Remove the HUD from the viewport + HUD->RemoveFromParent(); APawn* PlayerPawn = Cast(GetWorld()->GetFirstPlayerController()->GetPawn()); PlayerPawn->bUseControllerRotationYaw = true; @@ -143,7 +142,6 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo) if (!IsValidCombo(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++) { if (Combo[i] == 'P') @@ -183,7 +181,6 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo) if (GunEffect) { - //Get Static Mesh Location on the player actor const UStaticMeshComponent* GunComponent = Cast(PlayerActor->GetComponentsByTag(UPrimitiveComponent::StaticClass(), FName("Gun"))[0]); const FVector GunLocationOffset = GunComponent->GetSocketTransform("Muzzle").TransformPosition(FVector(-100, 0, 0)); UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), GunEffect, GunLocationOffset, PlayerActor->GetActorRotation()); @@ -200,14 +197,17 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo) // Player Turn DamageEnemy(*ValidCombos.Find(Combo)); GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo))); + OnPlayerTurn.Broadcast(PlayerActor, EnemyActor); break; case false: // Enemy Turn DamagePlayer(*ValidCombos.Find(Combo)); GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo))); + OnEnemyTurn.Broadcast(EnemyActor, PlayerActor); break; } - //End Combat if either the player or enemy is dead + + //Ends Combat if either the player or enemy is dead if (*EnemyHealth <= 0) { EndCombat(); @@ -277,7 +277,7 @@ void ATurnBaseCombatV2::SwitchTurn() //bIsPlayerTurn = !bIsPlayerTurn; TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn")); ToggleButtons(); - //wait for 2 seconds + FTimerHandle UnusedHandle; GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombatV2::EnemyTurn, 2.0f, false); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h index 1533986..4a339a2 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -99,6 +99,11 @@ public: UFUNCTION(BlueprintCallable) void WKeyPressed(); + DECLARE_EVENT_TwoParams(ATurnBaseCombatV2, FOnPlayerTurn, AActor*, AActor*); + DECLARE_EVENT_TwoParams(ATurnBaseCombatV2, FOnEnemyTurn, AActor*, AActor*); + FOnPlayerTurn OnPlayerTurn; + FOnEnemyTurn OnEnemyTurn; + protected: virtual void BeginPlay() override; void ExecuteCast(FString Combo);