diff --git a/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset b/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset index a34d1da..eede7e3 100644 --- a/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset +++ b/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48e4a20b8adf64276d188ae33021a81a3236291342f32f294642a371a00d87c9 -size 19781 +oid sha256:4dd88316fe4a1f9e2208b3db3d94ae401765d151786c67a0f5ef9e88a80ac8b2 +size 31304 diff --git a/Content/Blueprints/Combat_UI/RedVignette.uasset b/Content/Blueprints/Combat_UI/RedVignette.uasset new file mode 100644 index 0000000..b1adcea --- /dev/null +++ b/Content/Blueprints/Combat_UI/RedVignette.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:491b5d62ba74bce912ed85f9eb259cf91ca341ce306177459456bde2a7cfa645 +size 11030 diff --git a/Content/Blueprints/Combat_UI/RedVignette_Inst.uasset b/Content/Blueprints/Combat_UI/RedVignette_Inst.uasset new file mode 100644 index 0000000..1b0ec26 --- /dev/null +++ b/Content/Blueprints/Combat_UI/RedVignette_Inst.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42b511665e2d50bddc0890e7f38c95a7e6230b814342d241f7d8d4c9d409d884 +size 6722 diff --git a/Content/Levels/Build.umap b/Content/Levels/Build.umap index 6251735..6538cb0 100644 --- a/Content/Levels/Build.umap +++ b/Content/Levels/Build.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:379314f395ffaa4588cb763b793c958df1185b989ac3c67bf16bc2763e7ada88 -size 3476444 +oid sha256:2c4f95034b5002bbd1f6774cddd50b3e24090c174766d140f9083f980de03896 +size 3477301 diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp index 658ae62..be87747 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.cpp @@ -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(InitCombatWidget->GetWidgetFromName("ReloadSlider")); + CombatSystem = Cast(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(GetWorld()->GetGameState())->StartCombat(TargetEnemy); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.h b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.h index e94c410..9db6d2a 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/HoldToInitCombat.h @@ -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; diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp index 19b5a3b..b1f3cc8 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -149,6 +149,21 @@ void ATurnBaseCombatV2::BeginPlay() } PlayerHealth = &Cast(PlayerActor)->Health; + TArray AllActorsInScene; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), APostProcessVolume::StaticClass(), AllActorsInScene); + if (ensureMsgf(AllActorsInScene.Num() > 0, TEXT("No Post Processing Volume in scene"))) + { + PostProcessVolume = Cast(AllActorsInScene[0]); + } + + if (IsValid(RedVignetteMaterialInstance)) + { + FWeightedBlendable WeightedBlendable; + WeightedBlendable.Object = RedVignetteMaterialInstance; + WeightedBlendable.Weight = 1.0f; + PostProcessVolume->Settings.WeightedBlendables.Array.Add(WeightedBlendable); + } + CombatTutorialWidgetInstance = CreateWidget(GetWorld(), CombatTutorialWidget); HUD = CreateWidget(GetWorld(), HUDWidget); TArray 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) diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h index a515768..daf6c4a 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -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 ThornsStatusEffect; UPROPERTY()