Skip to content

Commit 8af086f

Browse files
committed
fix bindings never being saved, or migrated
1 parent bfb0de4 commit 8af086f

3 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/main/java/dev/isxander/controlify/config/dto/dfu/fixes/TheHolyMigrationFix.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ private <T> Dynamic<T> rewriteGenericConfig(Dynamic<T> old, Dynamic<T> root) {
160160
private <T> Dynamic<T> rewriteInputConfig(Dynamic<T> old, Dynamic<T> root) {
161161
var defaults = controllerDefaults.input;
162162

163+
// Build bindings sub-object - structure stays the same, just moved
164+
Dynamic<T> bindings = old.get("bindings")
165+
.result().orElse(root.createMap(Map.of()));
166+
163167
// Build sensitivity sub-object
164168
Dynamic<T> sensitivity = root.createMap(Map.of(
165169
root.createString("horizontal"), old.get("h_look_sensitivity")
@@ -190,6 +194,7 @@ private <T> Dynamic<T> rewriteInputConfig(Dynamic<T> old, Dynamic<T> root) {
190194
));
191195

192196
return root.createMap(Map.of(
197+
root.createString("bindings"), bindings,
193198
root.createString("sensitivity"), sensitivity,
194199
root.createString("radial_menu"), radialMenu,
195200
root.createString("button_activation_threshold"), old.get("button_activation_threshold")

src/main/java/dev/isxander/controlify/config/dto/profile/InputConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ public record BindingsConfig(
3131
) {
3232
public static final BindingsConfig EMPTY = new BindingsConfig(Map.of());
3333

34-
public static final Codec<BindingsConfig> CODEC = Codec.unboundedMap(Identifier.CODEC, Input.CODEC).fieldOf("bindings")
35-
.codec()
34+
public static final Codec<BindingsConfig> CODEC = Codec.unboundedMap(Identifier.CODEC, Input.CODEC)
3635
.xmap(BindingsConfig::new, BindingsConfig::bindings);
3736

3837
public BindingsConfig {

src/main/java/dev/isxander/controlify/gui/screen/ControllerConfigScreenFactory.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ private Optional<ConfigCategory> makeBindsCategory(
666666
.name(categoryName);
667667

668668
controlsGroup.options(bindGroup.stream().map(binding -> {
669-
Option.Builder<?> option = createBindingOpt(binding, controller.orElse(null))
669+
Option.Builder<?> option = createBindingOpt(settings.input, binding, controller.orElse(null))
670670
.addListener((opt, val) -> updateConflictingBinds(optionBinds));
671671

672672
Option<?> built = option.build();
@@ -721,11 +721,11 @@ private static Map<Component, List<InputBinding>> groupBindings(Collection<Input
721721
.collect(Collectors.groupingBy(InputBinding::category, LinkedHashMap::new, Collectors.toList()));
722722
}
723723

724-
private static Option.Builder<Input> createBindingOpt(InputBindingSupplier bindingSupplier, ControllerEntity controller) {
725-
return createBindingOpt(bindingSupplier.on(controller), controller);
724+
private static Option.Builder<Input> createBindingOpt(InputSettings settings, InputBindingSupplier bindingSupplier, ControllerEntity controller) {
725+
return createBindingOpt(settings, bindingSupplier.on(controller), controller);
726726
}
727727

728-
private static Option.Builder<Input> createBindingOpt(InputBinding binding, @Nullable ControllerEntity controller) {
728+
private static Option.Builder<Input> createBindingOpt(InputSettings settings, InputBinding binding, @Nullable ControllerEntity controller) {
729729
return Option.<Input>createBuilder()
730730
.name(binding.name())
731731
.description(v -> OptionDescription.createBuilder()
@@ -751,7 +751,10 @@ private static Option.Builder<Input> createBindingOpt(InputBinding binding, @Nul
751751
))
752752
))
753753
.build())
754-
.binding(EmptyInput.INSTANCE, binding::boundInput, binding::setBoundInput)
754+
.binding(EmptyInput.INSTANCE, binding::boundInput, input -> {
755+
binding.setBoundInput(input);
756+
settings.bindings.bindings.put(binding.id(), input);
757+
})
755758
.customController(opt -> new BindController(opt, controller));
756759
}
757760

0 commit comments

Comments
 (0)