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 "BehaviorTree/BlackboardComponent.h"
|
||||
#include "Blueprint/UserWidget.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
#include "Misc/OutputDeviceNull.h"
|
||||
|
||||
|
||||
@ -36,6 +37,7 @@ void UHoldToInitCombat::BeginPlay()
|
||||
InitCombatWidget->SetVisibility(ESlateVisibility::Hidden);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
CombatSystem->RedVignetteMaterialInstance->GetScalarParameterValue(FName("BlendWeight"), RedVignetteIntensity);
|
||||
if (RedVignetteIntensity > 0.0f)
|
||||
{
|
||||
CombatSystem->RedVignetteMaterialInstance->SetScalarParameterValue(FName("BlendWeight"), RedVignetteIntensity - DeltaTime * 2.0f);
|
||||
}
|
||||
|
||||
if (bClickDown && TargetEnemy != nullptr)
|
||||
{
|
||||
Cast<ATurnBaseCombatV2>(GetWorld()->GetGameState())->StartCombat(TargetEnemy);
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "NiagaraFunctionLibrary.h"
|
||||
#include "Components/RadialSlider.h"
|
||||
#include "BehaviorTree/BlackboardComponent.h"
|
||||
#include "TurnBaseCombatV2.h"
|
||||
#include "HoldToInitCombat.generated.h"
|
||||
|
||||
class UNiagaraSystem;
|
||||
@ -46,6 +47,9 @@ public:
|
||||
private:
|
||||
bool bClickDown = false;
|
||||
float ReloadTimer = 0.0f;
|
||||
ATurnBaseCombatV2* CombatSystem;
|
||||
|
||||
float RedVignetteIntensity;
|
||||
|
||||
UFUNCTION()
|
||||
AActor* LookingAtEnemy() const;
|
||||
|
@ -149,6 +149,21 @@ void ATurnBaseCombatV2::BeginPlay()
|
||||
}
|
||||
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);
|
||||
HUD = CreateWidget<UUserWidget>(GetWorld(), HUDWidget);
|
||||
TArray<AActor*> PlayerChildActors;
|
||||
@ -250,7 +265,7 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo)
|
||||
if ((CurrentComboString == "II" || CurrentComboString == "PP" || CurrentComboString == "EE" || CurrentComboString == "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))));
|
||||
}
|
||||
else if (CurrentComboString == "EI")
|
||||
@ -312,7 +327,6 @@ void ATurnBaseCombatV2::DamagePlayer(int Damage, FString DamageType)
|
||||
*PlayerHealth -= FMath::Clamp(Damage * BaseDefenseMultiplier, 0, 100);
|
||||
UpdateProgressBars();
|
||||
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)
|
||||
{
|
||||
EndCombat();
|
||||
@ -326,6 +340,11 @@ void ATurnBaseCombatV2::DamagePlayer(int Damage, FString DamageType)
|
||||
DeathScreenWidget->AddToViewport();
|
||||
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)
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "NiagaraFunctionLibrary.h"
|
||||
#include "GameFramework/GameStateBase.h"
|
||||
#include "Components/WidgetComponent.h"
|
||||
#include "Engine/PostProcessVolume.h"
|
||||
#include "StatusEffects/Thorns.h"
|
||||
#include "TurnBaseCombatV2.generated.h"
|
||||
|
||||
@ -34,6 +35,8 @@ public:
|
||||
float BaseDefenseMultiplier = 1.0f;
|
||||
UPROPERTY()
|
||||
float ChainDamageMultiplier = 1.0f;
|
||||
UPROPERTY(EditAnywhere)
|
||||
float ChainDamageMultiplierIncrease = 0.2f;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
int DefaultActionPoints = 2;
|
||||
@ -51,6 +54,8 @@ public:
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
UNiagaraSystem* GunEffect;
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||
UMaterialInstanceDynamic* RedVignetteMaterialInstance;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||
AActor* PlayerActor;
|
||||
@ -129,6 +134,9 @@ private:
|
||||
bool IsValidCombo(FString Combo) const;
|
||||
bool IsSpecialCombo(FString Combo) const;
|
||||
|
||||
UPROPERTY()
|
||||
APostProcessVolume* PostProcessVolume;
|
||||
|
||||
UPROPERTY()
|
||||
TSubclassOf<UStatusEffect> ThornsStatusEffect;
|
||||
UPROPERTY()
|
||||
|
Loading…
Reference in New Issue
Block a user