Updated Combat to Include Red Vignette on Damage Taken
This commit is contained in:
parent
9fd372ed9d
commit
11c905613a
BIN
Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Blueprints/Combat_UI/RedVignette.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Combat_UI/RedVignette.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Combat_UI/RedVignette_Inst.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Combat_UI/RedVignette_Inst.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Levels/Build.umap
(Stored with Git LFS)
BIN
Content/Levels/Build.umap
(Stored with Git LFS)
Binary file not shown.
@ -7,6 +7,7 @@
|
|||||||
#include "TurnBaseCombatV2.h"
|
#include "TurnBaseCombatV2.h"
|
||||||
#include "BehaviorTree/BlackboardComponent.h"
|
#include "BehaviorTree/BlackboardComponent.h"
|
||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "Kismet/GameplayStatics.h"
|
||||||
#include "Misc/OutputDeviceNull.h"
|
#include "Misc/OutputDeviceNull.h"
|
||||||
|
|
||||||
|
|
||||||
@ -36,6 +37,7 @@ void UHoldToInitCombat::BeginPlay()
|
|||||||
InitCombatWidget->SetVisibility(ESlateVisibility::Hidden);
|
InitCombatWidget->SetVisibility(ESlateVisibility::Hidden);
|
||||||
|
|
||||||
ReloadSlider = Cast<URadialSlider>(InitCombatWidget->GetWidgetFromName("ReloadSlider"));
|
ReloadSlider = Cast<URadialSlider>(InitCombatWidget->GetWidgetFromName("ReloadSlider"));
|
||||||
|
CombatSystem = Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -53,6 +55,12 @@ void UHoldToInitCombat::TickComponent(float DeltaTime, ELevelTick TickType, FAct
|
|||||||
InitCombatWidget->SetVisibility(ESlateVisibility::Hidden);
|
InitCombatWidget->SetVisibility(ESlateVisibility::Hidden);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CombatSystem->RedVignetteMaterialInstance->GetScalarParameterValue(FName("BlendWeight"), RedVignetteIntensity);
|
||||||
|
if (RedVignetteIntensity > 0.0f)
|
||||||
|
{
|
||||||
|
CombatSystem->RedVignetteMaterialInstance->SetScalarParameterValue(FName("BlendWeight"), RedVignetteIntensity - DeltaTime * 2.0f);
|
||||||
|
}
|
||||||
|
|
||||||
if (bClickDown && TargetEnemy != nullptr)
|
if (bClickDown && TargetEnemy != nullptr)
|
||||||
{
|
{
|
||||||
Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState())->StartCombat(TargetEnemy);
|
Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState())->StartCombat(TargetEnemy);
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "NiagaraFunctionLibrary.h"
|
#include "NiagaraFunctionLibrary.h"
|
||||||
#include "Components/RadialSlider.h"
|
#include "Components/RadialSlider.h"
|
||||||
#include "BehaviorTree/BlackboardComponent.h"
|
#include "BehaviorTree/BlackboardComponent.h"
|
||||||
|
#include "TurnBaseCombatV2.h"
|
||||||
#include "HoldToInitCombat.generated.h"
|
#include "HoldToInitCombat.generated.h"
|
||||||
|
|
||||||
class UNiagaraSystem;
|
class UNiagaraSystem;
|
||||||
@ -46,6 +47,9 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool bClickDown = false;
|
bool bClickDown = false;
|
||||||
float ReloadTimer = 0.0f;
|
float ReloadTimer = 0.0f;
|
||||||
|
ATurnBaseCombatV2* CombatSystem;
|
||||||
|
|
||||||
|
float RedVignetteIntensity;
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
AActor* LookingAtEnemy() const;
|
AActor* LookingAtEnemy() const;
|
||||||
|
@ -149,6 +149,21 @@ void ATurnBaseCombatV2::BeginPlay()
|
|||||||
}
|
}
|
||||||
PlayerHealth = &Cast<ATempCharacter>(PlayerActor)->Health;
|
PlayerHealth = &Cast<ATempCharacter>(PlayerActor)->Health;
|
||||||
|
|
||||||
|
TArray<AActor*> AllActorsInScene;
|
||||||
|
UGameplayStatics::GetAllActorsOfClass(GetWorld(), APostProcessVolume::StaticClass(), AllActorsInScene);
|
||||||
|
if (ensureMsgf(AllActorsInScene.Num() > 0, TEXT("No Post Processing Volume in scene")))
|
||||||
|
{
|
||||||
|
PostProcessVolume = Cast<APostProcessVolume>(AllActorsInScene[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsValid(RedVignetteMaterialInstance))
|
||||||
|
{
|
||||||
|
FWeightedBlendable WeightedBlendable;
|
||||||
|
WeightedBlendable.Object = RedVignetteMaterialInstance;
|
||||||
|
WeightedBlendable.Weight = 1.0f;
|
||||||
|
PostProcessVolume->Settings.WeightedBlendables.Array.Add(WeightedBlendable);
|
||||||
|
}
|
||||||
|
|
||||||
CombatTutorialWidgetInstance = CreateWidget<UUserWidget>(GetWorld(), CombatTutorialWidget);
|
CombatTutorialWidgetInstance = CreateWidget<UUserWidget>(GetWorld(), CombatTutorialWidget);
|
||||||
HUD = CreateWidget<UUserWidget>(GetWorld(), HUDWidget);
|
HUD = CreateWidget<UUserWidget>(GetWorld(), HUDWidget);
|
||||||
TArray<AActor*> PlayerChildActors;
|
TArray<AActor*> PlayerChildActors;
|
||||||
@ -250,7 +265,7 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
|||||||
if ((CurrentComboString == "II" || CurrentComboString == "PP" || CurrentComboString == "EE" || CurrentComboString == "AA") &&
|
if ((CurrentComboString == "II" || CurrentComboString == "PP" || CurrentComboString == "EE" || CurrentComboString == "AA") &&
|
||||||
(PreviousComboString == "II" || PreviousComboString == "PP" || PreviousComboString == "EE" || PreviousComboString == "AA"))
|
(PreviousComboString == "II" || PreviousComboString == "PP" || PreviousComboString == "EE" || PreviousComboString == "AA"))
|
||||||
{
|
{
|
||||||
ChainDamageMultiplier += 0.2;
|
ChainDamageMultiplier += ChainDamageMultiplierIncrease;
|
||||||
DamageMultiplierTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("x"), FText::FromString(FString::SanitizeFloat(ChainDamageMultiplier))));
|
DamageMultiplierTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("x"), FText::FromString(FString::SanitizeFloat(ChainDamageMultiplier))));
|
||||||
}
|
}
|
||||||
else if (CurrentComboString == "EI")
|
else if (CurrentComboString == "EI")
|
||||||
@ -312,7 +327,6 @@ void ATurnBaseCombatV2::DamagePlayer(int Damage, FString DamageType)
|
|||||||
*PlayerHealth -= FMath::Clamp(Damage * BaseDefenseMultiplier, 0, 100);
|
*PlayerHealth -= FMath::Clamp(Damage * BaseDefenseMultiplier, 0, 100);
|
||||||
UpdateProgressBars();
|
UpdateProgressBars();
|
||||||
AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage * BaseDefenseMultiplier) + " HP by " + DamageType + ".");
|
AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage * BaseDefenseMultiplier) + " HP by " + DamageType + ".");
|
||||||
//Ends Combat if either the player or enemy is dead
|
|
||||||
if (*EnemyHealth <= 0)
|
if (*EnemyHealth <= 0)
|
||||||
{
|
{
|
||||||
EndCombat();
|
EndCombat();
|
||||||
@ -326,6 +340,11 @@ void ATurnBaseCombatV2::DamagePlayer(int Damage, FString DamageType)
|
|||||||
DeathScreenWidget->AddToViewport();
|
DeathScreenWidget->AddToViewport();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
FOutputDeviceNull AR;
|
||||||
|
const FString Command = FString::Printf(TEXT("PlayCameraShakeShoot"));
|
||||||
|
PlayerActor->CallFunctionByNameWithArguments(*Command, AR, nullptr, true);
|
||||||
|
RedVignetteMaterialInstance->SetScalarParameterValue(FName("BlendWeight"), 1.0f);
|
||||||
|
//Ends Combat if either the player or enemy is dead
|
||||||
}
|
}
|
||||||
|
|
||||||
void ATurnBaseCombatV2::DamageEnemy(int Damage, FString DamageType)
|
void ATurnBaseCombatV2::DamageEnemy(int Damage, FString DamageType)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "NiagaraFunctionLibrary.h"
|
#include "NiagaraFunctionLibrary.h"
|
||||||
#include "GameFramework/GameStateBase.h"
|
#include "GameFramework/GameStateBase.h"
|
||||||
#include "Components/WidgetComponent.h"
|
#include "Components/WidgetComponent.h"
|
||||||
|
#include "Engine/PostProcessVolume.h"
|
||||||
#include "StatusEffects/Thorns.h"
|
#include "StatusEffects/Thorns.h"
|
||||||
#include "TurnBaseCombatV2.generated.h"
|
#include "TurnBaseCombatV2.generated.h"
|
||||||
|
|
||||||
@ -34,6 +35,8 @@ public:
|
|||||||
float BaseDefenseMultiplier = 1.0f;
|
float BaseDefenseMultiplier = 1.0f;
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
float ChainDamageMultiplier = 1.0f;
|
float ChainDamageMultiplier = 1.0f;
|
||||||
|
UPROPERTY(EditAnywhere)
|
||||||
|
float ChainDamageMultiplierIncrease = 0.2f;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
int DefaultActionPoints = 2;
|
int DefaultActionPoints = 2;
|
||||||
@ -51,6 +54,8 @@ public:
|
|||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
UNiagaraSystem* GunEffect;
|
UNiagaraSystem* GunEffect;
|
||||||
|
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||||
|
UMaterialInstanceDynamic* RedVignetteMaterialInstance;
|
||||||
|
|
||||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||||
AActor* PlayerActor;
|
AActor* PlayerActor;
|
||||||
@ -129,6 +134,9 @@ private:
|
|||||||
bool IsValidCombo(FString Combo) const;
|
bool IsValidCombo(FString Combo) const;
|
||||||
bool IsSpecialCombo(FString Combo) const;
|
bool IsSpecialCombo(FString Combo) const;
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
|
APostProcessVolume* PostProcessVolume;
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
TSubclassOf<UStatusEffect> ThornsStatusEffect;
|
TSubclassOf<UStatusEffect> ThornsStatusEffect;
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
|
Loading…
Reference in New Issue
Block a user