fix: clear selection on close
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user