Updated StatusSystem to Display Active Turns
This commit is contained in:
parent
c742abfce4
commit
0bf0b5a220
@ -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<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||
OnPlayerTurnDelegateHandle = CombatSystem->OnPlayerTurn.AddUObject(this, &UStatusEffect::OnPlayerTurn);
|
||||
OnEnemyTurnDelegateHandle = CombatSystem->OnEnemyTurn.AddUObject(this, &UStatusEffect::OnEnemyTurn);
|
||||
}
|
||||
|
||||
void UStatusEffect::TickDown(AActor* Character)
|
||||
{
|
||||
UStatusSystem* StatusSystem = Cast<UStatusSystem>(Character->GetComponentByClass(UStatusSystem::StaticClass()));
|
||||
UTextBlock* StatusText = Cast<UTextBlock>(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);
|
||||
|
@ -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()
|
||||
|
@ -6,10 +6,10 @@
|
||||
|
||||
void UDamageOverTime::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
||||
{
|
||||
Super::OnEnemyTurn(Enemy, Character);
|
||||
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||
CombatSystem->DamageEnemy(DamagePerTurn, "DOT");
|
||||
BaseDuration -= 1.0f;
|
||||
Super::OnEnemyTurn(Enemy, Character);
|
||||
if (BaseDuration <= 0.0f)
|
||||
{
|
||||
OnExpiry(Character);
|
||||
|
@ -17,10 +17,10 @@ void UThorns::OnExpiry(AActor* Character)
|
||||
|
||||
void UThorns::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
||||
{
|
||||
Super::OnEnemyTurn(Enemy, Character);
|
||||
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||
CombatSystem->DamageEnemy(DamagePerTurn, "thorns");
|
||||
BaseDuration -= 1.0f;
|
||||
Super::OnEnemyTurn(Enemy, Character);
|
||||
if (BaseDuration <= 0.0f)
|
||||
{
|
||||
OnExpiry(Character);
|
||||
|
@ -55,7 +55,9 @@ void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float Dur
|
||||
UImage* StatusIconImage = Cast<UImage>(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("StatusIconImage")));
|
||||
StatusIconImage->SetBrushFromTexture(StatusEffect->Icon);
|
||||
StatusIconsBox->AddChild(NewStatusEffect.StatusIcon);
|
||||
NewStatusEffect.StatusEffect->OnStatusEffectAdd();
|
||||
NewStatusEffect.StatusEffect->OnStatusEffectAdd(GetOwner());
|
||||
UTextBlock* StatusText = Cast<UTextBlock>(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("DurationText")));
|
||||
StatusText->SetText(FText::FromString(FString::FromInt(NewStatusEffect.TimeTillExpiry)));
|
||||
if (Invoke) NewStatusEffect.StatusEffect->Invoke(GetOwner(), NewStatusEffect.TimeTillExpiry);
|
||||
|
||||
ActiveStatusEffects.Add(NewStatusEffect);
|
||||
|
Loading…
Reference in New Issue
Block a user