]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java
14f0ba9d6172b1ad961829467788bcc3f3d1d22b
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / gui / IntSettingSlider.java
1 package com.irtimaled.bbor.client.gui;
2
3 import com.irtimaled.bbor.config.Setting;
4 import net.minecraft.client.resources.I18n;
5
6 import java.util.HashMap;
7 import java.util.Map;
8
9 class IntSettingSlider extends AbstractSlider implements IRenderableControl {
10     private final String format;
11     private final Map<Integer, String> displayValues = new HashMap<>();
12
13     final Setting<Integer> setting;
14     final int minValue;
15     final int range;
16
17     IntSettingSlider(int id, int x, int y, int width, int minValue, int maxValue, String format, Setting<Integer> setting) {
18         super(id, x, y, width);
19         this.setting = setting;
20         this.minValue = minValue;
21         this.format = format;
22         this.range = maxValue - minValue;
23         this.setProgress(getSliderValue());
24         this.updateText();
25     }
26
27     IntSettingSlider addDisplayValue(int value, String displayValue) {
28         displayValues.put(value, displayValue);
29         if (setting.get() == value) {
30             this.updateText();
31         }
32         return this;
33     }
34
35     private String getDisplayValue() {
36         Integer value = setting.get();
37         return I18n.format(format, displayValues.getOrDefault(value, value.toString()));
38     }
39
40     protected Integer getSettingValue() {
41         return minValue + (int) (range * progress);
42     }
43
44     protected double getSliderValue() {
45         return (setting.get() - minValue) / (double) range;
46     }
47
48     @Override
49     protected void updateText() {
50         this.displayString = this.getDisplayValue();
51     }
52
53     @Override
54     protected void onProgressChanged() {
55         this.setting.set(this.getSettingValue());
56     }
57 }