Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
EnemyCombatSubsystem.h
이 파일의 문서화 페이지로 가기
1#pragma once
2
3#include "Engine/TimerHandle.h"
4#include "Subsystems/WorldSubsystem.h"
5#include "EnemyCombatSubsystem.generated.h"
6
7class AActor;
8
9USTRUCT()
11{
12 GENERATED_BODY()
13
14 UPROPERTY(Transient)
15 TWeakObjectPtr<AActor> Requester;
16
17 UPROPERTY(Transient)
18 TWeakObjectPtr<AActor> TargetActor;
19
20 UPROPERTY(Transient)
21 float FirstRequestTime = 0.0f;
22
23 UPROPERTY(Transient)
24 float LastRequestTime = 0.0f;
25};
26
27USTRUCT()
29{
30 GENERATED_BODY()
31
32 UPROPERTY(Transient)
33 TWeakObjectPtr<AActor> Requester;
34
35 UPROPERTY(Transient)
36 float LastReleaseTime = 0.0f;
37};
38
39UCLASS()
40class CK_UE_API UEnemyCombatSubsystem : public UWorldSubsystem
41{
42 GENERATED_BODY()
43
44public:
45 virtual void Deinitialize() override;
46
47 bool RequestAttackToken(AActor* TargetActor, AActor* Requester);
48 void ReleaseAttackToken(AActor* Requester);
49 void UnregisterAttackTokenActor(AActor* Requester);
50
51private:
52 bool HasAttackToken(const AActor* Requester) const;
53 bool RemoveAttackTokenHolder(AActor* Requester);
54
55 void CompactTokenData(float CurrentTime);
56 FEnemyAttackTokenCandidate& FindOrAddCandidate(AActor* TargetActor, AActor* Requester, float CurrentTime);
57 FEnemyAttackTokenHistory& FindOrAddHistory(AActor* Requester);
58 const FEnemyAttackTokenHistory* FindHistory(const AActor* Requester) const;
59
60#pragma region Score
61 void TryGrantAttackTokens(float CurrentTime);
62 float CalculateCandidateScore(const FEnemyAttackTokenCandidate& Candidate, float CurrentTime) const;
63#pragma endregion Score
64
65#pragma region Debug
66 void RefreshDebugTimer();
67 bool HasDebugTokenData() const;
68 void DrawCombatTokenDebug();
69 void DrawTokenDebugString(AActor* TargetActor, const FString& Text, const FColor& Color) const;
70#pragma endregion Debug
71
72private:
73 UPROPERTY(Transient)
74 TArray<TWeakObjectPtr<AActor>> TokenHolders;
75
76 UPROPERTY(Transient)
77 TArray<FEnemyAttackTokenCandidate> TokenCandidates;
78
79 UPROPERTY(Transient)
80 TArray<FEnemyAttackTokenHistory> TokenHistories;
81
82 FTimerHandle DebugTimerHandle;
83};
Definition EnemyCombatSubsystem.h:41
Definition EnemyCombatSubsystem.h:11
Definition EnemyCombatSubsystem.h:29