Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
GA_Skill_Charge.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
7#include "GA_Skill_Charge.generated.h"
8
9class UDataTable;
10class UAnimMontage;
11class UAbilityTask_PlayMontageAndWait;
12
13
14UCLASS()
15class CK_UE_API UGA_Skill_Charge : public UGA_SkillBase
16{
17 GENERATED_BODY()
18
19public:
20 virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override;
21 virtual void InputReleased(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) override;
22 virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override;
23
24protected:
25 virtual void ApplyCombatData() override;
26 virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
27
28 void OnPhaseReached(int32 InPhase);
29
30 void ApplyChargePhaseEffects(int32 PhaseIndex);
31
32 void ExecuteInstantAttack();
33
34 void CleanupTasks();
35
36 void ClearChargeState();
37
38 void StartChargeLoopAudio();
39
40 void StopChargeLoopAudio();
41
42 void ToNextPhaseState(int32 InPhase);
43
44 void OnMaxPhaseTimeout();
45
46protected:
47 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Charge")
48 TSubclassOf<UGameplayEffect> ChargeSlowEffectClass;
49
50 UPROPERTY(EditDefaultsOnly, Category = "Charge", meta = (ClampMin = "0.0"))
51 float MaxPhaseDuration = 5.0f;
52
53 FTimerHandle MaxPhaseTimeoutTimer;
54
55 FActiveGameplayEffectHandle ActiveSlowEffectHandle;
56
57 // DA에서 FSkillChargeDatas로 주입
58 UPROPERTY(Transient)
59 TObjectPtr<UDataTable> ChargePhaseTable;
60
61 UPROPERTY(Transient)
62 TArray<TObjectPtr<UAnimMontage>> AttackMontages;
63
64 UPROPERTY(Transient)
65 FGameplayTag ChargeLoopAudioTag;
66
67 TArray<FChargePhaseTableRow> CachedPhaseRows;
68
69 // 현재 달성한 차지 단계
70 int32 CurrentPhase = 0;
71
72 TArray<FTimerHandle> PhaseDelayTimers;
73
74 // ClearChargeState에서 1회만 해제하기 위한 플래그.
75 bool bChargeStateActive = false;
76
77 // 차지 종료에 쿨타임 적용 변수
78 bool bShouldApplyCooldownOnEnd = false;
79};
Definition GA_SkillBase.h:14
Definition GA_Skill_Charge.h:16
Definition ChargeTable.h:13