forked from Clones/Controlify
78 lines
5.4 KiB
Java
78 lines
5.4 KiB
Java
package dev.isxander.controlify.config.gui;
|
|
|
|
import dev.isxander.controlify.config.ControlifyConfig;
|
|
import dev.isxander.controlify.controller.Controller;
|
|
import dev.isxander.controlify.controller.ControllerConfig;
|
|
import dev.isxander.yacl.api.ConfigCategory;
|
|
import dev.isxander.yacl.api.Option;
|
|
import dev.isxander.yacl.api.OptionGroup;
|
|
import dev.isxander.yacl.api.YetAnotherConfigLib;
|
|
import dev.isxander.yacl.gui.controllers.slider.FloatSliderController;
|
|
import net.minecraft.ChatFormatting;
|
|
import net.minecraft.client.gui.screens.Screen;
|
|
import net.minecraft.network.chat.Component;
|
|
|
|
public class YACLHelper {
|
|
public static Screen generateConfigScreen(Screen parent) {
|
|
var yacl = YetAnotherConfigLib.createBuilder()
|
|
.title(Component.literal("Controlify"))
|
|
.save(ControlifyConfig::save);
|
|
|
|
for (var controller : Controller.CONTROLLERS.values()) {
|
|
var category = ConfigCategory.createBuilder();
|
|
|
|
var customName = controller.config().customName;
|
|
category.name(Component.literal(customName == null ? controller.name() : customName));
|
|
|
|
var config = controller.config();
|
|
var def = ControllerConfig.DEFAULT;
|
|
var configGroup = OptionGroup.createBuilder()
|
|
.name(Component.translatable("controlify.gui.group.config"))
|
|
.tooltip(Component.translatable("controlify.gui.group.config.tooltip"))
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.horizontal_look_sensitivity"))
|
|
.tooltip(Component.translatable("controlify.gui.horizontal_look_sensitivity.tooltip"))
|
|
.binding(def.horizontalLookSensitivity, () -> config.horizontalLookSensitivity, v -> config.horizontalLookSensitivity = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0.1f, 2f, 0.05f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build())
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.vertical_look_sensitivity"))
|
|
.tooltip(Component.translatable("controlify.gui.vertical_look_sensitivity.tooltip"))
|
|
.binding(def.verticalLookSensitivity, () -> config.verticalLookSensitivity, v -> config.verticalLookSensitivity = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0.1f, 2f, 0.05f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build())
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.left_stick_deadzone"))
|
|
.tooltip(Component.translatable("controlify.gui.left_stick_deadzone.tooltip"))
|
|
.tooltip(Component.translatable("controlify.gui.stickdrift_warning").withStyle(ChatFormatting.RED))
|
|
.binding(def.leftStickDeadzone, () -> config.leftStickDeadzone, v -> config.leftStickDeadzone = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0, 1, 0.02f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build())
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.right_stick_deadzone"))
|
|
.tooltip(Component.translatable("controlify.gui.right_stick_deadzone.tooltip"))
|
|
.tooltip(Component.translatable("controlify.gui.stickdrift_warning").withStyle(ChatFormatting.RED))
|
|
.binding(def.rightStickDeadzone, () -> config.rightStickDeadzone, v -> config.rightStickDeadzone = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0, 1, 0.02f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build())
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.left_trigger_threshold"))
|
|
.tooltip(Component.translatable("controlify.gui.left_trigger_threshold.tooltip"))
|
|
.binding(def.leftTriggerActivationThreshold, () -> config.leftTriggerActivationThreshold, v -> config.leftTriggerActivationThreshold = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0, 1, 0.05f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build())
|
|
.option(Option.createBuilder(float.class)
|
|
.name(Component.translatable("controlify.gui.right_trigger_threshold"))
|
|
.tooltip(Component.translatable("controlify.gui.right_trigger_threshold.tooltip"))
|
|
.binding(def.rightTriggerActivationThreshold, () -> config.rightTriggerActivationThreshold, v -> config.rightTriggerActivationThreshold = v)
|
|
.controller(opt -> new FloatSliderController(opt, 0, 1, 0.05f, v -> Component.literal(String.format("%.0f%%", v*100))))
|
|
.build());
|
|
category.group(configGroup.build());
|
|
|
|
yacl.category(category.build());
|
|
}
|
|
|
|
return yacl.build().generateScreen(parent);
|
|
}
|
|
}
|