第一次提交

This commit is contained in:
不明不惑
2026-03-03 01:23:02 +08:00
commit 3e434877e8
1053 changed files with 102411 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameplayAbilitySpec.h"
#include "Abilities/GameplayAbility.h"
#include "GGA_AbilityCost.generated.h"
/**
* Base class for defining costs associated with a gameplay ability (e.g., ammo, charges).
* 定义与游戏技能相关成本的基类(例如弹药、次数)。
*/
UCLASS(Blueprintable, DefaultToInstanced, EditInlineNew, Abstract)
class GENERICGAMEPLAYABILITIES_API UGGA_AbilityCost : public UObject
{
GENERATED_BODY()
public:
/**
* Constructor for the ability cost.
* 技能成本构造函数。
*/
UGGA_AbilityCost()
{
}
/**
* Checks if the ability cost can be afforded.
* 检查是否能支付技能成本。
* @param Ability The gameplay ability. 游戏技能。
* @param Handle The ability spec handle. 技能句柄。
* @param ActorInfo The actor info. Actor信息。
* @param OptionalRelevantTags Tags for failure reasons (optional, output). 失败原因标签(可选,输出)。
* @return True if the cost can be paid, false otherwise. 如果成本可支付则返回true否则返回false。
*/
virtual bool CheckCost(const UGameplayAbility* Ability, const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, FGameplayTagContainer* OptionalRelevantTags) const;
/**
* Applies the ability cost to the target.
* 将技能成本应用于目标。
* @param Ability The gameplay ability. 游戏技能。
* @param Handle The ability spec handle. 技能句柄。
* @param ActorInfo The actor info. Actor信息。
* @param ActivationInfo The activation info. 激活信息。
*/
virtual void ApplyCost(const UGameplayAbility* Ability, const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo);
/**
* Checks if the cost should only be applied on a successful hit.
* 检查成本是否仅在成功命中时应用。
* @return True if the cost applies only on hit, false otherwise. 如果成本仅在命中时应用则返回true否则返回false。
*/
bool ShouldOnlyApplyCostOnHit() const { return bOnlyApplyCostOnHit; }
protected:
/**
* Blueprint event for checking the ability cost.
* 检查技能成本的蓝图事件。
* @param Ability The gameplay ability. 游戏技能。
* @param Handle The ability spec handle. 技能句柄。
* @param ActorInfo The actor info. Actor信息。
* @param OptionalRelevantTags Tags for failure reasons. 失败原因标签。
* @return True if the cost can be paid, false otherwise. 如果成本可支付则返回true否则返回false。
*/
UFUNCTION(BlueprintImplementableEvent, Category=Costs, meta=(DisplayName="Check Cost"))
bool BlueprintCheckCost(const UGameplayAbility* Ability, const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo& ActorInfo,
const FGameplayTagContainer& OptionalRelevantTags) const;
/**
* Blueprint event for applying the ability cost.
* 应用技能成本的蓝图事件。
* @param Ability The gameplay ability. 游戏技能。
* @param Handle The ability spec handle. 技能句柄。
* @param ActorInfo The actor info. Actor信息。
* @param ActivationInfo The activation info. 激活信息。
*/
UFUNCTION(BlueprintImplementableEvent, Category=Costs, meta=(DisplayName="Apply Cost"))
void BlueprintApplyCost(const UGameplayAbility* Ability, const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo& ActorInfo, const FGameplayAbilityActivationInfo& ActivationInfo);
/**
* Determines if the cost applies only on a successful hit.
* 确定成本是否仅在成功命中时应用。
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Costs)
bool bOnlyApplyCostOnHit = false;
};