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