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