From 0bf0b5a220c52db761df92a9ffb32f4748ca67f0 Mon Sep 17 00:00:00 2001 From: PHILIP White Date: Thu, 2 Mar 2023 15:37:36 +0000 Subject: [PATCH] Updated StatusSystem to Display Active Turns --- .../TurnBasedCombatV2/StatusEffect.cpp | 11 +++++++++-- .../TurnBasedCombatV2/StatusEffect.h | 5 ++++- .../StatusEffects/DamageOverTime.cpp | 2 +- .../TurnBasedCombatV2/StatusEffects/Thorns.cpp | 2 +- .../TurnBasedCombatV2/StatusSystem.cpp | 4 +++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.cpp index 2aefba5..931ac87 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.cpp @@ -32,16 +32,23 @@ void UStatusEffect::OnPlayerTurn(AActor* Character, AActor* Enemy) void UStatusEffect::OnEnemyTurn(AActor* Enemy, AActor* Character) { - return; + TickDown(Character); } -void UStatusEffect::OnStatusEffectAdd() +void UStatusEffect::OnStatusEffectAdd(AActor* Character) { ATurnBaseCombatV2* CombatSystem = Cast(GetWorld()->GetGameState()); OnPlayerTurnDelegateHandle = CombatSystem->OnPlayerTurn.AddUObject(this, &UStatusEffect::OnPlayerTurn); OnEnemyTurnDelegateHandle = CombatSystem->OnEnemyTurn.AddUObject(this, &UStatusEffect::OnEnemyTurn); } +void UStatusEffect::TickDown(AActor* Character) +{ + UStatusSystem* StatusSystem = Cast(Character->GetComponentByClass(UStatusSystem::StaticClass())); + UTextBlock* StatusText = Cast(StatusSystem->GetActiveStatusEffect(this).StatusIcon->GetWidgetFromName(TEXT("DurationText"))); + StatusText->SetText(FText::FromString(FString::FromInt(BaseDuration))); +} + void UStatusEffect::CheckForExpiry(const float TimeOfExpiry, AActor* Character) { if (TimeOfExpiry <= UGameplayStatics::GetRealTimeSeconds(GetWorld())) OnExpiry(Character); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.h b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.h index f8cd426..3073647 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffect.h @@ -37,7 +37,10 @@ public: virtual void OnEnemyTurn(AActor* Enemy, AActor* Character); UFUNCTION() - virtual void OnStatusEffectAdd(); + virtual void OnStatusEffectAdd(AActor* Character); + + UFUNCTION() + virtual void TickDown(AActor* Character); protected: UPROPERTY() diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/DamageOverTime.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/DamageOverTime.cpp index c6692b1..6bf8032 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/DamageOverTime.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/DamageOverTime.cpp @@ -6,10 +6,10 @@ void UDamageOverTime::OnEnemyTurn(AActor* Enemy, AActor* Character) { - Super::OnEnemyTurn(Enemy, Character); ATurnBaseCombatV2* CombatSystem = Cast(GetWorld()->GetGameState()); CombatSystem->DamageEnemy(DamagePerTurn, "DOT"); BaseDuration -= 1.0f; + Super::OnEnemyTurn(Enemy, Character); if (BaseDuration <= 0.0f) { OnExpiry(Character); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/Thorns.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/Thorns.cpp index 4d27d0d..b3277af 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/Thorns.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusEffects/Thorns.cpp @@ -17,10 +17,10 @@ void UThorns::OnExpiry(AActor* Character) void UThorns::OnEnemyTurn(AActor* Enemy, AActor* Character) { - Super::OnEnemyTurn(Enemy, Character); ATurnBaseCombatV2* CombatSystem = Cast(GetWorld()->GetGameState()); CombatSystem->DamageEnemy(DamagePerTurn, "thorns"); BaseDuration -= 1.0f; + Super::OnEnemyTurn(Enemy, Character); if (BaseDuration <= 0.0f) { OnExpiry(Character); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusSystem.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusSystem.cpp index 46b1b43..046bc5e 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/StatusSystem.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/StatusSystem.cpp @@ -55,7 +55,9 @@ void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float Dur UImage* StatusIconImage = Cast(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("StatusIconImage"))); StatusIconImage->SetBrushFromTexture(StatusEffect->Icon); StatusIconsBox->AddChild(NewStatusEffect.StatusIcon); - NewStatusEffect.StatusEffect->OnStatusEffectAdd(); + NewStatusEffect.StatusEffect->OnStatusEffectAdd(GetOwner()); + UTextBlock* StatusText = Cast(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("DurationText"))); + StatusText->SetText(FText::FromString(FString::FromInt(NewStatusEffect.TimeTillExpiry))); if (Invoke) NewStatusEffect.StatusEffect->Invoke(GetOwner(), NewStatusEffect.TimeTillExpiry); ActiveStatusEffects.Add(NewStatusEffect);