fix: clear selection on close

This commit is contained in:
2025-10-12 15:38:53 +02:00
parent bf15db0066
commit 5c474baefb
2 changed files with 24 additions and 12 deletions

View File

@@ -103,21 +103,23 @@ bool USkillTreeComponent::SelectSkill(FName SkillID)
case ESkillNodeState::Locked:
// For locked skills, we allow selection but validate prerequisites
// This allows players to "plan" their build
bool bWouldBeAvailable = true;
for (const FName& PrereqID : SkillNode->NodeData.Prerequisites)
{
if (!IsSkillPurchased(PrereqID) && !IsSkillSelected(PrereqID))
bool bWouldBeAvailable = true;
for (const FName& PrereqID : SkillNode->NodeData.Prerequisites)
{
bWouldBeAvailable = false;
break;
if (!IsSkillPurchased(PrereqID) && !IsSkillSelected(PrereqID))
{
bWouldBeAvailable = false;
break;
}
}
if (!bWouldBeAvailable)
{
ErrorMessage = FText::FromString(TEXT(
"Prerequisites not selected. Select prerequisite skills first"));
OnSelectionError.Broadcast(SkillID, ErrorMessage);
return false;
}
}
if (!bWouldBeAvailable)
{
ErrorMessage = FText::FromString(TEXT(
"Prerequisites not selected. Select prerequisite skills first"));
OnSelectionError.Broadcast(SkillID, ErrorMessage);
return false;
}
break;

View File

@@ -12,6 +12,7 @@
#include "EnhancedInputSubsystems.h"
#include "Engine/LocalPlayer.h"
#include "Blueprint/UserWidget.h"
#include "SkillTree/SkillTreeComponent.h"
DEFINE_LOG_CATEGORY(LogTemplateCharacter);
@@ -225,6 +226,15 @@ void AUTAD_UIPlayerController::HideSkillTree()
{
if (SkillTreeWidget && SkillTreeWidget->IsInViewport())
{
// Clear any unconfirmed skill selections
if (AUTAD_UICharacter* Character = Cast<AUTAD_UICharacter>(GetPawn()))
{
if (USkillTreeComponent* SkillTreeComp = Character->GetSkillTreeComponent())
{
SkillTreeComp->ClearSelection();
}
}
SkillTreeWidget->RemoveFromParent();
// Restore game and UI input mode for top-down gameplay