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)
|
void UStatusEffect::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
||||||
{
|
{
|
||||||
return;
|
TickDown(Character);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UStatusEffect::OnStatusEffectAdd()
|
void UStatusEffect::OnStatusEffectAdd(AActor* Character)
|
||||||
{
|
{
|
||||||
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||||
OnPlayerTurnDelegateHandle = CombatSystem->OnPlayerTurn.AddUObject(this, &UStatusEffect::OnPlayerTurn);
|
OnPlayerTurnDelegateHandle = CombatSystem->OnPlayerTurn.AddUObject(this, &UStatusEffect::OnPlayerTurn);
|
||||||
OnEnemyTurnDelegateHandle = CombatSystem->OnEnemyTurn.AddUObject(this, &UStatusEffect::OnEnemyTurn);
|
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)
|
void UStatusEffect::CheckForExpiry(const float TimeOfExpiry, AActor* Character)
|
||||||
{
|
{
|
||||||
if (TimeOfExpiry <= UGameplayStatics::GetRealTimeSeconds(GetWorld())) OnExpiry(Character);
|
if (TimeOfExpiry <= UGameplayStatics::GetRealTimeSeconds(GetWorld())) OnExpiry(Character);
|
||||||
|
@ -37,7 +37,10 @@ public:
|
|||||||
virtual void OnEnemyTurn(AActor* Enemy, AActor* Character);
|
virtual void OnEnemyTurn(AActor* Enemy, AActor* Character);
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
virtual void OnStatusEffectAdd();
|
virtual void OnStatusEffectAdd(AActor* Character);
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
virtual void TickDown(AActor* Character);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
void UDamageOverTime::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
void UDamageOverTime::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
||||||
{
|
{
|
||||||
Super::OnEnemyTurn(Enemy, Character);
|
|
||||||
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||||
CombatSystem->DamageEnemy(DamagePerTurn, "DOT");
|
CombatSystem->DamageEnemy(DamagePerTurn, "DOT");
|
||||||
BaseDuration -= 1.0f;
|
BaseDuration -= 1.0f;
|
||||||
|
Super::OnEnemyTurn(Enemy, Character);
|
||||||
if (BaseDuration <= 0.0f)
|
if (BaseDuration <= 0.0f)
|
||||||
{
|
{
|
||||||
OnExpiry(Character);
|
OnExpiry(Character);
|
||||||
|
@ -17,10 +17,10 @@ void UThorns::OnExpiry(AActor* Character)
|
|||||||
|
|
||||||
void UThorns::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
void UThorns::OnEnemyTurn(AActor* Enemy, AActor* Character)
|
||||||
{
|
{
|
||||||
Super::OnEnemyTurn(Enemy, Character);
|
|
||||||
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
ATurnBaseCombatV2* CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||||
CombatSystem->DamageEnemy(DamagePerTurn, "thorns");
|
CombatSystem->DamageEnemy(DamagePerTurn, "thorns");
|
||||||
BaseDuration -= 1.0f;
|
BaseDuration -= 1.0f;
|
||||||
|
Super::OnEnemyTurn(Enemy, Character);
|
||||||
if (BaseDuration <= 0.0f)
|
if (BaseDuration <= 0.0f)
|
||||||
{
|
{
|
||||||
OnExpiry(Character);
|
OnExpiry(Character);
|
||||||
|
@ -55,7 +55,9 @@ void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float Dur
|
|||||||
UImage* StatusIconImage = Cast<UImage>(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("StatusIconImage")));
|
UImage* StatusIconImage = Cast<UImage>(NewStatusEffect.StatusIcon->GetWidgetFromName(TEXT("StatusIconImage")));
|
||||||
StatusIconImage->SetBrushFromTexture(StatusEffect->Icon);
|
StatusIconImage->SetBrushFromTexture(StatusEffect->Icon);
|
||||||
StatusIconsBox->AddChild(NewStatusEffect.StatusIcon);
|
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);
|
if (Invoke) NewStatusEffect.StatusEffect->Invoke(GetOwner(), NewStatusEffect.TimeTillExpiry);
|
||||||
|
|
||||||
ActiveStatusEffects.Add(NewStatusEffect);
|
ActiveStatusEffects.Add(NewStatusEffect);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user