Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UGA_Skill_Q 클래스 참조

#include <GA_Skill_Q.h>

UGA_Skill_Q에 대한 상속 다이어그램 :
Inheritance graph
UGA_Skill_Q에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 UGA_Skill_Q ()
 
virtual void ActivateAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData *TriggerEventData) override
 
virtual bool CanActivateAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayTagContainer *SourceTags=nullptr, const FGameplayTagContainer *TargetTags=nullptr, OUT FGameplayTagContainer *OptionalRelevantTags=nullptr) const override
 
- UGA_SkillBase(으)로부터 상속된 Public 멤버 함수
 UGA_SkillBase ()
 
virtual const FGameplayTagContainer * GetCooldownTags () const override
 
virtual void ApplyCooldown (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
- UGA_CombatBase(으)로부터 상속된 Public 멤버 함수
 UGA_CombatBase ()
 
virtual void OnGiveAbility (const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilitySpec &Spec) override
 
virtual void EndAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
 
FORCEINLINE bool GetHitStopEnable () const
 
- UGA_Base(으)로부터 상속된 Public 멤버 함수
 UGA_Base ()
 

Protected 멤버 함수

virtual void ApplyCombatData () override
 
- UGA_SkillBase(으)로부터 상속된 Protected 멤버 함수
void OnCompleteCallback ()
 
void OnInterruptedCallback ()
 
virtual bool CheckCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayTagContainer *OptionalRelevantTags) const override
 
virtual void ApplyCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
- UGA_CombatBase(으)로부터 상속된 Protected 멤버 함수
void SetupHitCheckListeners ()
 
void SetupSingleHitCheckListener ()
 
void OnHitCheckStart (FGameplayEventData Payload)
 
void OnHitCheckEnd (FGameplayEventData Payload)
 
void OnSingleHitCheck (FGameplayEventData Payload)
 
void OnTraceResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CurrentLevel)
 
void GetValidTargets (const FGameplayAbilityTargetDataHandle &TargetDataHandle, TArray< AActor * > &OutValidActors) const
 
void ApplyEffectsToTargets (const TArray< AActor * > &TargetActors, float CurrentLevel)
 
void ApplyKnockbackToTargets (const TArray< AActor * > &TargetActors, AActor *Attacker)
 
void ApplyGlobalHitStop ()
 
FORCEINLINE void SetHitStopEnabled (bool bEnable)
 
- UGA_Base(으)로부터 상속된 Protected 멤버 함수
bool GetCursorData (FVector &TargetPos, FRotator &TargetRot) const
 
void MotionWarpTargetToCursor (FName WarpTargetName=FName("Target"))
 
void RotateCharacterToCursor ()
 

Protected 속성

TArray< TObjectPtr< UAnimMontage > > ComboActionMontages
 
TSubclassOf< UGameplayEffect > ComboWindowEffectClass
 
- UGA_SkillBase(으)로부터 상속된 Protected 속성
TObjectPtr< UAnimMontage > SkillActionMontage
 
- UGA_CombatBase(으)로부터 상속된 Protected 속성
TObjectPtr< UAT_TraceActiveTraceTask
 
TSubclassOf< ATA_TraceHitTraceClass
 
TArray< TSubclassOf< UGameplayEffect > > TargetEffectClasses
 
FGameplayTag HitCheckStartTag
 
FGameplayTag HitCheckEndTag
 
TEnumAsByte< ECollisionChannel > TraceChannel
 
uint8 bApplyKnockback: 1 = false
 
float KnockbackStrength = 700.0f
 
float KnockbackZComponent = 0.2f
 
uint8 bApplyHitStop: 1 = false
 
float HitStopDuration = 0.05f
 
float HitStopTimeDilation = 0.1f
 

추가로 상속된 멤버들

- UGA_SkillBase(으)로부터 상속된 Public 속성
FGameplayTag CooldownTag
 
float CostValue
 
float CooldownDuration
 
- UGA_CombatBase(으)로부터 상속된 Public 속성
TObjectPtr< UCombatDataBaseCombatData
 

생성자 & 소멸자 문서화

◆ UGA_Skill_Q()

UGA_Skill_Q::UGA_Skill_Q ( )
13{
14}

멤버 함수 문서화

◆ ActivateAbility()

void UGA_Skill_Q::ActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
const FGameplayEventData *  TriggerEventData 
)
overridevirtual

UGA_SkillBase(으)로부터 재구현되었습니다.

