diff --git a/Content/Blueprints/Combat_UI/BookCombat_UI.uasset b/Content/Blueprints/Combat_UI/BookCombat_UI.uasset index a84ab5a..6de1978 100644 --- a/Content/Blueprints/Combat_UI/BookCombat_UI.uasset +++ b/Content/Blueprints/Combat_UI/BookCombat_UI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db5917badce17c133c0356a6348cb612efa49fc7e8fa84a46ba093120ee30d48 -size 123554 +oid sha256:ca7bf22c8b47c3e70ba53db3687e8d2d7eee77fa3e5d007ad10725be44b19bac +size 123309 diff --git a/Content/Blueprints/Combat_UI/CombatCharacter.uasset b/Content/Blueprints/Combat_UI/CombatCharacter.uasset index 81d6e54..e554a28 100644 --- a/Content/Blueprints/Combat_UI/CombatCharacter.uasset +++ b/Content/Blueprints/Combat_UI/CombatCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b14e899d3b8f72c09561fe40dd1bd18fc9f1120cefc74619dd51d9c808f4b226 -size 146591 +oid sha256:0937bad3411c906cc07f2119c01387e47590336e0c4c8610b975222ea79d5e3a +size 146662 diff --git a/Content/Blueprints/Combat_UI/CombatTutorial.uasset b/Content/Blueprints/Combat_UI/CombatTutorial.uasset index 102833c..3b2e409 100644 --- a/Content/Blueprints/Combat_UI/CombatTutorial.uasset +++ b/Content/Blueprints/Combat_UI/CombatTutorial.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e4e905636735097dd8236f8d76d106e084d61dc62ba8093ca5803ee9b49da64 -size 59478 +oid sha256:3902cdce2b55bc5f3715dab3d64f5dea287cb52481e8e12d47c4392b4dd5793f +size 64715 diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp index 713ca61..9609c99 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -35,47 +35,14 @@ ATurnBaseCombatV2::ATurnBaseCombatV2() void ATurnBaseCombatV2::StartCombat(AActor* Enemy) { if (Enemy == nullptr) return; + EnemyActor = Enemy; if (bIsInCombat) return; BookHUD->SetVisibility(ESlateVisibility::SelfHitTestInvisible); EscapePercentage = CalculateEscapePercentage(); EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString(FString::FromInt(EscapePercentage * 100)), FText::FromString("%"))); - const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY()); - GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2); bIsInCombat = true; UBlackboardComponent* EnemyBlackboard = Cast(Enemy->GetInstigatorController())->GetBlackboardComponent(); - if (!HasSeenTutorial) - { - ToggleButtons(); - CombatTutorialWidgetInstance = CreateWidget(GetWorld(), CombatTutorialWidget); - CombatTutorialWidgetInstance->AddToViewport(); - HasSeenTutorial = true; - } - - if (EnemyBlackboard->GetValueAsBool("IsInCombat")) return; - EnemyBlackboard->SetValueAsBool("IsInCombat", true); - FProperty* HealthProperty = Enemy->GetClass()->FindPropertyByName(FName("Health")); - int32* EnemyHealthPtr = HealthProperty->ContainerPtrToValuePtr(Enemy); - EnemyHealth = EnemyHealthPtr; - - if (EnemyBlackboard->GetValueAsBool("Sight")) - { - //bEnemyHasExtraTurn = true; - SwitchTurn(); - } - else - { - bPlayerHasExtraTurn = true; - } - - if (HUD->IsInViewport()) return; - //HUD->AddToViewport(); - EnemyActor = Enemy; - - ProbertiumResource = 10; - EisResource = 10; - AzosResource = 10; - IroquoidResource = 10; - + //Disable Character Movement APlayerController* PlayerController = GetWorld()->GetFirstPlayerController(); PlayerController->SetIgnoreMoveInput(true); @@ -89,23 +56,59 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy) LookAtRotation.Pitch = -9.0f; PlayerController->SetControlRotation(LookAtRotation); - //DrawDebugPoint(GetWorld(), Enemy->GetActorLocation(), 10, FColor::Red, false, 10); + if (EnemyBlackboard->GetValueAsBool("IsInCombat")) return; + EnemyBlackboard->SetValueAsBool("IsInCombat", true); + FProperty* HealthProperty = Enemy->GetClass()->FindPropertyByName(FName("Health")); + int32* EnemyHealthPtr = HealthProperty->ContainerPtrToValuePtr(Enemy); + EnemyHealth = EnemyHealthPtr; + + if (IsValid(CombatTutorialWidgetInstance) && CombatTutorialWidgetInstance->IsInViewport()) return; + if (!HasSeenTutorial) + { + DisableButtons(); + CombatTutorialWidgetInstance->AddToViewport(); + HasSeenTutorial = true; + return; + } + CombatCheck(); + //DrawDebugPoint(GetWorld(), Enemy->GetActorLocation(), 10, FColor::Red, false, 10); +} + +void ATurnBaseCombatV2::CombatCheck() +{ + const UBlackboardComponent* EnemyBlackboard = Cast(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); + + //TODO: REMOVE THIS + ProbertiumResource = 10; + EisResource = 10; + AzosResource = 10; + IroquoidResource = 10; + CurrentComboString = ""; UpdateComboString(CurrentComboString); RevertActionPoints(); UpdateActionPoints(); UpdateResourceBars(); ClearBattleLog(); + EnableButtons(); + + if (EnemyBlackboard->GetValueAsBool("Sight")) + { + //bEnemyHasExtraTurn = true; + SwitchTurn(); + } + else + { + bPlayerHasExtraTurn = true; + } } void ATurnBaseCombatV2::EndCombat() { BookHUD->SetVisibility(ESlateVisibility::Hidden); Cast(PlayerActor)->ResetWidgetPointer(); - const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY()); TurnIndicatorTextBlock->SetText(FText::FromString("")); - GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2); bEnemyHasExtraTurn = false; bPlayerHasExtraTurn = false; bIsInCombat = false; @@ -130,8 +133,6 @@ void ATurnBaseCombatV2::EndCombat() void ATurnBaseCombatV2::BeginPlay() { Super::BeginPlay(); - const FVector2D ViewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY()); - GetWorld()->GetFirstPlayerController()->SetMouseLocation(ViewportSize.X / 2, ViewportSize.Y / 2); TArray AllCharacterActorsInScene; @@ -142,6 +143,7 @@ void ATurnBaseCombatV2::BeginPlay() } PlayerHealth = &Cast(PlayerActor)->Health; + CombatTutorialWidgetInstance = CreateWidget(GetWorld(), CombatTutorialWidget); HUD = CreateWidget(GetWorld(), HUDWidget); TArray PlayerChildActors; PlayerActor->GetAllChildActors(PlayerChildActors, false); @@ -256,21 +258,6 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo) RevertActionPoints(); UpdateActionPoints(); - //Ends Combat if either the player or enemy is dead - if (*EnemyHealth <= 0) - { - EndCombat(); - EnemyActor->Destroy(); - return; - } - if (*PlayerHealth <= 0) - { - //EndCombat(); - DeathScreenWidget = CreateWidget(GetWorld(), DeathScreenWidgetSubclass); - DeathScreenWidget->AddToViewport(); - return; - } - //Damage Calculation switch (bIsPlayerTurn) { @@ -316,6 +303,20 @@ 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(); + EnemyActor->Destroy(); + return; + } + if (*PlayerHealth <= 0) + { + //EndCombat(); + DeathScreenWidget = CreateWidget(GetWorld(), DeathScreenWidgetSubclass); + DeathScreenWidget->AddToViewport(); + return; + } } void ATurnBaseCombatV2::DamageEnemy(int Damage, FString DamageType) @@ -323,6 +324,20 @@ void ATurnBaseCombatV2::DamageEnemy(int Damage, FString DamageType) *EnemyHealth -= FMath::Clamp(Damage * BaseDamageMultiplier, 0, 100); UpdateProgressBars(); AddBattleLogMessage("Enemy was damaged for " + FString::FromInt(Damage * BaseDamageMultiplier) + " HP by " + DamageType + "."); + //Ends Combat if either the player or enemy is dead + if (*EnemyHealth <= 0) + { + EndCombat(); + EnemyActor->Destroy(); + return; + } + if (*PlayerHealth <= 0) + { + //EndCombat(); + DeathScreenWidget = CreateWidget(GetWorld(), DeathScreenWidgetSubclass); + DeathScreenWidget->AddToViewport(); + return; + } } void ATurnBaseCombatV2::UpdateProgressBars() const @@ -501,6 +516,7 @@ void ATurnBaseCombatV2::RunButtonOnClick() SwitchTurn(); return; } + GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Escape Successful")); UBlackboardComponent* EnemyBlackboard = Cast(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); EscapePercentageTextBlock->SetText(FText::Join(FText::FromString(""), FText::FromString("--"), FText::FromString("%"))); EnemyBlackboard->SetValueAsBool("IsInCombat", false); @@ -571,6 +587,28 @@ void ATurnBaseCombatV2::ToggleButtons() const RunButton->SetIsEnabled(!RunButton->GetIsEnabled()); } +void ATurnBaseCombatV2::DisableButtons() const +{ + PButton->SetIsEnabled(false); + EButton->SetIsEnabled(false); + AButton->SetIsEnabled(false); + IButton->SetIsEnabled(false); + BackspaceButton->SetIsEnabled(false); + CastButton->SetIsEnabled(false); + RunButton->SetIsEnabled(false); +} + +void ATurnBaseCombatV2::EnableButtons() const +{ + PButton->SetIsEnabled(true); + EButton->SetIsEnabled(true); + AButton->SetIsEnabled(true); + IButton->SetIsEnabled(true); + BackspaceButton->SetIsEnabled(true); + CastButton->SetIsEnabled(true); + RunButton->SetIsEnabled(true); +} + void ATurnBaseCombatV2::EnemyTurn() { DamagePlayer(10); diff --git a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h index 0380d07..9bd7367 100644 --- a/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/Source/the_twilight_abyss/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -54,7 +54,7 @@ public: UPROPERTY(VisibleAnywhere) AActor* PlayerActor; - UPROPERTY(VisibleAnywhere) + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) AActor* EnemyActor; // AActor* ActiveActor; UPROPERTY(BlueprintReadWrite) @@ -71,7 +71,7 @@ public: TSubclassOf HUDWidget; UPROPERTY(EditAnywhere) TSubclassOf CombatTutorialWidget; - UPROPERTY() + UPROPERTY(BlueprintReadWrite) bool HasSeenTutorial = false; UPROPERTY(EditAnywhere) TMap ValidCombos = @@ -99,6 +99,8 @@ public: UFUNCTION(BlueprintCallable) void StartCombat(AActor* Enemy); UFUNCTION(BlueprintCallable) + void CombatCheck(); + UFUNCTION(BlueprintCallable) void EndCombat(); DECLARE_EVENT_TwoParams(ATurnBaseCombatV2, FOnPlayerTurn, AActor*, AActor*); @@ -217,6 +219,10 @@ private: void UpdateResourceBars() const; UFUNCTION(BlueprintCallable) void ToggleButtons() const; + UFUNCTION(BlueprintCallable) + void DisableButtons() const; + UFUNCTION(BlueprintCallable) + void EnableButtons() const; void EnemyTurn(); UPROPERTY()