1
0
forked from Clones/Controlify

compound joysticks, button guide in screens, improve API

This commit is contained in:
isXander
2023-03-26 18:13:02 +01:00
parent de210df84f
commit 0d9321e3ba
55 changed files with 1188 additions and 287 deletions

View File

@ -34,6 +34,7 @@ public class ControllerBindings<T extends ControllerState> {
OPEN_CHAT,
GUI_PRESS, GUI_BACK,
GUI_NEXT_TAB, GUI_PREV_TAB,
GUI_ABSTRACT_ACTION_1, GUI_ABSTRACT_ACTION_2,
PICK_BLOCK,
TOGGLE_HUD_VISIBILITY,
SHOW_PLAYER_LIST,
@ -77,6 +78,8 @@ public class ControllerBindings<T extends ControllerState> {
register(GUI_BACK = new ControllerBinding<>(controller, GamepadBinds.B_BUTTON, new ResourceLocation("controlify", "gui_back")));
register(GUI_NEXT_TAB = new ControllerBinding<>(controller, GamepadBinds.RIGHT_BUMPER, new ResourceLocation("controlify", "gui_next_tab")));
register(GUI_PREV_TAB = new ControllerBinding<>(controller, GamepadBinds.LEFT_BUMPER, new ResourceLocation("controlify", "gui_prev_tab")));
register(GUI_ABSTRACT_ACTION_1 = new ControllerBinding<>(controller, GamepadBinds.X_BUTTON, new ResourceLocation("controlify", "gui_abstract_action_1")));
register(GUI_ABSTRACT_ACTION_2 = new ControllerBinding<>(controller, GamepadBinds.Y_BUTTON, new ResourceLocation("controlify", "gui_abstract_action_2")));
register(PICK_BLOCK = new ControllerBinding<>(controller, GamepadBinds.DPAD_LEFT, new ResourceLocation("controlify", "pick_block"), options.keyPickItem, () -> false));
register(TOGGLE_HUD_VISIBILITY = new ControllerBinding<>(controller, new EmptyBind<>(), new ResourceLocation("controlify", "toggle_hud_visibility")));
register(SHOW_PLAYER_LIST = new ControllerBinding<>(controller, GamepadBinds.DPAD_RIGHT, new ResourceLocation("controlify", "show_player_list"), options.keyPlayerList, () -> false));
@ -138,6 +141,11 @@ public class ControllerBindings<T extends ControllerState> {
public void fromJson(JsonObject json) {
for (var binding : registry().values()) {
if (!json.has(binding.id().toString())) {
Controlify.LOGGER.warn("Missing control: " + binding.id() + " in config file. Skipping!");
continue;
}
var bind = json.get(binding.id().toString()).getAsJsonObject();
if (bind == null) {
Controlify.LOGGER.warn("Unknown control: " + binding.id() + " in config file. Skipping!");

View File

@ -4,7 +4,7 @@ import com.google.gson.JsonObject;
import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.controlify.controller.*;
import dev.isxander.controlify.controller.gamepad.GamepadController;
import dev.isxander.controlify.controller.joystick.JoystickController;
import dev.isxander.controlify.controller.joystick.SingleJoystickController;
import dev.isxander.controlify.gui.DrawSize;
public interface IBind<S extends ControllerState> {
@ -28,7 +28,7 @@ public interface IBind<S extends ControllerState> {
if (controller instanceof GamepadController gamepad && type.equals(GamepadBinds.BIND_ID)) {
return GamepadBinds.fromJson(json).map(bind -> (IBind<T>) bind.forGamepad(gamepad)).orElse(new EmptyBind<>());
} else if (controller instanceof JoystickController joystick) {
} else if (controller instanceof SingleJoystickController joystick) {
return (IBind<T>) switch (type) {
case JoystickButtonBind.BIND_ID -> JoystickButtonBind.fromJson(json, joystick);
case JoystickHatBind.BIND_ID -> JoystickHatBind.fromJson(json, joystick);

View File

@ -18,11 +18,11 @@ import java.util.Objects;
public class JoystickAxisBind implements IBind<JoystickState> {
public static final String BIND_ID = "joystick_axis";
private final JoystickController joystick;
private final JoystickController<?> joystick;
private final int axisIndex;
private final AxisDirection direction;
public JoystickAxisBind(JoystickController joystick, int axisIndex, AxisDirection direction) {
public JoystickAxisBind(JoystickController<?> joystick, int axisIndex, AxisDirection direction) {
this.joystick = joystick;
this.axisIndex = axisIndex;
this.direction = direction;
@ -93,7 +93,7 @@ public class JoystickAxisBind implements IBind<JoystickState> {
return Objects.hash(axisIndex, direction);
}
public static JoystickAxisBind fromJson(JsonObject object, JoystickController joystick) {
public static JoystickAxisBind fromJson(JsonObject object, JoystickController<?> joystick) {
var axisIndex = object.get("axis").getAsInt();
var direction = AxisDirection.valueOf(object.get("direction").getAsString());
return new JoystickAxisBind(joystick, axisIndex, direction);

View File

@ -7,7 +7,6 @@ import dev.isxander.controlify.controller.Controller;
import dev.isxander.controlify.controller.joystick.JoystickController;
import dev.isxander.controlify.controller.joystick.JoystickState;
import dev.isxander.controlify.gui.DrawSize;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.resources.ResourceLocation;
@ -16,10 +15,10 @@ import java.util.Objects;
public class JoystickButtonBind implements IBind<JoystickState> {
public static final String BIND_ID = "joystick_button";
private final JoystickController joystick;
private final JoystickController<?> joystick;
private final int buttonIndex;
public JoystickButtonBind(JoystickController joystick, int buttonIndex) {
public JoystickButtonBind(JoystickController<?> joystick, int buttonIndex) {
this.joystick = joystick;
this.buttonIndex = buttonIndex;
}
@ -71,7 +70,7 @@ public class JoystickButtonBind implements IBind<JoystickState> {
return Objects.hash(buttonIndex, joystick.uid());
}
public static JoystickButtonBind fromJson(JsonObject object, JoystickController joystick) {
public static JoystickButtonBind fromJson(JsonObject object, JoystickController<?> joystick) {
var buttonIndex = object.get("button").getAsInt();
return new JoystickButtonBind(joystick, buttonIndex);
}

View File

@ -7,7 +7,6 @@ import dev.isxander.controlify.controller.Controller;
import dev.isxander.controlify.controller.joystick.JoystickController;
import dev.isxander.controlify.controller.joystick.JoystickState;
import dev.isxander.controlify.gui.DrawSize;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.resources.ResourceLocation;
@ -16,11 +15,11 @@ import java.util.Objects;
public class JoystickHatBind implements IBind<JoystickState> {
public static final String BIND_ID = "joystick_hat";
private final JoystickController joystick;
private final JoystickController<?> joystick;
private final int hatIndex;
private final JoystickState.HatState hatState;
public JoystickHatBind(JoystickController joystick, int hatIndex, JoystickState.HatState hatState) {
public JoystickHatBind(JoystickController<?> joystick, int hatIndex, JoystickState.HatState hatState) {
this.joystick = joystick;
this.hatIndex = hatIndex;
this.hatState = hatState;
@ -84,7 +83,7 @@ public class JoystickHatBind implements IBind<JoystickState> {
return Objects.hash(hatIndex, hatState, joystick.uid());
}
public static JoystickHatBind fromJson(JsonObject object, JoystickController joystick) {
public static JoystickHatBind fromJson(JsonObject object, JoystickController<?> joystick) {
var hatIndex = object.get("hat").getAsInt();
var hatState = JoystickState.HatState.valueOf(object.get("state").getAsString());
return new JoystickHatBind(joystick, hatIndex, hatState);