Added Interfacing to Blueprint UI via Game State
This commit is contained in:
parent
df51750a5e
commit
2a92b5577f
@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "TurnBaseCombat.h"
|
#include "TurnBaseCombat.h"
|
||||||
|
#include "CoreMinimal.h"
|
||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "Components/TextBlock.h"
|
||||||
|
#include "Components/ProgressBar.h"
|
||||||
#include "Kismet/GameplayStatics.h"
|
#include "Kismet/GameplayStatics.h"
|
||||||
|
|
||||||
ATurnBaseCombat::ATurnBaseCombat()
|
ATurnBaseCombat::ATurnBaseCombat()
|
||||||
@ -21,12 +23,38 @@ void ATurnBaseCombat::BeginPlay()
|
|||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
|
||||||
TArray<AActor*> AllCharacterActorsInScene;
|
TArray<AActor*> AllCharacterActorsInScene;
|
||||||
UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Character"),
|
UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Character"), AllCharacterActorsInScene);
|
||||||
AllCharacterActorsInScene);
|
|
||||||
ActiveActionPoints = DefaultActionPoints;
|
ActiveActionPoints = DefaultActionPoints;
|
||||||
|
|
||||||
UUserWidget* HUD = CreateWidget<UUserWidget>(GetWorld(), HUDWidget);
|
UUserWidget* HUD = CreateWidget<UUserWidget>(GetWorld(), HUDWidget);
|
||||||
HUD->AddToViewport();
|
HUD->AddToViewport();
|
||||||
|
|
||||||
|
TurnIndicator = Cast<UTextBlock>(HUD->GetWidgetFromName("TurnIndicator"));
|
||||||
|
PlayerHealthBar = Cast<UProgressBar>(HUD->GetWidgetFromName("PlayerHealthBar"));
|
||||||
|
EnemyHealthBar = Cast<UProgressBar>(HUD->GetWidgetFromName("EnemyHealthBar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ATurnBaseCombat::ExecuteCast(FString Combo)
|
||||||
|
{
|
||||||
|
if (!IsValidCombo(Combo))
|
||||||
|
{
|
||||||
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (bIsPlayerTurn)
|
||||||
|
{
|
||||||
|
case true:
|
||||||
|
// Player Turn
|
||||||
|
DamageEnemy(ValidCombos[Combo]);
|
||||||
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Enemy Damaged %f"), ValidCombos[Combo]);
|
||||||
|
break;
|
||||||
|
case false:
|
||||||
|
// Enemy Turn
|
||||||
|
DamagePlayer(ValidCombos[Combo]);
|
||||||
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Player Damaged %f"), ValidCombos[Combo]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ATurnBaseCombat::UseActionPoint()
|
void ATurnBaseCombat::UseActionPoint()
|
||||||
@ -46,6 +74,27 @@ void ATurnBaseCombat::RevertActionPoints()
|
|||||||
ActiveActionPoints = DefaultActionPoints;
|
ActiveActionPoints = DefaultActionPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ATurnBaseCombat::DamagePlayer(int Damage)
|
||||||
|
{
|
||||||
|
PlayerHealth -= FMath::Clamp(Damage, 0, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ATurnBaseCombat::DamageEnemy(int Damage)
|
||||||
|
{
|
||||||
|
EnemyHealth -= FMath::Clamp(Damage, 0, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ATurnBaseCombat::UpdateProgressBars() const
|
||||||
|
{
|
||||||
|
PlayerHealthBar->SetPercent(PlayerHealth / 100);
|
||||||
|
EnemyHealthBar->SetPercent(EnemyHealth / 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ATurnBaseCombat::IsValidCombo(FString Combo) const
|
||||||
|
{
|
||||||
|
return ValidCombos.Contains(Combo);
|
||||||
|
}
|
||||||
|
|
||||||
void ATurnBaseCombat::SwitchTurn()
|
void ATurnBaseCombat::SwitchTurn()
|
||||||
{
|
{
|
||||||
activeActor = bIsPlayerTurn ? enemyActor : playerActor;
|
activeActor = bIsPlayerTurn ? enemyActor : playerActor;
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
|
#include "Components/ProgressBar.h"
|
||||||
|
#include "Components/TextBlock.h"
|
||||||
#include "GameFramework/GameStateBase.h"
|
#include "GameFramework/GameStateBase.h"
|
||||||
#include "TurnBaseCombat.generated.h"
|
#include "TurnBaseCombat.generated.h"
|
||||||
|
|
||||||
@ -18,11 +20,11 @@ public:
|
|||||||
ATurnBaseCombat();
|
ATurnBaseCombat();
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
int PlayerHealth = 100;
|
int PlayerHealth = 100;
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
int EnemyHealth = 100;
|
int EnemyHealth = 100;
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
int DefaultActionPoints = 3;
|
int DefaultActionPoints = 3;
|
||||||
int ActiveActionPoints = 0;
|
int ActiveActionPoints = 0;
|
||||||
|
|
||||||
AActor* playerActor;
|
AActor* playerActor;
|
||||||
@ -37,15 +39,33 @@ public:
|
|||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere)
|
UPROPERTY(EditAnywhere)
|
||||||
TSubclassOf<UUserWidget> HUDWidget;
|
TSubclassOf<UUserWidget> HUDWidget;
|
||||||
|
UPROPERTY(EditAnywhere)
|
||||||
|
TMap<FString, int32> ValidCombos =
|
||||||
|
{
|
||||||
|
{"F", 10},
|
||||||
|
{"W", 10},
|
||||||
|
{"FW", 20}
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
|
void ExecuteCast(FString Combo);
|
||||||
void UseActionPoint();
|
void UseActionPoint();
|
||||||
void ReuseActionPoint();
|
void ReuseActionPoint();
|
||||||
void RevertActionPoints();
|
void RevertActionPoints();
|
||||||
|
void DamagePlayer(int Damage);
|
||||||
|
void DamageEnemy(int Damage);
|
||||||
|
void UpdateProgressBars() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UPROPERTY(EditDefaultsOnly)
|
bool IsValidCombo(FString Combo) const;
|
||||||
bool bIsPlayerTurn = true;
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
bool bIsPlayerTurn = true;
|
||||||
void SwitchTurn();
|
void SwitchTurn();
|
||||||
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
UTextBlock* TurnIndicator;
|
||||||
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
UProgressBar* PlayerHealthBar;
|
||||||
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
UProgressBar* EnemyHealthBar;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user