From cd17363421925eaaa9af01c2c76ab04dd3d51358 Mon Sep 17 00:00:00 2001 From: PHILIP White Date: Mon, 30 Jan 2023 23:03:20 +0000 Subject: [PATCH] Removed Legacy Source Code to Reduce Compilation --- Content/Levels/CombatTest.umap | 3 - Content/Levels/RealTimeCombatSystemTest.umap | 3 - .../RealTimeCombat/RealTimeCombat.cpp | 319 ------------------ .../RealTimeCombat/RealTimeCombat.h | 127 ------- .../PlayerCharacterCombatTest.cpp | 35 -- .../PlayerCharacterCombatTest.h | 29 -- .../TurnBasedCombat/TurnBaseCombat.cpp | 297 ---------------- .../TurnBasedCombat/TurnBaseCombat.h | 145 -------- 8 files changed, 958 deletions(-) delete mode 100644 Content/Levels/CombatTest.umap delete mode 100644 Content/Levels/RealTimeCombatSystemTest.umap delete mode 100644 Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.cpp delete mode 100644 Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.h delete mode 100644 Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp delete mode 100644 Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h delete mode 100644 Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp delete mode 100644 Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h diff --git a/Content/Levels/CombatTest.umap b/Content/Levels/CombatTest.umap deleted file mode 100644 index a1a8b59..0000000 --- a/Content/Levels/CombatTest.umap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9336348b2e1f84fb09314f0877836bec1973c977e1368b37276d5ab3db5344f -size 36124 diff --git a/Content/Levels/RealTimeCombatSystemTest.umap b/Content/Levels/RealTimeCombatSystemTest.umap deleted file mode 100644 index 9535012..0000000 --- a/Content/Levels/RealTimeCombatSystemTest.umap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fdfa02987672d19d3e4258aa21b585b6756ac110117681237b05928a3ae2891 -size 78727 diff --git a/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.cpp b/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.cpp deleted file mode 100644 index 4242df1..0000000 --- a/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.cpp +++ /dev/null @@ -1,319 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "RealTimeCombat.h" -#include "CoreMinimal.h" -#include "Blueprint/UserWidget.h" -#include "Components/TextBlock.h" -#include "Components/ProgressBar.h" -#include "Kismet/GameplayStatics.h" - - -ARealTimeCombat::ARealTimeCombat() -{ - PrimaryActorTick.bCanEverTick = true; - if (HUDWidget == nullptr) - { - // Load the HUD widget from the specified path - static ConstructorHelpers::FClassFinder HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI_RT")); - HUDWidget = HUDWidgetClass.Class; - } -} - -void ARealTimeCombat::StartCombat() -{ - if (HUD->IsInViewport()) return; - HUD->AddToViewport(); - bStartTimer = true; - //EnemyActor = Enemy; - - // if (APlayerController* PC = Cast(GetWorld()->GetFirstPlayerController())) - // { - // PC->bShowMouseCursor = true; - // PC->bEnableClickEvents = true; - // PC->bEnableMouseOverEvents = true; - // } -} - -void ARealTimeCombat::EndCombat() -{ - //Remove the HUD from the viewport - HUD->RemoveFromViewport(); -} - -void ARealTimeCombat::OnMouseClick() -{ - ExecuteCast(CurrentComboString); -} - -void ARealTimeCombat::OnQPress() -{ - if (ActiveActionPoints <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); - return; - } - if (IronResource <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Iron")); - return; - } - UseActionPoint(); - CurrentComboString.AppendChar('F'); - UpdateComboString(CurrentComboString); - IronResource -= 1; - UpdateResourceBars(); -} - -void ARealTimeCombat::OnEPress() -{ - if (ActiveActionPoints <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); - return; - } - if (SulfurResource <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Sulfur")); - return; - } - UseActionPoint(); - CurrentComboString.AppendChar('W'); - UpdateComboString(CurrentComboString); - SulfurResource -= 1; - UpdateResourceBars(); -} - -void ARealTimeCombat::OnBackspacePress() -{ - if (CurrentComboString.Len() <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Blank Combo")); - return; - } - ReuseActionPoint(); - if (CurrentComboString.Right(1) == "F") - { - IronResource += 1; - } - else if (CurrentComboString.Right(1) == "W") - { - SulfurResource += 1; - } - CurrentComboString.RemoveAt(CurrentComboString.Len() - 1); - UpdateComboString(CurrentComboString); - UpdateResourceBars(); -} - -void ARealTimeCombat::BeginPlay() -{ - Super::BeginPlay(); - - TArray AllCharacterActorsInScene; - UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Enemy"), AllCharacterActorsInScene); - for (AActor* Actor : AllCharacterActorsInScene) - { - EnemyActor = Cast(Actor); - } - - UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Player"), AllCharacterActorsInScene); - for (AActor* Actor : AllCharacterActorsInScene) - { - PlayerActor = Cast(Actor); - } - - HUD = CreateWidget(GetWorld(), HUDWidget); - - CurrentComboTextBlock = Cast(HUD->GetWidgetFromName("CurrentCombo")); - ActionPointsTextBlock = Cast(HUD->GetWidgetFromName("ActionPoints")); - BattleLogTextBlock = Cast(HUD->GetWidgetFromName("BattleLog")); - PlayerHealthBar = Cast(HUD->GetWidgetFromName("PlayerHealthBar")); - EnemyHealthBar = Cast(HUD->GetWidgetFromName("EnemyHealthBar")); - IronResourceBar = Cast(HUD->GetWidgetFromName("IronResourceBar")); - SulfurResourceBar = Cast(HUD->GetWidgetFromName("SulfurResourceBar")); - ActionPointsBar = Cast(HUD->GetWidgetFromName("ActionPointsBar")); -} - -void ARealTimeCombat::ExecuteCast(FString Combo) -{ - if (!IsValidCombo(Combo)) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo")); - //For each character in the current combo add back the resource - for (int i = 0; i < Combo.Len(); i++) - { - if (Combo[i] == 'F') - { - IronResource += 1; - } - else if (Combo[i] == 'W') - { - SulfurResource += 1; - } - } - CurrentComboString = ""; - UpdateComboString(CurrentComboString); - RevertActionPoints(); - UpdateActionPoints(); - UpdateResourceBars(); - return; - } - - CurrentComboString = ""; - UpdateComboString(CurrentComboString); - RevertActionPoints(); - UpdateActionPoints(); - - if (!HitEnemy()) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Missed")); - return; - } - - switch (bIsPlayerTurn) - { - case true: - // Player Turn - DamageEnemy(*ValidCombos.Find(Combo)); - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo))); - break; - case false: - // Enemy Turn - DamagePlayer(*ValidCombos.Find(Combo)); - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo))); - break; - } - //End Combat if either the player or enemy is dead - if (EnemyHealth <= 0) - { - EndCombat(); - EnemyActor->Destroy(); - return; - } - if (PlayerHealth <= 0) - { - EndCombat(); - return; - } - - // SwitchTurn(); -} - -void ARealTimeCombat::UseActionPoint() -{ - if (HeldActionPoints > 0 && ActiveActionPoints <= HeldActionPoints) - { - ActiveActionPoints -= 1; - UpdateActionPoints(); - } -} - -void ARealTimeCombat::ReuseActionPoint() -{ - ActiveActionPoints += 1; - UpdateActionPoints(); -} - -void ARealTimeCombat::RevertActionPoints() -{ - ActiveActionPoints = HeldActionPoints; - UpdateActionPoints(); -} - -void ARealTimeCombat::DamagePlayer(int Damage) -{ - PlayerHealth -= FMath::Clamp(Damage, 0, 100); - UpdateProgressBars(); - AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage) + " damage."); -} - -void ARealTimeCombat::DamageEnemy(int Damage) -{ - EnemyHealth -= FMath::Clamp(Damage, 0, 100); - UpdateProgressBars(); - AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage) + " damage."); -} - -void ARealTimeCombat::UpdateProgressBars() const -{ - PlayerHealthBar->SetPercent(PlayerHealth / 100.0f); - EnemyHealthBar->SetPercent(EnemyHealth / 100.0f); -} - -void ARealTimeCombat::Tick(float DeltaSeconds) -{ - Super::Tick(DeltaSeconds); - if (ActionPointsTimer >= 1.0f && HeldActionPoints < MaxActionPoints && bStartTimer) - { - HeldActionPoints += 1; - ActiveActionPoints += 1; - UpdateActionPoints(); - ActionPointsTimer = 0.0f; - } - else - { - ActionPointsTimer += DeltaSeconds; - ActionPointsBar->SetPercent(ActionPointsTimer); - } -} - -bool ARealTimeCombat::IsValidCombo(FString Combo) const -{ - return ValidCombos.Contains(Combo); -} - -void ARealTimeCombat::UpdateComboString(FString NewCombo) const -{ - CurrentComboTextBlock->SetText(FText::FromString(NewCombo)); -} - -void ARealTimeCombat::UpdateActionPoints() const -{ - ActionPointsTextBlock->SetText(FText::FromString(FString::FromInt(ActiveActionPoints))); -} - -void ARealTimeCombat::AddBattleLogMessage(FString Message) -{ - BattleLog.Append(Message + "\n"); - UpdateBattleLog(); -} - -void ARealTimeCombat::ClearBattleLog() -{ - BattleLog = ""; -} - -void ARealTimeCombat::UpdateBattleLog() -{ - TArray TempArray; - if (const int32 LineCount = BattleLog.ParseIntoArray(TempArray, TEXT("\n"), true); LineCount > 10) - { - ClearBattleLog(); - } - BattleLogTextBlock->SetText(FText::FromString(BattleLog)); -} - -void ARealTimeCombat::UpdateResourceBars() const -{ - IronResourceBar->SetPercent(IronResource / 10.0f); - SulfurResourceBar->SetPercent(SulfurResource / 10.0f); -} - -bool ARealTimeCombat::HitEnemy() const -{ - FHitResult HitResult; - FVector Start = PlayerActor->GetActorLocation(); - FVector End = PlayerActor->GetActorForwardVector() * 1000.0f + Start; - FCollisionQueryParams CollisionParams; - CollisionParams.AddIgnoredActor(PlayerActor); - if (GetWorld()->LineTraceSingleByChannel(HitResult, Start, End, ECC_Pawn, CollisionParams)) - { - DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 5.0f, 0, 10.0f); - if (HitResult.GetActor() == EnemyActor) - { - return true; - } - } - DrawDebugLine(GetWorld(), Start, End, FColor::Red, false, 5.0f, 0, 10.0f); - return false; -} diff --git a/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.h b/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.h deleted file mode 100644 index c6cfae9..0000000 --- a/Source/the_twilight_abyss/RealTimeCombat/RealTimeCombat.h +++ /dev/null @@ -1,127 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/Button.h" -#include "Components/ProgressBar.h" -#include "Components/TextBlock.h" -#include "GameFramework/GameStateBase.h" -#include "RealTimeCombat.generated.h" - -UCLASS() -class THE_TWILIGHT_ABYSS_API ARealTimeCombat : public AGameStateBase -{ - GENERATED_BODY() - ARealTimeCombat(); - - UPROPERTY(EditDefaultsOnly) - int PlayerHealth = 100; - UPROPERTY(EditDefaultsOnly) - int EnemyHealth = 100; - UPROPERTY(EditDefaultsOnly) - int MaxActionPoints = 3; - UPROPERTY(EditDefaultsOnly) - int ActiveActionPoints = 0; - UPROPERTY(EditDefaultsOnly) - int IronResource = 10; // F - UPROPERTY(EditDefaultsOnly) - int SulfurResource = 10; // W - - UPROPERTY(VisibleAnywhere) - AActor* PlayerActor; - UPROPERTY(VisibleAnywhere) - AActor* EnemyActor; - // AActor* ActiveActor; - - /* - TODO: - Reference Player Inventory - */ - UPROPERTY(EditAnywhere) - TSubclassOf HUDWidget; - UPROPERTY(EditAnywhere) - TMap ValidCombos = - { - {"F", 10}, - {"W", 10}, - {"WW", 15}, - {"FW", 20}, - {"FFW", 30} - }; - - FString BattleLog; - - UFUNCTION(BlueprintCallable) - void StartCombat(); - UFUNCTION(BlueprintCallable) - void EndCombat(); - UFUNCTION(BlueprintCallable) - void OnMouseClick(); - UFUNCTION(BlueprintCallable) - void OnQPress(); - UFUNCTION(BlueprintCallable) - void OnEPress(); - UFUNCTION(BlueprintCallable) - void OnBackspacePress(); - -protected: - virtual void BeginPlay() override; - void ExecuteCast(FString Combo); - void UseActionPoint(); - void ReuseActionPoint(); - void RevertActionPoints(); - void DamagePlayer(int Damage); - void DamageEnemy(int Damage); - void UpdateProgressBars() const; - virtual void Tick(float DeltaSeconds) override; - -private: - bool IsValidCombo(FString Combo) const; - float ActionPointsTimer = 0.0f; - int HeldActionPoints = 0; - - UPROPERTY() - UUserWidget* HUD; - - UPROPERTY(VisibleAnywhere) - bool bIsPlayerTurn = true; - - UPROPERTY(VisibleAnywhere) - FString CurrentComboString = ""; - - UPROPERTY(VisibleAnywhere) - UTextBlock* CurrentComboTextBlock; - - UPROPERTY(VisibleAnywhere) - UTextBlock* BattleLogTextBlock; - - UPROPERTY(VisibleAnywhere) - UTextBlock* ActionPointsTextBlock; - - UPROPERTY(VisibleAnywhere) - UProgressBar* PlayerHealthBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* EnemyHealthBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* IronResourceBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* SulfurResourceBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* ActionPointsBar; - - void UpdateComboString(FString NewCombo) const; - void UpdateActionPoints() const; - - void AddBattleLogMessage(FString Message); - void ClearBattleLog(); - void UpdateBattleLog(); - void UpdateResourceBars() const; - bool HitEnemy() const; - - bool bStartTimer = false; -}; diff --git a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp deleted file mode 100644 index 99dbb55..0000000 --- a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "PlayerCharacterCombatTest.h" - -// Sets default values -APlayerCharacterCombatTest::APlayerCharacterCombatTest() -{ - // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. - PrimaryActorTick.bCanEverTick = true; - - Tags.Add(FName("Character")); -} - -// Called when the game starts or when spawned -void APlayerCharacterCombatTest::BeginPlay() -{ - Super::BeginPlay(); - -} - -// Called every frame -void APlayerCharacterCombatTest::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); - -} - -// Called to bind functionality to input -void APlayerCharacterCombatTest::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) -{ - Super::SetupPlayerInputComponent(PlayerInputComponent); - -} - diff --git a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h b/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h deleted file mode 100644 index ffffd26..0000000 --- a/Source/the_twilight_abyss/TurnBasedCombat/PlayerCharacterCombatTest.h +++ /dev/null @@ -1,29 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/Character.h" -#include "PlayerCharacterCombatTest.generated.h" - -UCLASS() -class THE_TWILIGHT_ABYSS_API APlayerCharacterCombatTest : public ACharacter -{ - GENERATED_BODY() - -public: - // Sets default values for this character's properties - APlayerCharacterCombatTest(); - -protected: - // Called when the game starts or when spawned - virtual void BeginPlay() override; - -public: - // Called every frame - virtual void Tick(float DeltaTime) override; - - // Called to bind functionality to input - virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; - -}; diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp deleted file mode 100644 index 8856b35..0000000 --- a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.cpp +++ /dev/null @@ -1,297 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "TurnBaseCombat.h" -#include "CoreMinimal.h" -#include "Blueprint/UserWidget.h" -#include "Components/TextBlock.h" -#include "Components/ProgressBar.h" -#include "Kismet/GameplayStatics.h" - -ATurnBaseCombat::ATurnBaseCombat() -{ - if (HUDWidget == nullptr) - { - // Load the HUD widget from the specified path - static ConstructorHelpers::FClassFinder HUDWidgetClass(TEXT("/Game/Blueprints/Combat_UI/Combat_UI")); - HUDWidget = HUDWidgetClass.Class; - } -} - -void ATurnBaseCombat::StartCombat(AActor* Enemy) -{ - if (HUD->IsInViewport()) return; - HUD->AddToViewport(); - EnemyActor = Enemy; - - if (APlayerController* PC = Cast(GetWorld()->GetFirstPlayerController())) - { - PC->bShowMouseCursor = true; - PC->bEnableClickEvents = true; - PC->bEnableMouseOverEvents = true; - } -} - -void ATurnBaseCombat::EndCombat() -{ - //Remove the HUD from the viewport - HUD->RemoveFromViewport(); -} - -void ATurnBaseCombat::BeginPlay() -{ - Super::BeginPlay(); - - TArray AllCharacterActorsInScene; - UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Character"), AllCharacterActorsInScene); - - HUD = CreateWidget(GetWorld(), HUDWidget); - - TurnIndicatorTextBlock = Cast(HUD->GetWidgetFromName("TurnIndicator")); - CurrentComboTextBlock = Cast(HUD->GetWidgetFromName("CurrentCombo")); - ActionPointsTextBlock = Cast(HUD->GetWidgetFromName("ActionPoints")); - BattleLogTextBlock = Cast(HUD->GetWidgetFromName("BattleLog")); - PlayerHealthBar = Cast(HUD->GetWidgetFromName("PlayerHealthBar")); - EnemyHealthBar = Cast(HUD->GetWidgetFromName("EnemyHealthBar")); - IronResourceBar = Cast(HUD->GetWidgetFromName("IronResourceBar")); - SulfurResourceBar = Cast(HUD->GetWidgetFromName("SulfurResourceBar")); - CastButton = Cast(HUD->GetWidgetFromName("CastButton")); - FButton = Cast(HUD->GetWidgetFromName("FButton")); - WButton = Cast(HUD->GetWidgetFromName("WButton")); - BackspaceButton = Cast(HUD->GetWidgetFromName("BackspaceButton")); - CastButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::CastButtonOnClick); - FButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::FButtonOnClick); - WButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::WButtonOnClick); - BackspaceButton->OnClicked.AddDynamic(this, &ATurnBaseCombat::BackspaceButtonOnClick); -} - -void ATurnBaseCombat::ExecuteCast(FString Combo) -{ - if (!IsValidCombo(Combo)) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Invalid Combo")); - //For each character in the current combo add back the resource - for (int i = 0; i < Combo.Len(); i++) - { - if (Combo[i] == 'F') - { - IronResource += 1; - } - else if (Combo[i] == 'W') - { - SulfurResource += 1; - } - } - CurrentComboString = ""; - UpdateComboString(CurrentComboString); - RevertActionPoints(); - UpdateActionPoints(); - UpdateResourceBars(); - return; - } - - CurrentComboString = ""; - UpdateComboString(CurrentComboString); - RevertActionPoints(); - UpdateActionPoints(); - - switch (bIsPlayerTurn) - { - case true: - // Player Turn - DamageEnemy(*ValidCombos.Find(Combo)); - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Enemy Damaged %d"), *ValidCombos.Find(Combo))); - break; - case false: - // Enemy Turn - DamagePlayer(*ValidCombos.Find(Combo)); - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Player Damaged %d"), *ValidCombos.Find(Combo))); - break; - } - //End Combat if either the player or enemy is dead - if (EnemyHealth <= 0) - { - EndCombat(); - EnemyActor->Destroy(); - return; - } - if (PlayerHealth <= 0) - { - EndCombat(); - return; - } - - SwitchTurn(); -} - -void ATurnBaseCombat::UseActionPoint() -{ - ActiveActionPoints += 1; - UpdateActionPoints(); -} - -void ATurnBaseCombat::ReuseActionPoint() -{ - ActiveActionPoints -= 1; - UpdateActionPoints(); -} - -void ATurnBaseCombat::RevertActionPoints() -{ - ActiveActionPoints = 0; - UpdateActionPoints(); -} - -void ATurnBaseCombat::DamagePlayer(int Damage) -{ - PlayerHealth -= FMath::Clamp(Damage, 0, 100); - UpdateProgressBars(); - AddBattleLogMessage("Player was damaged for " + FString::FromInt(Damage) + " damage."); -} - -void ATurnBaseCombat::DamageEnemy(int Damage) -{ - EnemyHealth -= FMath::Clamp(Damage, 0, 100); - UpdateProgressBars(); - AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage) + " damage."); -} - -void ATurnBaseCombat::UpdateProgressBars() const -{ - PlayerHealthBar->SetPercent(PlayerHealth / 100.0f); - EnemyHealthBar->SetPercent(EnemyHealth / 100.0f); -} - -bool ATurnBaseCombat::IsValidCombo(FString Combo) const -{ - return ValidCombos.Contains(Combo); -} - -void ATurnBaseCombat::SwitchTurn() -{ - //TurnIndicatorTextBlock->SetText(FText::FromString(bIsPlayerTurn ? "Enemy Turn" : "Player Turn")); - //bIsPlayerTurn = !bIsPlayerTurn; - TurnIndicatorTextBlock->SetText(FText::FromString("Enemy Turn")); - ToggleButtons(); - //wait for 2 seconds - FTimerHandle UnusedHandle; - GetWorldTimerManager().SetTimer(UnusedHandle, this, &ATurnBaseCombat::EnemyTurn, 2.0f, false); - - //activeActor = bIsPlayerTurn ? enemyActor : playerActor; -} - -void ATurnBaseCombat::CastButtonOnClick() -{ - ExecuteCast(CurrentComboString); -} - -void ATurnBaseCombat::FButtonOnClick() -{ - if (ActiveActionPoints >= DefaultActionPoints) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); - return; - } - if (IronResource <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Iron")); - return; - } - UseActionPoint(); - CurrentComboString.AppendChar('F'); - UpdateComboString(CurrentComboString); - IronResource -= 1; - UpdateResourceBars(); -} - -void ATurnBaseCombat::WButtonOnClick() -{ - if (ActiveActionPoints >= DefaultActionPoints) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Action Points")); - return; - } - if (SulfurResource <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("No More Sulfur")); - return; - } - UseActionPoint(); - CurrentComboString.AppendChar('W'); - UpdateComboString(CurrentComboString); - SulfurResource -= 1; - UpdateResourceBars(); -} - -void ATurnBaseCombat::BackspaceButtonOnClick() -{ - if (CurrentComboString.Len() <= 0) - { - GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Blank Combo")); - return; - } - ReuseActionPoint(); - if (CurrentComboString.Right(1) == "F") - { - IronResource += 1; - } - else if (CurrentComboString.Right(1) == "W") - { - SulfurResource += 1; - } - CurrentComboString.RemoveAt(CurrentComboString.Len() - 1); - UpdateComboString(CurrentComboString); - UpdateResourceBars(); -} - -void ATurnBaseCombat::UpdateComboString(FString NewCombo) const -{ - CurrentComboTextBlock->SetText(FText::FromString(NewCombo)); -} - -void ATurnBaseCombat::UpdateActionPoints() const -{ - ActionPointsTextBlock->SetText(FText::FromString(FString::FromInt(ActiveActionPoints))); -} - -void ATurnBaseCombat::AddBattleLogMessage(FString Message) -{ - BattleLog.Append(Message + "\n"); - UpdateBattleLog(); -} - -void ATurnBaseCombat::ClearBattleLog() -{ - BattleLog = ""; -} - -void ATurnBaseCombat::UpdateBattleLog() -{ - TArray TempArray; - if (const int32 LineCount = BattleLog.ParseIntoArray(TempArray, TEXT("\n"), true); LineCount > 10) - { - ClearBattleLog(); - } - BattleLogTextBlock->SetText(FText::FromString(BattleLog)); -} - -void ATurnBaseCombat::UpdateResourceBars() const -{ - IronResourceBar->SetPercent(IronResource / 10.0f); - SulfurResourceBar->SetPercent(SulfurResource / 10.0f); -} - -void ATurnBaseCombat::ToggleButtons() const -{ - FButton->SetIsEnabled(!FButton->bIsEnabled); - WButton->SetIsEnabled(!WButton->bIsEnabled); - BackspaceButton->SetIsEnabled(!BackspaceButton->bIsEnabled); - CastButton->SetIsEnabled(!CastButton->bIsEnabled); -} - -void ATurnBaseCombat::EnemyTurn() -{ - DamagePlayer(10); - TurnIndicatorTextBlock->SetText(FText::FromString("Player Turn")); - ToggleButtons(); -} diff --git a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h b/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h deleted file mode 100644 index 8b8409a..0000000 --- a/Source/the_twilight_abyss/TurnBasedCombat/TurnBaseCombat.h +++ /dev/null @@ -1,145 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "Components/Button.h" -#include "Components/ProgressBar.h" -#include "Components/TextBlock.h" -#include "GameFramework/GameStateBase.h" -#include "TurnBaseCombat.generated.h" - -/** - * - */ -UCLASS() -class THE_TWILIGHT_ABYSS_API ATurnBaseCombat : public AGameStateBase -{ - GENERATED_BODY() - -public: - ATurnBaseCombat(); - - UPROPERTY(EditDefaultsOnly) - int PlayerHealth = 100; - UPROPERTY(EditDefaultsOnly) - int EnemyHealth = 100; - UPROPERTY(EditDefaultsOnly) - int DefaultActionPoints = 3; - UPROPERTY(EditDefaultsOnly) - int ActiveActionPoints = 0; - UPROPERTY(EditDefaultsOnly) - int IronResource = 10; // F - UPROPERTY(EditDefaultsOnly) - int SulfurResource = 10; // W - - // AActor* PlayerActor; - UPROPERTY(VisibleAnywhere) - AActor* EnemyActor; - // AActor* ActiveActor; - - /* - TODO: - Reference Player Inventory - */ - UPROPERTY(EditAnywhere) - TSubclassOf HUDWidget; - UPROPERTY(EditAnywhere) - TMap ValidCombos = - { - {"F", 10}, - {"W", 10}, - {"WW", 15}, - {"FW", 20}, - {"FFW", 30} - }; - - FString BattleLog; - - UFUNCTION(BlueprintCallable) - void StartCombat(AActor* Enemy); - UFUNCTION(BlueprintCallable) - void EndCombat(); - -protected: - virtual void BeginPlay() override; - void ExecuteCast(FString Combo); - void UseActionPoint(); - void ReuseActionPoint(); - void RevertActionPoints(); - void DamagePlayer(int Damage); - void DamageEnemy(int Damage); - void UpdateProgressBars() const; - -private: - bool IsValidCombo(FString Combo) const; - - UPROPERTY() - UUserWidget* HUD; - - UPROPERTY(VisibleAnywhere) - bool bIsPlayerTurn = true; - - UPROPERTY(VisibleAnywhere) - FString CurrentComboString = ""; - - void SwitchTurn(); - - UPROPERTY(VisibleAnywhere) - UTextBlock* TurnIndicatorTextBlock; - - UPROPERTY(VisibleAnywhere) - UTextBlock* CurrentComboTextBlock; - - UPROPERTY(VisibleAnywhere) - UTextBlock* BattleLogTextBlock; - - UPROPERTY(VisibleAnywhere) - UTextBlock* ActionPointsTextBlock; - - UPROPERTY(VisibleAnywhere) - UProgressBar* PlayerHealthBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* EnemyHealthBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* IronResourceBar; - - UPROPERTY(VisibleAnywhere) - UProgressBar* SulfurResourceBar; - - UPROPERTY(VisibleAnywhere) - UButton* CastButton; - - UPROPERTY(VisibleAnywhere) - UButton* FButton; - - UPROPERTY(VisibleAnywhere) - UButton* WButton; - - UPROPERTY(VisibleAnywhere) - UButton* BackspaceButton; - - UFUNCTION() - void CastButtonOnClick(); - - UFUNCTION() - void FButtonOnClick(); - - UFUNCTION() - void WButtonOnClick(); - - UFUNCTION() - void BackspaceButtonOnClick(); - - void UpdateComboString(FString NewCombo) const; - void UpdateActionPoints() const; - - void AddBattleLogMessage(FString Message); - void ClearBattleLog(); - void UpdateBattleLog(); - void UpdateResourceBars() const; - void ToggleButtons() const; - void EnemyTurn(); -};