fix: clear selection on close
This commit is contained in:
		| @@ -103,21 +103,23 @@ 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; |  | ||||||
| 		for (const FName& PrereqID : SkillNode->NodeData.Prerequisites) |  | ||||||
| 		{ | 		{ | ||||||
| 			if (!IsSkillPurchased(PrereqID) && !IsSkillSelected(PrereqID)) | 			bool bWouldBeAvailable = true; | ||||||
|  | 			for (const FName& PrereqID : SkillNode->NodeData.Prerequisites) | ||||||
| 			{ | 			{ | ||||||
| 				bWouldBeAvailable = false; | 				if (!IsSkillPurchased(PrereqID) && !IsSkillSelected(PrereqID)) | ||||||
| 				break; | 				{ | ||||||
|  | 					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; | 		break; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user