From aa78522127e3011a835a1e8b3b1a139b3b3fa31e Mon Sep 17 00:00:00 2001 From: PHILIP White Date: Tue, 9 May 2023 02:55:31 +0100 Subject: [PATCH] Updated Combat UI for User Experience Improvements Hide buttons until they are available to use and disable resource buttons if there isn't any resources left --- .../TurnBasedCombatV2/TurnBaseCombatV2.cpp | 68 ++++++++----------- .../TurnBasedCombatV2/TurnBaseCombatV2.h | 4 +- 2 files changed, 31 insertions(+), 41 deletions(-) diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp index c2f00a4..84ecc68 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -48,7 +48,7 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy, bool bWasShot) bIsInCombat = true; UBlackboardComponent* EnemyBlackboard = Cast(Enemy->GetInstigatorController())->GetBlackboardComponent(); Cast(PlayerActor->GetComponentByClass(UQuestSystem::StaticClass()))->QuestWidgetInstance->SetVisibility(ESlateVisibility::Hidden); - + //Disable Character Movement APlayerController* PlayerController = GetWorld()->GetFirstPlayerController(); PlayerController->SetIgnoreMoveInput(true); @@ -419,7 +419,7 @@ void ATurnBaseCombatV2::SwitchTurn() //TurnIndicatorTextBlock->SetText(FText::FromString(bIsPlayerTurn ? "Enemy Turn" : "Player Turn")); //bIsPlayerTurn = !bIsPlayerTurn; TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn")); - ToggleButtons(); + DisableButtons(); FTimerHandle UnusedHandle; GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombatV2::EnemyTurn, 2.0f, false); @@ -539,26 +539,6 @@ void ATurnBaseCombatV2::BackspaceButtonOnClick() RevertActionPoints(); UpdateActionPoints(); UpdateResourceBars(); - // ReuseActionPoint(); - // if (CurrentComboString.Right(1) == "P") - // { - // ProbertiumResource += 1; - // } - // else if (CurrentComboString.Right(1) == "E") - // { - // EisResource += 1; - // } - // else if (CurrentComboString.Right(1) == "A") - // { - // AzosResource += 1; - // } - // else if (CurrentComboString.Right(1) == "I") - // { - // IroquoidResource += 1; - // } - // CurrentComboString.RemoveAt(CurrentComboString.Len() - 1); - // UpdateComboString(CurrentComboString); - // UpdateResourceBars(); } void ATurnBaseCombatV2::RunButtonOnClick() @@ -584,7 +564,18 @@ void ATurnBaseCombatV2::UpdateComboString(FString NewCombo) const CurrentComboTextBlock1->SetText(FText::FromString("?")); CurrentComboTextBlock2->SetText(FText::FromString("?")); - if (IsValidCombo(NewCombo)) CurrentComboTextBlock->SetText(FText::FromString(NewCombo)); + if (NewCombo.Len() > 0) BackspaceButton->SetVisibility(ESlateVisibility::Visible); + else BackspaceButton->SetVisibility(ESlateVisibility::Hidden); + + if (IsValidCombo(NewCombo)) + { + CurrentComboTextBlock->SetText(FText::FromString(NewCombo)); + CastButton->SetVisibility(ESlateVisibility::Visible); + } + else + { + CastButton->SetVisibility(ESlateVisibility::Hidden); + } if (NewCombo.Len() == 1) { CurrentComboTextBlock1->SetText(FText::FromString(NewCombo)); @@ -628,17 +619,7 @@ void ATurnBaseCombatV2::UpdateResourceBars() const EisResourceBar->SetPercent(EisResource / 10.0f); AzosResourceBar->SetPercent(AzosResource / 10.0f); IroquoidResourceBar->SetPercent(IroquoidResource / 10.0f); -} - -void ATurnBaseCombatV2::ToggleButtons() const -{ - PButton->SetIsEnabled(!PButton->GetIsEnabled()); - EButton->SetIsEnabled(!EButton->GetIsEnabled()); - AButton->SetIsEnabled(!AButton->GetIsEnabled()); - IButton->SetIsEnabled(!IButton->GetIsEnabled()); - BackspaceButton->SetIsEnabled(!BackspaceButton->GetIsEnabled()); - CastButton->SetIsEnabled(!CastButton->GetIsEnabled()); - RunButton->SetIsEnabled(!RunButton->GetIsEnabled()); + ToggleButtonIfResourceAvailable(); } void ATurnBaseCombatV2::DisableButtons() const @@ -654,10 +635,7 @@ void ATurnBaseCombatV2::DisableButtons() const void ATurnBaseCombatV2::EnableButtons() const { - PButton->SetIsEnabled(true); - EButton->SetIsEnabled(true); - AButton->SetIsEnabled(true); - IButton->SetIsEnabled(true); + ToggleButtonIfResourceAvailable(); BackspaceButton->SetIsEnabled(true); CastButton->SetIsEnabled(true); RunButton->SetIsEnabled(true); @@ -668,5 +646,17 @@ void ATurnBaseCombatV2::EnemyTurn() DamagePlayer(10); OnEnemyTurn.Broadcast(EnemyActor, PlayerActor); TurnIndicatorTextBlock->SetText(FText::FromString("Player Turn")); - ToggleButtons(); + EnableButtons(); +} + +void ATurnBaseCombatV2::ToggleButtonIfResourceAvailable() const +{ + if (ProbertiumResource >= 1) PButton->SetIsEnabled(true); + else PButton->SetIsEnabled(false); + if (EisResource >= 1) EButton->SetIsEnabled(true); + else EButton->SetIsEnabled(false); + if (AzosResource >= 1) AButton->SetIsEnabled(true); + else AButton->SetIsEnabled(false); + if (IroquoidResource >= 1) IButton->SetIsEnabled(true); + else IButton->SetIsEnabled(false); } diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h index 9669dde..171070e 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -224,12 +224,12 @@ private: void UpdateBattleLog(); void UpdateResourceBars() const; UFUNCTION(BlueprintCallable) - void ToggleButtons() const; - UFUNCTION(BlueprintCallable) void DisableButtons() const; UFUNCTION(BlueprintCallable) void EnableButtons() const; void EnemyTurn(); + UFUNCTION(BlueprintCallable) + void ToggleButtonIfResourceAvailable() const; UPROPERTY() UUserWidget* DeathScreenWidget;