Updated TurnBasedCombat to Use StatusSystem
This commit is contained in:
parent
fb697f3588
commit
e496cf07e9
@ -38,7 +38,7 @@ void UStatusSystem::TickComponent(float DeltaTime, ELevelTick TickType, FActorCo
|
||||
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
||||
}
|
||||
|
||||
void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float DurationMultiplier)
|
||||
void UStatusSystem::AddStatusEffect(UStatusEffect* StatusEffect, const float DurationMultiplier, const bool Invoke)
|
||||
{
|
||||
FActiveStatusEffect NewStatusEffect;
|
||||
NewStatusEffect.StatusEffect = StatusEffect;
|
||||
@ -48,7 +48,7 @@ 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->Invoke(GetOwner(), NewStatusEffect.TimeTillExpiry);
|
||||
if (Invoke) NewStatusEffect.StatusEffect->Invoke(GetOwner(), NewStatusEffect.TimeTillExpiry);
|
||||
|
||||
ActiveStatusEffects.Add(NewStatusEffect);
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ public:
|
||||
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
|
||||
|
||||
UFUNCTION()
|
||||
void AddStatusEffect(UStatusEffect* StatusEffect, float DurationMultiplier = 1.0f);
|
||||
void AddStatusEffect(UStatusEffect* StatusEffect, float DurationMultiplier = 1.0f, bool Invoke = true);
|
||||
|
||||
UFUNCTION()
|
||||
void RemoveStatusEffect(UStatusEffect* StatusEffect);
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "TurnBaseCombatV2.h"
|
||||
#include "CoreMinimal.h"
|
||||
#include "AIController.h"
|
||||
#include "StatusSystem.h"
|
||||
#include "Blueprint/UserWidget.h"
|
||||
#include "BehaviorTree/BlackboardComponent.h"
|
||||
#include "Components/TextBlock.h"
|
||||
@ -20,6 +21,8 @@ ATurnBaseCombatV2::ATurnBaseCombatV2()
|
||||
// Load the HUD widget from the specified path
|
||||
static ConstructorHelpers::FClassFinder<UUserWidget> HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI"));
|
||||
HUDWidget = HUDWidgetClass.Class;
|
||||
static ConstructorHelpers::FClassFinder<UStatusEffect> StatusEffectThornsClassFinder(TEXT("/Game/Blueprints/StatusEffects/BP_Thorns"));
|
||||
ThornsStatusEffect = StatusEffectThornsClassFinder.Class;
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,6 +67,10 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy)
|
||||
|
||||
void ATurnBaseCombatV2::EndCombat()
|
||||
{
|
||||
for (UStatusEffect* StatusEffect : StatusEffects)
|
||||
{
|
||||
StatusEffect->OnExpiry(PlayerActor);
|
||||
}
|
||||
//Remove the HUD from the viewport
|
||||
HUD->RemoveFromParent();
|
||||
APawn* PlayerPawn = Cast<APawn>(GetWorld()->GetFirstPlayerController()->GetPawn());
|
||||
@ -163,6 +170,16 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
||||
UpdateResourceBars();
|
||||
return;
|
||||
}
|
||||
if (IsSpecialCombo(Combo))
|
||||
{
|
||||
UStatusSystem* StatusSystem = Cast<UStatusSystem>(PlayerActor->GetComponentByClass(UStatusSystem::StaticClass()));
|
||||
if (Combo == "AAE")
|
||||
{
|
||||
UStatusEffect* TempThornsStatusEffect = NewObject<UStatusEffect>(PlayerActor, ThornsStatusEffect);
|
||||
StatusSystem->AddStatusEffect(TempThornsStatusEffect, 1, false);
|
||||
StatusEffects.Add(TempThornsStatusEffect);
|
||||
}
|
||||
}
|
||||
|
||||
if (GunEffect)
|
||||
{
|
||||
@ -244,11 +261,16 @@ void ATurnBaseCombatV2::UpdateProgressBars() const
|
||||
EnemyHealthBar->SetPercent(*EnemyHealth / 100.0f);
|
||||
}
|
||||
|
||||
bool ATurnBaseCombatV2::IsValidCombo(FString Combo) const
|
||||
bool ATurnBaseCombatV2::IsValidCombo(const FString Combo) const
|
||||
{
|
||||
return ValidCombos.Contains(Combo);
|
||||
}
|
||||
|
||||
bool ATurnBaseCombatV2::IsSpecialCombo(const FString Combo) const
|
||||
{
|
||||
return SpecialCombos.Contains(Combo);
|
||||
}
|
||||
|
||||
void ATurnBaseCombatV2::SwitchTurn()
|
||||
{
|
||||
//TurnIndicatorTextBlock->SetText(FText::FromString(bIsPlayerTurn ? "Enemy Turn" : "Player Turn"));
|
||||
|
@ -6,9 +6,11 @@
|
||||
#include "Components/Button.h"
|
||||
#include "Components/ProgressBar.h"
|
||||
#include "Components/TextBlock.h"
|
||||
#include "StatusEffect.h"
|
||||
#include "NiagaraComponent.h"
|
||||
#include "NiagaraFunctionLibrary.h"
|
||||
#include "GameFramework/GameStateBase.h"
|
||||
#include "StatusEffects/Thorns.h"
|
||||
#include "TurnBaseCombatV2.generated.h"
|
||||
|
||||
class UNiagaraSystem;
|
||||
@ -77,6 +79,14 @@ public:
|
||||
{"PI", 15},
|
||||
{"PPI", 20}
|
||||
};
|
||||
UPROPERTY(EditAnywhere)
|
||||
TMap<FString, FString> SpecialCombos =
|
||||
{
|
||||
//{"IIA", "ReduceActSpeed"},
|
||||
//{"EEP", "AreaOfEffect"},
|
||||
{"AAE", "Thorns"},
|
||||
{"PPI", "DamageOverTime"}
|
||||
};
|
||||
|
||||
FString BattleLog;
|
||||
|
||||
@ -101,6 +111,13 @@ protected:
|
||||
|
||||
private:
|
||||
bool IsValidCombo(FString Combo) const;
|
||||
bool IsSpecialCombo(FString Combo) const;
|
||||
|
||||
UPROPERTY()
|
||||
TSubclassOf<UStatusEffect> ThornsStatusEffect;
|
||||
|
||||
UPROPERTY()
|
||||
TArray<UStatusEffect*> StatusEffects;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
bool bIsPlayerTurn = true;
|
||||
|
Loading…
Reference in New Issue
Block a user