mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-05-30 08:50:23 +00:00
[AB-xxx] providing more information in the rank model
This commit is contained in:
@@ -104,7 +104,17 @@ public class Rank extends AbstractConditionableCommand {
|
|||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(toRender);
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(toRender);
|
||||||
AUserExperience experienceObj = userExperienceManagementService.findUserInServer(aUserInAServer);
|
AUserExperience experienceObj = userExperienceManagementService.findUserInServer(aUserInAServer);
|
||||||
log.info("Rendering rank for user {} in server {}.", toRender.getId(), toRender.getGuild().getId());
|
log.info("Rendering rank for user {} in server {}.", toRender.getId(), toRender.getGuild().getId());
|
||||||
rankModel.setExperienceToNextLevel(experienceLevelService.calculateExperienceToNextLevel(experienceObj.getCurrentLevel().getLevel(), experienceObj.getExperience()));
|
Long currentExpNeeded = experienceObj.getCurrentLevel().getExperienceNeeded();
|
||||||
|
Long experienceNeededToNextLevel = experienceLevelService.calculateExperienceToNextLevel(experienceObj.getCurrentLevel().getLevel(), experienceObj.getExperience());
|
||||||
|
Long nextLevelExperience = experienceLevelService.calculateNextLevel(experienceObj.getCurrentLevel().getLevel()).getExperienceNeeded();
|
||||||
|
Long levelExperience = nextLevelExperience - currentExpNeeded;
|
||||||
|
Long inLevelExperience = experienceObj.getExperience() - currentExpNeeded;
|
||||||
|
rankModel.setExperienceForCurrentLevel(currentExpNeeded);
|
||||||
|
rankModel.setCurrentLevelPercentage((float) inLevelExperience / levelExperience);
|
||||||
|
rankModel.setLevelExperience(levelExperience);
|
||||||
|
rankModel.setExperienceToNextLevel(experienceNeededToNextLevel);
|
||||||
|
rankModel.setInLevelExperience(inLevelExperience);
|
||||||
|
rankModel.setNextLevelExperience(nextLevelExperience);
|
||||||
return templateService.renderEmbedTemplate(RANK_POST_EMBED_TEMPLATE, rankModel, toRender.getGuild().getIdLong());
|
return templateService.renderEmbedTemplate(RANK_POST_EMBED_TEMPLATE, rankModel, toRender.getGuild().getIdLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,9 +57,14 @@ public class ExperienceLevelServiceBean implements ExperienceLevelService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long calculateExperienceToNextLevel(Integer level, Long currentExperience) {
|
public Long calculateExperienceToNextLevel(Integer level, Long currentExperience) {
|
||||||
AExperienceLevel nextLevel = experienceLevelManagementService.getLevelOptional(level + 1)
|
AExperienceLevel nextLevel = calculateNextLevel(level);
|
||||||
.orElseThrow(() -> new AbstractoRunTimeException(String.format("Could not find level %s", level)));
|
|
||||||
return nextLevel.getExperienceNeeded() - currentExperience;
|
return nextLevel.getExperienceNeeded() - currentExperience;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AExperienceLevel calculateNextLevel(Integer level) {
|
||||||
|
return experienceLevelManagementService.getLevelOptional(level + 1)
|
||||||
|
.orElseThrow(() -> new AbstractoRunTimeException(String.format("Could not find level %s", level)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,26 @@ public class RankModel {
|
|||||||
* The necessary experience to the next level up.
|
* The necessary experience to the next level up.
|
||||||
*/
|
*/
|
||||||
private Long experienceToNextLevel;
|
private Long experienceToNextLevel;
|
||||||
|
/**
|
||||||
|
* Total experience needed for this level
|
||||||
|
*/
|
||||||
|
private Long experienceForCurrentLevel;
|
||||||
|
/**
|
||||||
|
* Percentage of progress within this level
|
||||||
|
*/
|
||||||
|
private Float currentLevelPercentage;
|
||||||
|
/**
|
||||||
|
* The total amount of experience needed for this level
|
||||||
|
*/
|
||||||
|
private Long levelExperience;
|
||||||
|
/**
|
||||||
|
* The experience which has been reached _within_ this level
|
||||||
|
*/
|
||||||
|
private Long inLevelExperience;
|
||||||
|
/**
|
||||||
|
* The experience needed to reach the next level
|
||||||
|
*/
|
||||||
|
private Long nextLevelExperience;
|
||||||
/**
|
/**
|
||||||
* The member to show the rank for
|
* The member to show the rank for
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.experience.service;
|
package dev.sheldan.abstracto.experience.service;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.experience.model.database.AExperienceLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service responsible for operations on {@link dev.sheldan.abstracto.experience.model.database.AExperienceLevel experienceLevel}
|
* Service responsible for operations on {@link dev.sheldan.abstracto.experience.model.database.AExperienceLevel experienceLevel}
|
||||||
* This includes creating and calculations.
|
* This includes creating and calculations.
|
||||||
@@ -20,6 +22,7 @@ public interface ExperienceLevelService {
|
|||||||
* @return The amount of experience required necessary to reach the next level
|
* @return The amount of experience required necessary to reach the next level
|
||||||
*/
|
*/
|
||||||
Long calculateExperienceToNextLevel(Integer level, Long currentExperience);
|
Long calculateExperienceToNextLevel(Integer level, Long currentExperience);
|
||||||
|
AExperienceLevel calculateNextLevel(Integer level);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates the required experience to reach this level. This calculated experience is relative, in the sense that
|
* Calculates the required experience to reach this level. This calculated experience is relative, in the sense that
|
||||||
|
|||||||
Reference in New Issue
Block a user