Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
GA_SkillBase.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "GA_CombatBase.h"
8#include "GA_SkillBase.generated.h"
9
11
12UCLASS()
13class CK_UE_API UGA_SkillBase : public UGA_CombatBase
14{
15 GENERATED_BODY()
16
17public:
18 virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override;
19 virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
20
21protected:
22 virtual void ApplyCombatData() override;
23 virtual bool CheckCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, FGameplayTagContainer* OptionalRelevantTags) const override;
24 virtual void ApplyCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
25
26protected:
27 float GetSkillMontageSectionLength(const UAnimMontage* Montage, FName SectionName, bool bApplyPlayRate = false, float PlayRate = 1.0f) const;
28 bool HasClearStrikePath(const AMainPlayerCharacter* Player, const AActor* TargetActor) const;
29 void SetAvatarPawnCollisionResponse(ECollisionResponse Response) const;
30 float GetPlayerCurrentWeaponAttackRange() const;
31 void SetAvatarMeshHidden(bool bHidden) const;
32 void ResetSkillMontagePlayRate() const;
33
34 AActor* GetTargetActor() const;
35 UAnimMontage* GetSkillMontage(FGameplayTag PlayMontageTag = FGameplayTag::EmptyTag) const;
36 bool ContainsAllMontageSections(const UAnimMontage* Montage, TArray<FName> SectionNames) const;
37
38protected:
39 template<typename T>
40 const T* GetExtendedData() const;
41
42 template<typename T>
43 bool HasExtendedData() const;
44
45public:
46 const FGameplayTagContainer* GetCooldownTags() const
47 {
48 return &TempCooldownTags;
49 }
50
51protected:
52 UPROPERTY(Transient)
53 FGameplayTag CooldownTag;
54
55 UPROPERTY(Transient)
56 float CostValue;
57
58 UPROPERTY(Transient)
59 float CooldownDuration;
60
61private:
62 UPROPERTY(Transient)
63 FGameplayTagContainer TempCooldownTags;
64};
65
66
67template <typename T>
68inline const T* UGA_SkillBase::GetExtendedData() const
69{
70 static_assert(std::is_base_of_v<FCombatExtendedData, T>, "GetExtendedData<T>: T must derive from FCombatExtendedData");
71 return CombatData ? CombatData->FindExtendedData<T>() : nullptr;
72}
73
74
75template <typename T>
77{
78 return GetExtendedData<T>() ? true : false;
79}
Definition MainPlayerCharacter.h:39
Definition GA_CombatBase.h:22
Definition GA_SkillBase.h:14
bool HasExtendedData() const
Definition GA_SkillBase.h:76
const FGameplayTagContainer * GetCooldownTags() const
Definition GA_SkillBase.h:46