第一次提交
This commit is contained in:
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user