added command to set config double to a certain value, added command to scale the exp (separately)

renamed multiplier property, to be more descriptive
This commit is contained in:
Sheldan
2020-04-12 23:46:36 +02:00
parent edb270e887
commit 5edb2e4cc8
11 changed files with 130 additions and 5 deletions

View File

@@ -0,0 +1,50 @@
package dev.sheldan.abstracto.experience.commands;
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.ConfigService;
import dev.sheldan.abstracto.experience.config.ExperienceFeatures;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class ExpScale extends AbstractConditionableCommand {
public static final String EXP_MULTIPLIER_KEY = "expMultiplier";
@Autowired
private ConfigService configService;
@Override
public CommandResult execute(CommandContext commandContext) {
Double scale = (Double) commandContext.getParameters().getParameters().get(0);
configService.setDoubleValue(EXP_MULTIPLIER_KEY, commandContext.getGuild().getIdLong(), scale);
return CommandResult.fromSuccess();
}
@Override
public CommandConfiguration getConfiguration() {
List<Parameter> parameters = new ArrayList<>();
parameters.add(Parameter.builder().name("scale").type(Double.class).build());
HelpInfo helpInfo = HelpInfo.builder().longHelp("The new scale of experience on this server.").usage("expScale").build();
return CommandConfiguration.builder()
.name("expScale")
.module(ExperienceModule.EXPERIENCE)
.description("Sets the experience scale of this server to this value.")
.causesReaction(true)
.parameters(parameters)
.help(helpInfo)
.build();
}
@Override
public String getFeature() {
return ExperienceFeatures.EXPERIENCE;
}
}

View File

@@ -12,6 +12,6 @@ import org.springframework.stereotype.Component;
public class ExperienceConfig {
private Integer minExp;
private Integer maxExp;
private Integer multiplier;
private Integer expMultiplier;
private Integer maxLvl;
}

View File

@@ -23,6 +23,6 @@ public class ExperienceConfigListener implements ServerConfigListener {
log.info("Setting up experience for {}", server.getId());
service.createDoubleValueIfNotExist("minExp", server.getId(), experienceConfig.getMinExp().doubleValue());
service.createDoubleValueIfNotExist("maxExp", server.getId(), experienceConfig.getMaxExp().doubleValue());
service.createDoubleValueIfNotExist("multiplier", server.getId(), experienceConfig.getMultiplier().doubleValue());
service.createDoubleValueIfNotExist("expMultiplier", server.getId(), experienceConfig.getExpMultiplier().doubleValue());
}
}

View File

@@ -131,7 +131,7 @@ public class ExperienceTrackerServiceBean implements ExperienceTrackerService {
log.debug("Handling experience for server {}", serverExp.getId());
int minExp = configService.getDoubleValue("minExp", serverExp.getId()).intValue();
int maxExp = configService.getDoubleValue("maxExp", serverExp.getId()).intValue();
Integer multiplier = configService.getDoubleValue("multiplier", serverExp.getId()).intValue();
Integer multiplier = configService.getDoubleValue("expMultiplier", serverExp.getId()).intValue();
PrimitiveIterator.OfInt iterator = new Random().ints(serverExp.getUsers().size(), minExp, maxExp + 1).iterator();
List<AExperienceLevel> levels = experienceLevelManagementService.getLevelConfig();
List<AExperienceRole> roles = experienceRoleManagementService.getExperienceRoleForServer(serverExp);

View File

@@ -12,5 +12,5 @@ abstracto.features.experience=true
abstracto.experience.minExp=10
abstracto.experience.maxExp=25
abstracto.experience.multiplier=1
abstracto.experience.expMultiplier=1
abstracto.experience.maxLvl=200