]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java
a5f73b5f43ea2c72693e383bd71cecf9595f9084
[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.client.config.Setting;
4 import net.minecraft.client.resource.language.I18n;
5 import net.minecraft.text.LiteralText;
6
7 import java.util.HashMap;
8 import java.util.Map;
9
10 class IntSettingSlider extends AbstractSlider {
11     private final String format;
12     private final Map<Integer, String> displayValues = new HashMap<>();
13
14     final Setting<Integer> setting;
15     final int minValue;
16
17     IntSettingSlider(int width, int minValue, int maxValue, String format, Setting<Integer> setting) {
18         super(width, maxValue - minValue);
19         this.setting = setting;
20         this.minValue = minValue;
21         this.format = format;
22         setInitialPosition();
23         this.updateText();
24     }
25
26     protected void setInitialPosition() {
27         this.setPosition(this.setting.get() - this.minValue);
28     }
29
30     IntSettingSlider addDisplayValue(int value, String displayValue) {
31         displayValues.put(value, displayValue);
32         if (setting.get() == value) {
33             this.updateText();
34         }
35         return this;
36     }
37
38     protected Integer getSettingValue() {
39         return minValue + getPosition();
40     }
41
42     private void updateText() {
43         Integer value = setting.get();
44         this.setMessage(new LiteralText(I18n.translate(format, displayValues.getOrDefault(value, value.toString()))));
45     }
46
47     @Override
48     protected void onProgressChanged() {
49         this.setting.set(this.getSettingValue());
50         updateText();
51     }
52 }