Bugfix StatusEffects Not Being Added to Player
This commit is contained in:
parent
88323e4ea6
commit
939d1e8b92
BIN
Content/Blueprints/Combat_UI/CombatCharacter.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Combat_UI/CombatCharacter.uasset
(Stored with Git LFS)
Binary file not shown.
@ -26,7 +26,7 @@ void UEatableItems::Use(ATempCharacter* Character)
|
|||||||
UE_LOG(LogTemp, Display, TEXT("Healed"));
|
UE_LOG(LogTemp, Display, TEXT("Healed"));
|
||||||
Character->Inventory->RemoveItem(this);*/
|
Character->Inventory->RemoveItem(this);*/
|
||||||
|
|
||||||
UStatusSystem* StatusSystem = Cast<UStatusSystem>(Character);
|
UStatusSystem* StatusSystem = Character->FindComponentByClass<UStatusSystem>();
|
||||||
StatusSystem->AddStatusEffect(NewObject<UStatusEffect>(this, HealOverTimeStatusEffect));
|
StatusSystem->AddStatusEffect(NewObject<UStatusEffect>(this, HealOverTimeStatusEffect));
|
||||||
}
|
}
|
||||||
else if (Character->Health >= 100)
|
else if (Character->Health >= 100)
|
||||||
|
@ -14,14 +14,10 @@ UStatusSystem::UStatusSystem()
|
|||||||
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
|
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
|
||||||
// off to improve performance if you don't need them.
|
// off to improve performance if you don't need them.
|
||||||
PrimaryComponentTick.bCanEverTick = true;
|
PrimaryComponentTick.bCanEverTick = true;
|
||||||
|
|
||||||
if (HUDStatusIndicatorsWidget != nullptr)
|
|
||||||
{
|
|
||||||
static ConstructorHelpers::FClassFinder<UUserWidget> HUDStatusIndicatorsWidgetClassFinder(TEXT("/Game/Blueprints/Status_UI/StatusIndicator"));
|
static ConstructorHelpers::FClassFinder<UUserWidget> HUDStatusIndicatorsWidgetClassFinder(TEXT("/Game/Blueprints/Status_UI/StatusIndicator"));
|
||||||
HUDStatusIndicatorsWidget = HUDStatusIndicatorsWidgetClassFinder.Class;
|
HUDStatusIndicatorsWidget = HUDStatusIndicatorsWidgetClassFinder.Class;
|
||||||
static ConstructorHelpers::FClassFinder<UUserWidget> HUDStatusIconWidgetClassFinder(TEXT("/Game/Blueprints/Status_UI/StatusIcon"));
|
static ConstructorHelpers::FClassFinder<UUserWidget> HUDStatusIconWidgetClassFinder(TEXT("/Game/Blueprints/Status_UI/StatusIcon"));
|
||||||
HUDStatusIconWidget = HUDStatusIconWidgetClassFinder.Class;
|
HUDStatusIconWidget = HUDStatusIconWidgetClassFinder.Class;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -43,17 +39,19 @@ void UStatusSystem::TickComponent(float DeltaTime, ELevelTick TickType, FActorCo
|
|||||||
|
|
||||||
for (FActiveStatusEffect ActiveStatusEffect : ActiveStatusEffects)
|
for (FActiveStatusEffect ActiveStatusEffect : ActiveStatusEffects)
|
||||||
{
|
{
|
||||||
|
UE_LOG(LogTemp, Warning, TEXT("TimeTillExpiry: %f"), UGameplayStatics::GetRealTimeSeconds(GetWorld()) - ActiveStatusEffect.TimeTillExpiry);
|
||||||
if (ActiveStatusEffect.TimeTillExpiry >= UGameplayStatics::GetRealTimeSeconds(GetWorld()))
|
if (ActiveStatusEffect.TimeTillExpiry >= UGameplayStatics::GetRealTimeSeconds(GetWorld()))
|
||||||
{
|
{
|
||||||
ActiveStatusEffect.StatusEffect->OnExpiry(GetOwner());
|
ActiveStatusEffect.StatusEffect->OnExpiry(GetOwner());
|
||||||
ActiveStatusEffects.Remove(ActiveStatusEffect);
|
ActiveStatusEffects.Remove(ActiveStatusEffect);
|
||||||
|
ActiveStatusEffect.StatusIcon->RemoveFromParent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float DurationMultiplier)
|
void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float DurationMultiplier)
|
||||||
{
|
{
|
||||||
FActiveStatusEffect NewStatusEffect{};
|
FActiveStatusEffect NewStatusEffect;
|
||||||
NewStatusEffect.StatusEffect = StatusEffect;
|
NewStatusEffect.StatusEffect = StatusEffect;
|
||||||
NewStatusEffect.TimeInitiated = UGameplayStatics::GetRealTimeSeconds(GetWorld());
|
NewStatusEffect.TimeInitiated = UGameplayStatics::GetRealTimeSeconds(GetWorld());
|
||||||
NewStatusEffect.TimeTillExpiry = UGameplayStatics::GetRealTimeSeconds(GetWorld()) + StatusEffect->BaseDuration * DurationMultiplier;
|
NewStatusEffect.TimeTillExpiry = UGameplayStatics::GetRealTimeSeconds(GetWorld()) + StatusEffect->BaseDuration * DurationMultiplier;
|
||||||
|
Loading…
Reference in New Issue
Block a user