2022-06-02 20:12:29 +00:00
|
|
|
package com.alttd.altitudequests.objects;
|
|
|
|
|
|
|
|
|
|
import net.kyori.adventure.text.Component;
|
|
|
|
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
|
|
|
|
|
2022-06-03 02:43:48 +00:00
|
|
|
import java.util.*;
|
2022-06-02 20:12:29 +00:00
|
|
|
|
|
|
|
|
public abstract class Variant {
|
|
|
|
|
|
|
|
|
|
private final String internalName;
|
|
|
|
|
private final Component name;
|
2022-06-03 01:29:18 +00:00
|
|
|
private final int rangeMin;
|
|
|
|
|
private final int rangeMax;
|
2022-06-02 20:12:29 +00:00
|
|
|
private final List<String> questPages;
|
|
|
|
|
private final List<String> donePages;
|
|
|
|
|
|
2022-06-03 01:29:18 +00:00
|
|
|
public Variant(String internalName, String name, List<String> questPages, List<String> donePages, int rangeMin, int rangeMax) {
|
2022-06-02 20:12:29 +00:00
|
|
|
this.internalName = internalName;
|
|
|
|
|
this.name = MiniMessage.miniMessage().deserialize(name);
|
2022-06-03 01:29:18 +00:00
|
|
|
this.rangeMin = rangeMin;
|
|
|
|
|
this.rangeMax = rangeMax;
|
2022-06-02 20:12:29 +00:00
|
|
|
this.questPages = questPages;
|
|
|
|
|
this.donePages = donePages;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getInternalName() {
|
|
|
|
|
return internalName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Component getName() {
|
|
|
|
|
return name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<String> getQuestPages() {
|
|
|
|
|
return questPages;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<String> getDonePages() {
|
|
|
|
|
return donePages;
|
|
|
|
|
}
|
2022-06-03 01:29:18 +00:00
|
|
|
|
|
|
|
|
public int calculateAmount(int questsCompleted) {
|
2022-06-03 02:43:48 +00:00
|
|
|
double difficultyOffset = ((rangeMax - rangeMin) / (double) getDaysInMonth());
|
|
|
|
|
int min = Math.max(rangeMin, rangeMin + (int) (difficultyOffset * (questsCompleted - 5)));
|
|
|
|
|
int max = Math.min(rangeMax, rangeMin + (int) (difficultyOffset * (questsCompleted + 5)));
|
|
|
|
|
return new Random().nextInt(min, max);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int getDaysInMonth() {
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
calendar.setTime(new Date());
|
|
|
|
|
|
|
|
|
|
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
2022-06-03 01:29:18 +00:00
|
|
|
}
|
2022-06-02 20:12:29 +00:00
|
|
|
}
|