Updated BookUI to Display Turn State and Escape Percentage

This commit is contained in:
Philip W 2023-04-25 04:23:51 +01:00
parent 32e65e3f47
commit cf2a198c3e
3 changed files with 25 additions and 5 deletions

Binary file not shown.

View File

@ -36,6 +36,8 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy)
{ {
if (Enemy == nullptr) return; if (Enemy == nullptr) return;
if (bIsInCombat) return; if (bIsInCombat) return;
EscapePercentage = CalculateEscapePercentage();
EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString(FString::FromInt(EscapePercentage * 100)), FText::FromString("%")));
const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY()); const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY());
GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2); GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2);
bIsInCombat = true; bIsInCombat = true;
@ -99,6 +101,7 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy)
void ATurnBaseCombatV2::EndCombat() void ATurnBaseCombatV2::EndCombat()
{ {
const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY()); const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY());
TurnIndicatorTextBlock->SetText(FText::FromString(""));
GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2); GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2);
bEnemyHasExtraTurn = false; bEnemyHasExtraTurn = false;
bPlayerHasExtraTurn = false; bPlayerHasExtraTurn = false;
@ -143,11 +146,12 @@ void ATurnBaseCombatV2::BeginPlay()
PlayerWidget->InitWidget(); PlayerWidget->InitWidget();
BookHUD = PlayerWidget->GetWidget(); BookHUD = PlayerWidget->GetWidget();
TurnIndicatorTextBlock = Cast<UTextBlock>(HUD->GetWidgetFromName("TurnIndicator")); TurnIndicatorTextBlock = Cast<UTextBlock>(BookHUD->GetWidgetFromName("TurnIndicator"));
CurrentComboTextBlock = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo")); CurrentComboTextBlock = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo"));
CurrentComboTextBlock1 = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo_1")); CurrentComboTextBlock1 = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo_1"));
CurrentComboTextBlock2 = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo_2")); CurrentComboTextBlock2 = Cast<UTextBlock>(BookHUD->GetWidgetFromName("CurrentCombo_2"));
BattleLogTextBlock = Cast<UTextBlock>(HUD->GetWidgetFromName("BattleLog")); BattleLogTextBlock = Cast<UTextBlock>(HUD->GetWidgetFromName("BattleLog"));
EscapePercentageTextBlock = Cast<UTextBlock>(BookHUD->GetWidgetFromName("EscapePercentage_Text"));
PlayerHealthBar = Cast<UProgressBar>(BookHUD->GetWidgetFromName("PlayerHealthBar")); PlayerHealthBar = Cast<UProgressBar>(BookHUD->GetWidgetFromName("PlayerHealthBar"));
EnemyHealthBar = Cast<UProgressBar>(HUD->GetWidgetFromName("EnemyHealthBar")); EnemyHealthBar = Cast<UProgressBar>(HUD->GetWidgetFromName("EnemyHealthBar"));
ProbertiumResourceBar = Cast<UProgressBar>(BookHUD->GetWidgetFromName("ProbertiumResourceBar")); ProbertiumResourceBar = Cast<UProgressBar>(BookHUD->GetWidgetFromName("ProbertiumResourceBar"));
@ -306,6 +310,11 @@ void ATurnBaseCombatV2::UpdateProgressBars() const
EnemyHealthBar->SetPercent(*EnemyHealth / 100.0f); EnemyHealthBar->SetPercent(*EnemyHealth / 100.0f);
} }
float ATurnBaseCombatV2::CalculateEscapePercentage() const
{
return FMath::RandRange(0.1f, 0.9f);
}
bool ATurnBaseCombatV2::IsValidCombo(const FString Combo) const bool ATurnBaseCombatV2::IsValidCombo(const FString Combo) const
{ {
return ValidCombos.Contains(Combo); return ValidCombos.Contains(Combo);
@ -412,7 +421,6 @@ void ATurnBaseCombatV2::IButtonOnClick()
void ATurnBaseCombatV2::BackspaceButtonOnClick() void ATurnBaseCombatV2::BackspaceButtonOnClick()
{ {
if (CurrentComboString.Len() <= 0) if (CurrentComboString.Len() <= 0)
{ {
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Blank Combo")); GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Blank Combo"));
@ -466,8 +474,15 @@ void ATurnBaseCombatV2::BackspaceButtonOnClick()
void ATurnBaseCombatV2::RunButtonOnClick() void ATurnBaseCombatV2::RunButtonOnClick()
{ {
if (FMath::RandRange(0.0f, 1.0f) >= EscapePercentage)
{
EscapePercentage = CalculateEscapePercentage();
EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString(FString::FromInt(EscapePercentage * 100)), FText::FromString("%")));
SwitchTurn();
return;
}
UBlackboardComponent* EnemyBlackboard = Cast<AAIController>(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); UBlackboardComponent* EnemyBlackboard = Cast<AAIController>(EnemyActor->GetInstigatorController())->GetBlackboardComponent();
EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("--"), FText::FromString("%")));
EnemyBlackboard->SetValueAsBool("IsInCombat", false); EnemyBlackboard->SetValueAsBool("IsInCombat", false);
EnemyBlackboard->SetValueAsBool("WasInCombat", true); EnemyBlackboard->SetValueAsBool("WasInCombat", true);
EndCombat(); EndCombat();

View File

@ -128,6 +128,9 @@ protected:
bool bPlayerHasExtraTurn = false; bool bPlayerHasExtraTurn = false;
bool bEnemyHasExtraTurn = false; bool bEnemyHasExtraTurn = false;
float EscapePercentage = 0.0f;
float CalculateEscapePercentage() const;
private: private:
bool IsValidCombo(FString Combo) const; bool IsValidCombo(FString Combo) const;
bool IsSpecialCombo(FString Combo) const; bool IsSpecialCombo(FString Combo) const;
@ -158,6 +161,8 @@ private:
UTextBlock* CurrentComboTextBlock2; UTextBlock* CurrentComboTextBlock2;
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
UTextBlock* BattleLogTextBlock; UTextBlock* BattleLogTextBlock;
UPROPERTY(VisibleAnywhere)
UTextBlock* EscapePercentageTextBlock;
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
UProgressBar* PlayerHealthBar; UProgressBar* PlayerHealthBar;