// Fill out your copyright notice in the Description page of Project Settings. #include "StatusEffect.h" #include "StatusSystem.h" #include "Kismet/GameplayStatics.h" void UStatusEffect::Invoke(AActor* Character, float TimeOfExpiry) { GetWorld()->GetTimerManager().SetTimer(ExpiryTimerHandle, [this, Character, TimeOfExpiry] { CheckForExpiry(TimeOfExpiry, Character); }, 1, true, 0); } void UStatusEffect::OnExpiry(AActor* Character) { GetWorld()->GetTimerManager().ClearTimer(ExpiryTimerHandle); UStatusSystem* StatusSystem = Cast(Character->GetComponentByClass(UStatusSystem::StaticClass())); if (StatusSystem->GetActiveStatusEffect(this).StatusIcon == nullptr) return; StatusSystem->GetActiveStatusEffect(this).StatusIcon->RemoveFromParent(); StatusSystem->RemoveStatusEffect(this); } void UStatusEffect::CheckForExpiry(const float TimeOfExpiry, AActor* Character) { if (TimeOfExpiry <= UGameplayStatics::GetRealTimeSeconds(GetWorld())) { OnExpiry(Character); } }