Add Leveling to EXPComponent

This commit is contained in:
baz 2024-08-20 23:32:24 +01:00
parent 079fba5d8b
commit 45b2120cb5
2 changed files with 28 additions and 2 deletions

View File

@ -15,17 +15,35 @@ UEXPComponent::UEXPComponent()
void UEXPComponent::IncrementEXP(int value) void UEXPComponent::IncrementEXP(int value)
{ {
// TODO: I should be updating the level here int oldEXP = CurrentEXP;
int oldLevel = CurrentLevel;
CurrentEXP += value; CurrentEXP += value;
OnEXPGained.ExecuteIfBound(value); OnEXPGained.ExecuteIfBound(value);
CurrentLevel = FMath::Floor(CurrentEXP / 100.0f);
if (CurrentLevel != oldLevel)
{
OnEXPLevelUp.ExecuteIfBound(CurrentLevel); OnEXPLevelUp.ExecuteIfBound(CurrentLevel);
}
} }
void UEXPComponent::SetCurrentEXP(int value) void UEXPComponent::SetCurrentEXP(int value)
{ {
int oldEXP = CurrentEXP;
int oldLevel = CurrentLevel;
// TODO: I should be updating the level here // TODO: I should be updating the level here
CurrentEXP = value; CurrentEXP = value;
OnEXPGained.ExecuteIfBound(value); OnEXPGained.ExecuteIfBound(value);
CurrentLevel = FMath::Floor(CurrentEXP / 100.0f);
if (CurrentLevel != oldLevel)
{
OnEXPLevelUp.ExecuteIfBound(CurrentLevel);
}
} }
int UEXPComponent::GetCurrentEXP() int UEXPComponent::GetCurrentEXP()
@ -46,6 +64,11 @@ void UEXPComponent::Reset()
OnEXPLevelUp.ExecuteIfBound(CurrentLevel); OnEXPLevelUp.ExecuteIfBound(CurrentLevel);
} }
float UEXPComponent::GetCurrentLevelPercent()
{
return (CurrentEXP % 100) / 100.0f;
}
// Called when the game starts // Called when the game starts
void UEXPComponent::BeginPlay() void UEXPComponent::BeginPlay()
{ {

View File

@ -42,6 +42,9 @@ public:
UFUNCTION(BlueprintCallable) UFUNCTION(BlueprintCallable)
void Reset(); void Reset();
UFUNCTION(BlueprintCallable, BlueprintPure)
float GetCurrentLevelPercent();
protected: protected:
// Called when the game starts // Called when the game starts
virtual void BeginPlay() override; virtual void BeginPlay() override;