diff --git a/Content/Blueprints/Combat_UI/Combat_UI.uasset b/Content/Blueprints/Combat_UI/Combat_UI.uasset index 8fd5f83..dc662dd 100644 --- a/Content/Blueprints/Combat_UI/Combat_UI.uasset +++ b/Content/Blueprints/Combat_UI/Combat_UI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57b261a7e611e3f659bd4a352777078d8e90725ab27e2b752545b9527bb7721f -size 45704 +oid sha256:d3d012afceb64edab767928d52e91c205b6377f99bf29b12bc25008919dd56a5 +size 48587 diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp index fd5c08d..c89d182 100644 --- a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp @@ -32,14 +32,15 @@ void ATurnBaseCombat::BeginPlay() if (PC) { - PC->bShowMouseCursor = true; - PC->bEnableClickEvents = true; + PC->bShowMouseCursor = true; + PC->bEnableClickEvents = true; PC->bEnableMouseOverEvents = true; } TurnIndicatorTextBlock = Cast(HUD->GetWidgetFromName("TurnIndicator")); CurrentComboTextBlock = Cast(HUD->GetWidgetFromName("CurrentCombo")); ActionPointsTextBlock = Cast(HUD->GetWidgetFromName("ActionPoints")); + BattleLogTextBlock = Cast(HUD->GetWidgetFromName("BattleLog")); PlayerHealthBar = Cast(HUD->GetWidgetFromName("PlayerHealthBar")); EnemyHealthBar = Cast(HUD->GetWidgetFromName("EnemyHealthBar")); CastButton = Cast(HUD->GetWidgetFromName("CastButton")); @@ -107,12 +108,14 @@ void ATurnBaseCombat::DamagePlayer(int Damage) { PlayerHealth -= FMath::Clamp(Damage, 0, 100); UpdateProgressBars(); + AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage) + " damage."); } void ATurnBaseCombat::DamageEnemy(int Damage) { EnemyHealth -= FMath::Clamp(Damage, 0, 100); UpdateProgressBars(); + AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage) + " damage."); } void ATurnBaseCombat::UpdateProgressBars() const @@ -189,8 +192,23 @@ void ATurnBaseCombat::UpdateActionPoints() const void ATurnBaseCombat::AddBattleLogMessage(FString Message) { - FString* tempTextBlock; - BattleLog.Enqueue(Message); - tempTextBlock = BattleLog.Peek(); - + BattleLog.Append(Message + "\n"); + UpdateBattleLog(); +} + +void ATurnBaseCombat::ClearBattleLog() +{ + BattleLog = ""; +} + +void ATurnBaseCombat::UpdateBattleLog() +{ + TArray tempArray; + //Get the amount of lines in the battle log + int32 LineCount = BattleLog.ParseIntoArray(tempArray, TEXT("\n"), true); + if (LineCount > 10) //If there are more than 10 lines + { + ClearBattleLog(); + } + BattleLogTextBlock->SetText(FText::FromString(BattleLog)); } diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h index b511f8b..996a03f 100644 --- a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h +++ b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h @@ -48,7 +48,7 @@ public: {"FW", 20} }; - TQueue BattleLog; + FString BattleLog; protected: virtual void BeginPlay() override; @@ -62,56 +62,61 @@ protected: private: bool IsValidCombo(FString Combo) const; - + UPROPERTY(VisibleAnywhere) bool bIsPlayerTurn = true; - + UPROPERTY(VisibleAnywhere) FString CurrentComboString = ""; - + void SwitchTurn(); - + UPROPERTY(VisibleAnywhere) UTextBlock* TurnIndicatorTextBlock; - + UPROPERTY(VisibleAnywhere) UTextBlock* CurrentComboTextBlock; - + + UPROPERTY(VisibleAnywhere) + UTextBlock* BattleLogTextBlock; + UPROPERTY(VisibleAnywhere) UTextBlock* ActionPointsTextBlock; - + UPROPERTY(VisibleAnywhere) UProgressBar* PlayerHealthBar; - + UPROPERTY(VisibleAnywhere) UProgressBar* EnemyHealthBar; - + UPROPERTY(VisibleAnywhere) UButton* CastButton; - + UPROPERTY(VisibleAnywhere) UButton* FButton; - + UPROPERTY(VisibleAnywhere) UButton* WButton; - + UPROPERTY(VisibleAnywhere) UButton* BackspaceButton; - + UFUNCTION() void CastButtonOnClick(); - + UFUNCTION() void FButtonOnClick(); - + UFUNCTION() void WButtonOnClick(); - + UFUNCTION() void BackspaceButtonOnClick(); - + void UpdateComboString(FString NewCombo) const; void UpdateActionPoints() const; void AddBattleLogMessage(FString Message); -}; \ No newline at end of file + void ClearBattleLog(); + void UpdateBattleLog(); +};