feat: reset button and only available if affordable

This commit is contained in:
2025-10-12 16:39:57 +02:00
parent 768ecf5ee3
commit 2db79670f6
4 changed files with 99 additions and 99 deletions

View File

@@ -24,19 +24,18 @@ protected:
// Current skill points available
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Skill Points", SaveGame)
int32 AvailableSkillPoints;
int32 AvailableSkillPoints = 0;
// Total skill points earned
UPROPERTY(BlueprintReadOnly, Category = "Skill Points", SaveGame)
int32 TotalSkillPointsEarned;
int32 TotalSkillPointsEarned = 0;
// Data table containing all skill definitions
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Skill Tree")
class UDataTable* SkillDataTable;
class UDataTable* SkillDataTable = nullptr;
// All skills loaded from the data table
UPROPERTY(BlueprintReadOnly, Category = "Skill Tree")
TMap<FName, FSkillNodeRuntime> AllSkills;
TMap<FName, FSkillNodeRuntime> AllSkills = {};
// Currently purchased skills
UPROPERTY(BlueprintReadOnly, Category = "Skill Tree", SaveGame)
@@ -93,10 +92,8 @@ public:
// Skill State Queries
UFUNCTION(BlueprintPure, Category = "Skill State")
bool IsSkillPurchased(FName SkillID) const;
UFUNCTION(BlueprintPure, Category = "Skill State")
bool IsSkillSelected(FName SkillID) const;
UFUNCTION(BlueprintPure, Category = "Skill State")
bool IsSkillAvailable(FName SkillID) const;
@@ -116,19 +113,15 @@ public:
// Calculate total bonuses from purchased skills
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalHealthBonus() const;
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalDamageBonus() const;
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalSpeedBonus() const;
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalHealthBonusPercent() const;
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalDamageBonusPercent() const;
UFUNCTION(BlueprintPure, Category = "Skill Bonuses")
float GetTotalSpeedBonusPercent() const;
@@ -139,16 +132,12 @@ public:
// Events
UPROPERTY(BlueprintAssignable, Category = "Skill Events")
FOnSkillPointsChanged OnSkillPointsChanged;
UPROPERTY(BlueprintAssignable, Category = "Skill Events")
FOnSkillPurchased OnSkillPurchased;
UPROPERTY(BlueprintAssignable, Category = "Skill Events")
FOnSkillSelectionChanged OnSkillSelectionChanged;
UPROPERTY(BlueprintAssignable, Category = "Skill Events")
FOnSkillStateChanged OnSkillStateChanged;
UPROPERTY(BlueprintAssignable, Category = "Skill Events")
FOnSelectionError OnSelectionError;
@@ -156,8 +145,9 @@ private:
// Internal helper functions
void UpdateSkillStates();
void UpdateSelectionCost();
bool ArePrerequisitesMet(const FSkillNodeData& SkillData) const;
bool ArePrerequisitesMet(const FSkillNodeData& SkillData, bool bIncludeSelected = false) const;
bool HasChildrenPurchased(FName SkillID) const;
void ApplySkillEffects(const FSkillNodeData& SkillData);
void RemoveSkillEffects(const FSkillNodeData& SkillData);
void CascadeDeselectDependents(FName SkillID);
};