feat: improve options screen with tooltips & better reset

This commit is contained in:
Martin Prokoph
2025-10-02 17:24:25 +02:00
parent d7ea484e71
commit faf24ced17
3 changed files with 13 additions and 5 deletions

View File

@@ -38,7 +38,8 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
ControllerBindingButton editButton = new ControllerBindingButton(screen.width - 185 + 22, 0, 128, 20, binding); ControllerBindingButton editButton = new ControllerBindingButton(screen.width - 185 + 22, 0, 128, 20, binding);
TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> { TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> {
MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton()); MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton());
screen.updateList(); MidnightControlsClient.input.beginControlsInput(null);
editButton.updateMessage(false);
}), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build(); }), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build();
resetButton.setPosition(screen.width - 205 + 150 + 25, 0); resetButton.setPosition(screen.width - 205 + 150 + 25, 0);
editButton.resetButton = resetButton; editButton.resetButton = resetButton;
@@ -47,16 +48,20 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
TextIconButtonWidget unbindButton = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.narrator.unbound", binding.getText()), (button -> { TextIconButtonWidget unbindButton = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.narrator.unbound", binding.getText()), (button -> {
MidnightControlsConfig.setButtonBinding(binding, UNBOUND); MidnightControlsConfig.setButtonBinding(binding, UNBOUND);
screen.updateList(); MidnightControlsClient.input.beginControlsInput(null);
editButton.updateMessage(false);
}), true).texture(Identifier.of("midnightcontrols","icon/unbind"), 12, 12).dimension(20, 20).build(); }), true).texture(Identifier.of("midnightcontrols","icon/unbind"), 12, 12).dimension(20, 20).build();
unbindButton.setPosition(screen.width - 205 + 20, 0); unbindButton.setPosition(screen.width - 205 + 20, 0);
unbindButton.setTooltip(Tooltip.of(SpruceTexts.GUI_UNBIND)); unbindButton.setTooltip(Tooltip.of(SpruceTexts.GUI_UNBIND));
unbindButton.active = !binding.isNotBound();
editButton.unbindButton = unbindButton;
list.addButton(Lists.newArrayList(editButton, resetButton, unbindButton), Text.translatable(binding.getTranslationKey()), info); list.addButton(Lists.newArrayList(editButton, resetButton, unbindButton), Text.translatable(binding.getTranslationKey()), info);
} }
private final ButtonBinding binding; private final ButtonBinding binding;
private @Nullable ClickableWidget resetButton; private @Nullable ClickableWidget resetButton;
private @Nullable ClickableWidget unbindButton;
public ControllerBindingButton(int x, int y, int width, int height, ButtonBinding binding) { public ControllerBindingButton(int x, int y, int width, int height, ButtonBinding binding) {
super(x, y, width, height, binding.getText(), (button) -> {}, super(x, y, width, height, binding.getText(), (button) -> {},
(textSupplier) -> binding.isNotBound() ? Text.translatable("narrator.controls.unbound", binding.getTranslationKey()) : Text.translatable("narrator.controls.bound", binding.getTranslationKey(), textSupplier.get())); (textSupplier) -> binding.isNotBound() ? Text.translatable("narrator.controls.unbound", binding.getTranslationKey()) : Text.translatable("narrator.controls.bound", binding.getTranslationKey(), textSupplier.get()));
@@ -91,6 +96,7 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
} }
if (this.resetButton != null) this.resetButton.active = !this.binding.isDefault(); if (this.resetButton != null) this.resetButton.active = !this.binding.isDefault();
if (this.unbindButton != null) this.unbindButton.active = !binding.isNotBound();
if (hasConflicts.get()) { if (hasConflicts.get()) {
this.setMessage(Text.literal("[ ").append(this.getMessage().copy().formatted(Formatting.WHITE)).append(" ]").formatted(Formatting.RED)); this.setMessage(Text.literal("[ ").append(this.getMessage().copy().formatted(Formatting.WHITE)).append(" ]").formatted(Formatting.RED));

View File

@@ -5,6 +5,7 @@ import eu.midnightdust.lib.config.MidnightConfigListWidget;
import eu.midnightdust.lib.config.MidnightConfigScreen; import eu.midnightdust.lib.config.MidnightConfigScreen;
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
import eu.midnightdust.midnightcontrols.client.controller.Controller; import eu.midnightdust.midnightcontrols.client.controller.Controller;
import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextIconButtonWidget; import net.minecraft.client.gui.widget.TextIconButtonWidget;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -43,6 +44,7 @@ public class ControllerSelectionButton {
button.setMessage(getControllerName(second)); button.setMessage(getControllerName(second));
}).dimensions(screen.width - 185, 0, 150, 20).build(); }).dimensions(screen.width - 185, 0, 150, 20).build();
resetButton.active = second ? MidnightControlsConfig.getSecondController().isPresent() : false; resetButton.active = second ? MidnightControlsConfig.getSecondController().isPresent() : false;
if (second) editButton.setTooltip(Tooltip.of(Text.translatable("midnightcontrols.menu.controller2.tooltip")));
list.addButton(List.of(editButton, resetButton), Text.translatable(second ? "midnightcontrols.menu.controller2" : "midnightcontrols.menu.controller"), new EntryInfo(null, screen.modid)); list.addButton(List.of(editButton, resetButton), Text.translatable(second ? "midnightcontrols.menu.controller2" : "midnightcontrols.menu.controller"), new EntryInfo(null, screen.modid));
} }

View File

@@ -8,19 +8,19 @@ yarn_mappings=1.21.9+build.1
enabled_platforms=fabric,neoforge enabled_platforms=fabric,neoforge
archives_base_name=midnightcontrols archives_base_name=midnightcontrols
mod_version=1.11.3-alpha.2 mod_version=1.11.3-beta.1
maven_group=eu.midnightdust maven_group=eu.midnightdust
release_type=alpha release_type=alpha
modrinth_id = bXX9h73M modrinth_id = bXX9h73M
curseforge_id = 621768 curseforge_id = 621768
# Configure the IDs here after creating the projects on the websites # Configure the IDs here after creating the projects on the websites
midnightlib_version=1.8.1+1.21.9 midnightlib_version=1.8.2+1.21.9
fabric_loader_version=0.17.2 fabric_loader_version=0.17.2
fabric_api_version=0.133.13+1.21.9 fabric_api_version=0.133.13+1.21.9
neoforge_version=21.6.0-beta neoforge_version=21.9.3-beta
yarn_mappings_patch_neoforge_version = 1.21+build.4 yarn_mappings_patch_neoforge_version = 1.21+build.4
quilt_loader_version=0.19.0-beta.18 quilt_loader_version=0.19.0-beta.18