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