Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
MainPlayerState.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "AbilitySystemInterface.h"
7#include "GameFramework/PlayerState.h"
8#include "MainPlayerState.generated.h"
9
11
12// 경험치가 변할 때. (현재 경험치, 이번 레벨 요구치) 경험치 바 UI 가 구독한다.
13DECLARE_MULTICAST_DELEGATE_TwoParams(FOnExpChanged, float /*CurrentExp*/, float /*RequiredExp*/);
14
15// 레벨이 오를 때. 상황 선택 카드창이 구독한다.
16DECLARE_MULTICAST_DELEGATE_OneParam(FOnLevelUp, int32 /*NewLevel*/);
17
21UCLASS()
22class CK_UE_API AMainPlayerState : public APlayerState, public IAbilitySystemInterface
23{
24 GENERATED_BODY()
25
26public:
28
29 virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
30 FORCEINLINE UPlayerAttributeSet* GetPlayerAttributeSet() const { return AttributeSet; }
31
32public:
33 // 적 처치 등으로 방송 경험치를 얻는다. 요구치를 넘으면 레벨업을 연쇄 처리한다.
34 void AddExp(float Amount);
35
36 // 레벨과 경험치 모두 PlayerAttributeSet 이 들고 있다.
37 int32 GetPlayerLevel() const;
38
39 float GetCurrentExp() const;
40
41 // 이번 레벨에서 다음 레벨까지 필요한 경험치. 0 이하면 최종 레벨.
42 float GetRequiredExp() const;
43
44public:
45 FOnExpChanged OnExpChanged;
46 FOnLevelUp OnLevelUp;
47
48protected:
49 virtual void BeginPlay() override;
50
51 // 어트리뷰트가 요구치를 넘겼다고 알려오면 표를 보고 레벨을 올린다.
52 void HandleExperienceThresholdReached();
53
54 // 현재 레벨의 요구치를 어트리뷰트에 반영한다. 레벨 표가 준비됐으면 true.
55 bool ApplyLevelRequirement();
56
57 // 번들이 비동기 로드라 BeginPlay 시점에 레벨 표가 없을 수 있다. 준비될 때까지 재시도한다.
58 void RetryLevelRequirement();
59
60protected:
61 UPROPERTY(VisibleAnywhere, Category = GAS)
62 TObjectPtr<UAbilitySystemComponent> ASC;
63
64 UPROPERTY()
65 TObjectPtr<UPlayerAttributeSet> AttributeSet;
66
67protected:
68private:
69 FTimerHandle LevelRequirementRetryTimerHandle;
70};
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnExpChanged, float, float)
DECLARE_MULTICAST_DELEGATE_OneParam(FOnLevelUp, int32)
Definition MainPlayerState.h:23
FOnExpChanged OnExpChanged
Definition MainPlayerState.h:45
FOnLevelUp OnLevelUp
Definition MainPlayerState.h:46
FORCEINLINE UPlayerAttributeSet * GetPlayerAttributeSet() const
Definition MainPlayerState.h:30
Definition PlayerAttributeSet.h:13