Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
GA_CombatBase.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "GAS/GA/GA_Base.h"
7#include "GA_CombatBase.generated.h"
8
9class UAT_Trace;
10class UCombatDataBase;
11class UAudioEmitterComponent;
12struct FCombatHitData;
15struct FKnockbackData;
16
20UCLASS()
21class CK_UE_API UGA_CombatBase : public UGA_Base
22{
23 GENERATED_BODY()
24
25public:
26 virtual void OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) override;
27 virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override;
28
29protected:
30 virtual void ApplyCombatData();
31
32 void SetupHitCheckListener();
33
34 UFUNCTION()
35 void OnHitCheckStart(FGameplayEventData Payload);
36
37 UFUNCTION()
38 void OnHitCheckEnd(FGameplayEventData Payload);
39
40 UFUNCTION()
41 void OnTraceResultCallback(const FGameplayAbilityTargetDataHandle& TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex);
42
43 // 다단히트 마지막 적중(Finisher) 콜백 — Finisher 비율 + HitStop + 넉백 발동
44 UFUNCTION()
45 void OnFinisherResultCallback(const FGameplayAbilityTargetDataHandle& TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex);
46
47 virtual TOptional<FTransform> GetTraceTransformForHitCheck() const;
48
49 void ApplyEffectsToSelf(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo);
50
51 FCombatHitPayload BuildCombatHitPayload(const FCombatHitData& HitData, float DamageMultiplier, bool bRequestKnockback);
52
53 TArray<FGameplayEffectSpecHandle> BuildCombatEffectSpecs(const FCombatHitData& HitData, float DamageMultiplier);
54
55 FGameplayEffectSpecHandle BuildEffectSpec(const FCombatEffectData& EffectData, float CombatDataLevel);
56
57 // Audio
58 void PlayCombatHitAudio(const FVector& HitLocation);
59 void CacheAudioTagComponents();
60
61 const FKnockbackData* FindKnockbackData(const FCombatHitData& HitData) const;
62
63 // 적중 시 Camera Shake/HitStop
64 void NotifyCameraHitConfirmed() const;
65
66 // 소유 캐릭터의 Attack_Speed 어트리뷰트 값을 반환 (몽타주 Rate로 사용)
67 float GetAttackSpeedRate() const;
68
69 // 플레이어 기본 공격 보정 범위 내 적을 Motion Warping으로 무기 공격 범위까지 보정.
70 void UpdateAttackWarpTargetForRange(FName WarpTargetName = FName("Target"));
71 void UpdateAttackWarpTargetForRange(FName WarpTargetName, ITargetableInterface* Target);
72
73protected:
74 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Data")
75 TObjectPtr<UCombatDataBase> CombatData;
76
77 UPROPERTY(Transient)
78 float AttackRange = 450.0f;
79
80 UPROPERTY(Transient)
81 float AttackRangeCorrectionDistance = 250.0f;
82
83 UPROPERTY(Transient)
84 float AttackRangeCorrectionInnerOffset = 30.0f;
85
86 UPROPERTY(Transient)
87 TObjectPtr<UAT_Trace> ActiveTraceTask;
88
89 UPROPERTY(Transient)
90 TArray<TSubclassOf<UGameplayEffect>> SelfEffectClasses;
91
92 UPROPERTY(Transient)
93 FGameplayTag WeaponHitCueTag;
94
95 UPROPERTY(Transient)
96 TArray<TObjectPtr<UAudioEmitterComponent>> CachedAudioTagComponents;
97
98private:
99 bool bMovementRotationOverridden = false;
100 bool bCachedOrientRotationToMovement = true;
101 bool bCachedUseControllerDesiredRotation = false;
102};
static const FName WarpTargetName(TEXT("KnockDown"))
Definition TargetableInterface.h:20
Definition AT_Trace.h:17
Definition CombatDataBase.h:116
Definition GA_Base.h:14
Definition GA_CombatBase.h:22
Definition CombatDataBase.h:98
Definition CombatDataBase.h:64
Definition CombatHitPayload.h:15
Definition KnockbackData.h:11