Updated TurnBasedCombat for Event Delegation

This commit is contained in:
Philip W 2023-02-27 20:01:02 +00:00
parent 775f3b4945
commit 02832aee0e
2 changed files with 11 additions and 6 deletions

View File

@ -18,7 +18,6 @@ ATurnBaseCombatV2::ATurnBaseCombatV2()
{
if (HUDWidget == nullptr)
{
// Load the HUD widget from the specified path
static ConstructorHelpers::FClassFinder<UUserWidget> HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI"));
HUDWidget = HUDWidgetClass.Class;
static ConstructorHelpers::FClassFinder<UStatusEffect> 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<APawn>(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<UStaticMeshComponent>(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);

View File

@ -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);