1
0
forked from Clones/Controlify

🧹 Refactor gui package

This commit is contained in:
isXander
2023-05-30 14:23:47 +01:00
parent 5639436197
commit 361ceefd6f
14 changed files with 21 additions and 26 deletions

View File

@ -0,0 +1,43 @@
package dev.isxander.controlify.gui.controllers;
import dev.isxander.controlify.bindings.GamepadBind;
import dev.isxander.controlify.bindings.GamepadBinds;
import dev.isxander.controlify.bindings.IBind;
import dev.isxander.controlify.controller.gamepad.GamepadController;
import dev.isxander.controlify.controller.gamepad.GamepadState;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.YACLScreen;
import java.util.Optional;
public class GamepadBindController extends AbstractBindController<GamepadState> {
public GamepadBindController(Option<IBind<GamepadState>> option, GamepadController controller) {
super(option, controller);
}
@Override
public AbstractBindControllerElement<GamepadState> provideWidget(YACLScreen yaclScreen, Dimension<Integer> dimension) {
return new BindButtonWidget(this, yaclScreen, dimension);
}
public static class BindButtonWidget extends AbstractBindControllerElement<GamepadState> {
public BindButtonWidget(GamepadBindController control, YACLScreen screen, Dimension<Integer> dim) {
super(control, screen, dim);
}
@Override
public Optional<IBind<GamepadState>> getPressedBind() {
var gamepad = (GamepadController) control.controller;
for (var bindType : GamepadBinds.values()) {
GamepadBind bind = bindType.forGamepad(gamepad);
if (bind.held(gamepad.state()) && !bind.held(gamepad.prevState())) {
return Optional.of(bind);
}
}
return Optional.empty();
}
}
}