34{
35 if (!CheckCost(Handle, ActorInfo, nullptr))
36 {
37 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
38 return;
39 }
40
41 ACK_CharacterPlayer* TargetCharacter = Cast<ACK_CharacterPlayer>(ActorInfo->AvatarActor.Get());
42 if (!TargetCharacter)
43 {
44 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
45 return;
46 }
47
48 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
49 if (!ASC)
50 {
51 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
52 return;
53 }
54
55 int32 CurrentComboCount = ASC->GetGameplayEffectCount(ComboWindowEffectClass, ASC);
56 if (!ComboActionMontages.IsValidIndex(CurrentComboCount))
57 {
58 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
59 return;
60 }
61 UAnimMontage* MontageToPlay = ComboActionMontages[CurrentComboCount];
62 bool bIsLastCombo = (CurrentComboCount == ComboActionMontages.Num() - 1);
63
64 bool bDefaultHitStop = CombatData ? CombatData->bApplyHitStop : false;
65 SetHitStopEnabled(bIsLastCombo ? bDefaultHitStop : false);
66
67 if (CurrentComboCount == 0 || bIsLastCombo)
68 {
69 ApplyCooldown(Handle, ActorInfo, ActivationInfo);
70 }
71
72 ApplyCost(Handle, ActorInfo, ActivationInfo);
73
74 if (bIsLastCombo)
75 {
76 // 모든 ComboWindow GE 삭제
77 ASC->RemoveActiveGameplayEffectBySourceEffect(ComboWindowEffectClass, ASC, -1);
78 }
79 else
80 {
82 {
83 FGameplayEffectSpecHandle SpecHandle = MakeOutgoingGameplayEffectSpec(ComboWindowEffectClass, GetAbilityLevel());
84 if (SpecHandle.IsValid())
85 {
86 (void)ApplyGameplayEffectSpecToOwner(Handle, ActorInfo, ActivationInfo, SpecHandle);
87 }
88 }
89 }
90
91 if (MontageToPlay)
92 {
94
96
97 UAbilityTask_PlayMontageAndWait* PlayMontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, TEXT("SkillMontage"), MontageToPlay, 1.0f);
98
99 PlayMontageTask->OnCompleted.AddDynamic(this, &ThisClass::OnCompleteCallback);
100 PlayMontageTask->OnInterrupted.AddDynamic(this, &ThisClass::OnInterruptedCallback);
101 PlayMontageTask->ReadyForActivation();
102 }
103 else
104 {
105 EndAbility(Handle, ActorInfo, ActivationInfo, true, false);
106 }
107}
Definition CK_CharacterPlayer.h:20
void RotateCharacterToCursor()
Definition GA_Base.cpp:58
FORCEINLINE void SetHitStopEnabled(bool bEnable)
Definition GA_CombatBase.h:60
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:68
void SetupHitCheckListeners()
Definition GA_CombatBase.cpp:64
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_CombatBase.cpp:44
virtual void ApplyCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_SkillBase.cpp:124
virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_SkillBase.cpp:160
virtual bool CheckCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayTagContainer *OptionalRelevantTags) const override
Definition GA_SkillBase.cpp:87
TArray< TObjectPtr< UAnimMontage > > ComboActionMontages
Definition GA_Skill_Q.h:28
TSubclassOf< UGameplayEffect > ComboWindowEffectClass
Definition GA_Skill_Q.h:31
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCombatData()

void UGA_Skill_Q::ApplyCombatData ( )
overrideprotectedvirtual

UGA_SkillBase(으)로부터 재구현되었습니다.

17{
18 Super::ApplyCombatData();
19
20 USkillData* Data = Cast<USkillData>(CombatData);
21 if (!Data)
22 {
23 return;
24 }
25
26 if (const FSkillComboData* Combo = Data->ExtendedData.GetPtr<FSkillComboData>())
27 {
28 ComboActionMontages = Combo->ComboActionMontages;
29 ComboWindowEffectClass = Combo->ComboWindowEffectClass;
30 }
31}
Definition SkillData.h:33
FInstancedStruct ExtendedData
Definition SkillData.h:53
Definition SkillData.h:21

◆ CanActivateAbility()

bool UGA_Skill_Q::CanActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayTagContainer *  SourceTags = nullptr,
const FGameplayTagContainer *  TargetTags = nullptr,
OUT FGameplayTagContainer *  OptionalRelevantTags = nullptr 
) const
overridevirtual
110{
111 if (!ActorInfo)
112 {
113 return false;
114 }
115
116 UAbilitySystemComponent* ASC = ActorInfo->AbilitySystemComponent.Get();
117 if (!ASC)
118 {
119 return false;
120 }
121
122 bool bIsAnySkillActive = ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_COMBAT_SKILL);
123 bool bIsQActive = ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_COMBAT_SKILL_Q);
124 bool bIsComboWindow = ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_COMBAT_COMBOWINDOW);
125 // (보험: 태그 갱신 딜레이 대비 스택 확인)
126 if (!bIsComboWindow && ComboWindowEffectClass)
127 {
128 bIsComboWindow = (ASC->GetGameplayEffectCount(ComboWindowEffectClass, nullptr) > 0);
129 }
130
131 // 콤보 이펙트가 있으면 -> Q2타
132 if (bIsComboWindow)
133 {
134 // Q 스킬이 아닌 다른 스킬이 사용중일경우 false
135 if (bIsAnySkillActive && !bIsQActive)
136 {
137 return false;
138 }
139
140 if (!CheckCost(Handle, ActorInfo, OptionalRelevantTags))
141 {
142 return false;
143 }
144
145 // Q2타
146 return true;
147 }
148
149 // 다른 스킬 사용중인지
150 if (bIsAnySkillActive)
151 {
152 return false;
153 }
154
155 // 1타
156 return Super::CanActivateAbility(Handle, ActorInfo, SourceTags, TargetTags, OptionalRelevantTags);
157}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ ComboActionMontages

TArray<TObjectPtr<UAnimMontage> > UGA_Skill_Q::ComboActionMontages
protected

◆ ComboWindowEffectClass

TSubclassOf<UGameplayEffect> UGA_Skill_Q::ComboWindowEffectClass
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: