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,6 +103,7 @@ bool USkillTreeComponent::SelectSkill(FName SkillID)
case ESkillNodeState::Locked: case ESkillNodeState::Locked:
// For locked skills, we allow selection but validate prerequisites // For locked skills, we allow selection but validate prerequisites
// This allows players to "plan" their build // This allows players to "plan" their build
{
bool bWouldBeAvailable = true; bool bWouldBeAvailable = true;
for (const FName& PrereqID : SkillNode->NodeData.Prerequisites) for (const FName& PrereqID : SkillNode->NodeData.Prerequisites)
{ {
@@ -119,6 +120,7 @@ bool USkillTreeComponent::SelectSkill(FName SkillID)
OnSelectionError.Broadcast(SkillID, ErrorMessage); OnSelectionError.Broadcast(SkillID, ErrorMessage);
return false; return false;
} }
}
break; break;
case ESkillNodeState::Available: case ESkillNodeState::Available:

View File

@@ -12,6 +12,7 @@
#include "EnhancedInputSubsystems.h" #include "EnhancedInputSubsystems.h"
#include "Engine/LocalPlayer.h" #include "Engine/LocalPlayer.h"
#include "Blueprint/UserWidget.h" #include "Blueprint/UserWidget.h"
#include "SkillTree/SkillTreeComponent.h"
DEFINE_LOG_CATEGORY(LogTemplateCharacter); DEFINE_LOG_CATEGORY(LogTemplateCharacter);
@@ -225,6 +226,15 @@ void AUTAD_UIPlayerController::HideSkillTree()
{ {
if (SkillTreeWidget && SkillTreeWidget->IsInViewport()) 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(); SkillTreeWidget->RemoveFromParent();
// Restore game and UI input mode for top-down gameplay // Restore game and UI input mode for top-down gameplay