#pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "SkillTreeTypes.h" #include "SkillTreeBlueprintLibrary.generated.h" // Forward declarations class USkillTreeComponent; UCLASS() class UTAD_UI_API USkillTreeBlueprintLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: // UI Helper Functions // Get state color for UI display UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Skill State Color")) static FLinearColor GetSkillStateColor(ESkillNodeState State); // Get state text for UI display UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Skill State Text")) static FText GetSkillStateText(ESkillNodeState State); // Check if a skill can be selected with detailed reason UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Skill Availability Text")) static FText GetSkillAvailabilityText(USkillTreeComponent* SkillTreeComponent, FName SkillID); // Get formatted description with current values UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Format Skill Description")) static FText FormatSkillDescription(const FSkillNodeData& NodeData); // Calculate total stats preview (including selected but not purchased skills) UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Preview Total Health Bonus")) static float GetPreviewTotalHealthBonus(USkillTreeComponent* SkillTreeComponent); UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Preview Total Damage Bonus")) static float GetPreviewTotalDamageBonus(USkillTreeComponent* SkillTreeComponent); UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Preview Total Speed Bonus")) static float GetPreviewTotalSpeedBonus(USkillTreeComponent* SkillTreeComponent); // Check if any skills are selected UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Has Selected Skills")) static bool HasSelectedSkills(USkillTreeComponent* SkillTreeComponent); // Check if player can respec UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Can Player Respec")) static bool CanPlayerRespec(USkillTreeComponent* SkillTreeComponent); // Get the connections between skills for line rendering UFUNCTION(BlueprintPure, Category = "Skill Tree UI", meta = (DisplayName = "Get Skill Connections")) static TArray GetSkillConnections(USkillTreeComponent* SkillTreeComponent, FName SkillID); };