1 package com.irtimaled.bbor.client.gui;
3 import com.irtimaled.bbor.client.config.Setting;
4 import net.minecraft.client.resources.I18n;
6 import java.util.HashMap;
9 class IntSettingSlider extends AbstractSlider {
10 private final String format;
11 private final Map<Integer, String> displayValues = new HashMap<>();
13 final Setting<Integer> setting;
17 IntSettingSlider(int width, int minValue, int maxValue, String format, Setting<Integer> setting) {
19 this.setting = setting;
20 this.minValue = minValue;
22 this.range = maxValue - minValue;
23 this.setProgress(getSliderValue());
27 IntSettingSlider addDisplayValue(int value, String displayValue) {
28 displayValues.put(value, displayValue);
29 if (setting.get() == value) {
35 private String getDisplayValue() {
36 Integer value = setting.get();
37 return I18n.format(format, displayValues.getOrDefault(value, value.toString()));
40 protected Integer getSettingValue() {
41 return minValue + (int) (range * progress);
44 protected double getSliderValue() {
45 return (setting.get() - minValue) / (double) range;
49 protected void updateText() {
50 this.displayString = this.getDisplayValue();
54 protected void onProgressChanged() {
55 this.setting.set(this.getSettingValue());