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