Skip to content

Commit

Permalink
add enum slider option
Browse files Browse the repository at this point in the history
  • Loading branch information
Jab125 committed Jan 4, 2025
1 parent ad2db98 commit 4de3370
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,19 @@ class SettingEntry extends ContainerObjectSelectionList.Entry<SettingList.Settin
private final ArrayList<GuiEventListener> children = new ArrayList<>();
private AbstractSliderButton sliderButton;
private Button toggleButton;
public SettingEntry(@Nullable Tweak.Option<?> option) {
public <T> SettingEntry(@Nullable Tweak.Option<?> option) {
this.option = option;
if (option instanceof Tweak.SliderOption<?> sliderOption) {
sliderButton = new AbstractSliderButton(100, 0, 100, 20, Component.literal("Value " + new DecimalFormat("#0.00").format(sliderOption.get())), sliderOption.normalize()) {
if (option instanceof Tweak.SliderOption<?> sliderOption0) {
Tweak.SliderOption<T> sliderOption = (Tweak.SliderOption<T>) sliderOption0;
sliderButton = new AbstractSliderButton(100, 0, 100, 20, Component.literal("Value ").append(sliderOption.fancyFormat(sliderOption.get())), sliderOption.normalize()) {
@Override
protected void updateMessage() {
setMessage(Component.literal("Value " + new DecimalFormat("#0.00").format(sliderOption.get())));
setMessage(Component.literal("Value ").append(sliderOption.fancyFormat(sliderOption.get())));
}

@Override
protected void applyValue() {
((Tweak.SliderOption) sliderOption).set(sliderOption.unNormalize(value));
sliderOption.set(sliderOption.unNormalize(value));
}
};
children.add(sliderButton);
Expand Down
36 changes: 31 additions & 5 deletions src/main/java/xyz/violaflower/legacy_tweaks/tweaks/Tweak.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package xyz.violaflower.legacy_tweaks.tweaks;

import net.minecraft.network.chat.Component;
import net.minecraft.util.Mth;
import xyz.violaflower.legacy_tweaks.LegacyTweaks;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
Expand Down Expand Up @@ -165,18 +167,34 @@ public Double getMax() {
public static class EnumProvider<T extends Enum<T>> {
private final T defaultValue;
private final Supplier<T[]> values;
private EnumProvider(T defaultValue, Supplier<T[]> values) {
private final Function<T, String> toString;
private final Function<T, Component> toComponent;
private EnumProvider(T defaultValue, Supplier<T[]> values, Function<T, String> toString, Function<T, Component> toComponent) {
this.defaultValue = defaultValue;
this.values = values;
this.toString = toString;
this.toComponent = toComponent;
}

public String toString(T t) {
return toString.apply(t);
}
}

public <T extends Enum<T>> EnumProvider<T> enumProvider(T defaultValue, Supplier<T[]> values) {
return new EnumProvider<>(defaultValue, values);
return enumProvider(defaultValue, values, T::toString);
}

public <T extends Enum<T>> EnumProvider<T> enumProvider(T defaultValue, Supplier<T[]> values, Function<T, String> toString) {
return enumProvider(defaultValue, values, toString, t -> Component.literal(toString.apply(t)));
}

public <T extends Enum<T>> EnumProvider<T> enumProvider(T defaultValue, Supplier<T[]> values, Function<T, String> toString, Function<T, Component> toComponent) {
return new EnumProvider<>(defaultValue, values, toString, toComponent);
}

public <T extends Enum<T>> EnumSliderOption<T> addSliderOption(String name, EnumProvider<T> enumProvider) {
return new EnumSliderOption<>(name, enumProvider, ignored -> {}) {};
return add(new EnumSliderOption<>(name, enumProvider, ignored -> {}) {});
}

public IntSliderOption addSliderOption(String name, int min, int max) {
Expand Down Expand Up @@ -299,7 +317,12 @@ public T getMin() {

@Override
public String format(T t) {
return t == null ? "null" : t.toString();
return t == null ? "null" : provider.toString(t);
}

@Override
public Component fancyFormat(T t) {
return provider.toComponent.apply(t);
}
}

Expand All @@ -321,7 +344,7 @@ public Double getMin() {

@Override
public String format(Double double_) {
return double_ == null ? "null" : double_.toString();
return double_ == null ? "null" : new DecimalFormat("#0.00").format(double_);
}
}

Expand Down Expand Up @@ -372,5 +395,8 @@ public void setConsumer(Consumer<T> onChanged) {
}

public abstract String format(T t);
public Component fancyFormat(T t) {
return Component.literal(format(t));
}
}
}

0 comments on commit 4de3370

Please sign in to comment.