Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
BaseAttributeSet.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "AttributeSet.h"
6#include "AbilitySystemComponent.h"
7#include "GameplayTagContainer.h"
8#include "BaseAttributeSet.generated.h"
9
10class AActor;
11
12// 데미지 1회 처리 결과. 히트 이펙트 Cue 선택(크리티컬/무기별) + 데미지 텍스트 표시용 데이터 묶음.
13USTRUCT()
15{
16 GENERATED_BODY()
17
18 UPROPERTY()
19 TObjectPtr<AActor> TargetActor = nullptr;
20
21 UPROPERTY()
22 TObjectPtr<AActor> SourceActor = nullptr;
23
24 UPROPERTY()
25 FVector HitLocation = FVector::ZeroVector;
26
27 UPROPERTY()
28 FVector HitNormal = FVector::ZeroVector;
29
30 UPROPERTY()
31 float DamageAmount = 0.0f;
32
33 UPROPERTY()
34 bool bIsCritical = false;
35
36 UPROPERTY()
37 FGameplayTag HitEffectTag;
38
39 UPROPERTY()
40 FGameplayTag DamageTypeTag;
41
42 UPROPERTY()
43 FGameplayEffectContextHandle EffectContextHandle;
44};
45
47
49
50#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \
51GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \
52GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \
53GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \
54GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName)
55
56UCLASS(Abstract)
57class CK_UE_API UBaseAttributeSet : public UAttributeSet
58{
59 GENERATED_BODY()
60
61public:
63
64public:
65 virtual void PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) override;
66 virtual void PostGameplayEffectExecute(const struct FGameplayEffectModCallbackData& Data) override;
67
68 // 초기화 헬퍼 함수
69 void InitBaseStats(float InMaxHealth, float InMoveSpeed, float InAttack, float InAttackSpeed, float InKnockbackResistance = 0.0f, float InCooldownMultiplier = 1.0f);
70
71 FDamageResultData GenerateDamageResultData(const struct FGameplayEffectModCallbackData& Data, float LocalDamage, bool bCriticalHit) const;
72
82
83public:
84 FORCEINLINE bool IsOutOfHealth() const
85 {
86 return bOutOfHealth;
87 }
88
89public:
90 mutable FDeathDelegate OnDeathDelegate;
91 mutable FOnDamageTakenDelegate OnDamageDelegate;
92
93protected:
94 bool bOutOfHealth = false;
95
96protected:
97 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
98 FGameplayAttributeData Health;
99
100 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
101 FGameplayAttributeData MaxHealth;
102
103 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
104 FGameplayAttributeData MoveSpeed;
105
106 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
107 FGameplayAttributeData Attack;
108
109 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
110 FGameplayAttributeData AttackSpeed;
111
112 // 넉백 저항 비율. 0이면 넉백 전체 적용, 1이면 저항 무시 공격이 아닌 이상 넉백 시간이 0이 된다.
113 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
114 FGameplayAttributeData KnockbackResistance;
115
116 //스킬 쿨타임 증가 or 감소 비율. 스킬 한정으로 평타는 포함되지 않는다. 기본값은 1이다.
117 //CooldownTime + (CooldownMultiplier - 1) * CooldownTime 방식으로 씀.
118 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (AllowPrivateAccess = true))
119 FGameplayAttributeData CooldownMultiplier;
120
121protected:
122 UPROPERTY(BlueprintReadOnly, Category = "Stat", meta = (HideFromModifiers))
123 FGameplayAttributeData Damage;
124
125 // 이번 데미지기 크리티컬 히트인지 표시하는 임시 플래그
126 UPROPERTY(BlueprintReadOnly, Category = "Damage", meta = (HideFromModifiers))
127 FGameplayAttributeData DamageIsCritical;
128};
DECLARE_MULTICAST_DELEGATE_OneParam(FOnDamageTakenDelegate, const FDamageResultData &)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDeathDelegate)
Definition BaseAttributeSet.h:58
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, CooldownMultiplier)
FORCEINLINE bool IsOutOfHealth() const
Definition BaseAttributeSet.h:84
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, Damage)
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, AttackSpeed)
FOnDamageTakenDelegate OnDamageDelegate
Definition BaseAttributeSet.h:91
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, DamageIsCritical)
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, KnockbackResistance)
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, MoveSpeed)
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, Attack)
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, MaxHealth)
FDeathDelegate OnDeathDelegate
Definition BaseAttributeSet.h:90
ATTRIBUTE_ACCESSORS(UBaseAttributeSet, Health)
Definition BaseAttributeSet.h:15