From 937e61db7fe65a566331fbfe91c4728e55a98054 Mon Sep 17 00:00:00 2001 From: baz Date: Tue, 15 Jul 2025 19:30:34 +0100 Subject: [PATCH] Quick SetCurrentEXP update --- Source/vampires/EXPComponent.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/Source/vampires/EXPComponent.cpp b/Source/vampires/EXPComponent.cpp index db171f1..909e706 100644 --- a/Source/vampires/EXPComponent.cpp +++ b/Source/vampires/EXPComponent.cpp @@ -61,11 +61,26 @@ void UEXPComponent::SetCurrentEXP(int value) int oldEXP = CurrentEXP; int oldLevel = CurrentLevel; - // TODO: I should be updating the level here CurrentEXP = value; + + NextLevelRow = FExpTableRow(); + + while (CurrentEXP < NextLevelRow.CumulativeExpForPreviousLevel && CurrentEXP < NextLevelRow.CumulativeExpForNextLevel) + { + if (FExpTableRow* newRow = LevelsTable->FindRow(FName(*FString::FromInt(NextLevelRow.Level + 1)),"", true)) + { + NextLevelRow = *newRow; + } + else + { + NextLevelRow.Level++; + NextLevelRow.CumulativeExpForPreviousLevel = NextLevelRow.CumulativeExpForNextLevel; + NextLevelRow.ExpRequiredForNextLevel += 16; + NextLevelRow.CumulativeExpForNextLevel += NextLevelRow.ExpRequiredForNextLevel; + } + } + OnEXPGained.Broadcast(CurrentEXP, GetCurrentLevelPercent()); - - CurrentLevel = FMath::Floor(CurrentEXP / 100.0f); if (CurrentLevel != oldLevel) {