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