1
0
forked from Clones/Controlify

joystick axis rendering (no textures), improve config error handling and fix joystick deadzones being unordered

This commit is contained in:
isXander
2023-02-17 00:46:40 +00:00
parent fa1a3331e6
commit 8e31472c07
89 changed files with 169 additions and 104 deletions

View File

@ -6,17 +6,12 @@ import java.util.HashMap;
import java.util.Map;
public class JoystickConfig extends ControllerConfig {
private final Map<String, Float> deadzones;
private Map<String, Float> deadzones;
private transient JoystickController controller;
public JoystickConfig(JoystickController controller) {
this.controller = controller;
deadzones = new HashMap<>();
for (int i = 0; i < controller.axisCount(); i++) {
if (controller.mapping().axis(i).requiresDeadzone())
deadzones.put(controller.mapping().axis(i).identifier(), 0.2f);
}
setup(controller);
}
@Override
@ -35,7 +30,14 @@ public class JoystickConfig extends ControllerConfig {
return deadzones.getOrDefault(controller.mapping().axis(axis).identifier(), 0.2f);
}
void setController(JoystickController controller) {
void setup(JoystickController controller) {
this.controller = controller;
if (this.deadzones == null) {
deadzones = new HashMap<>();
for (int i = 0; i < controller.axisCount(); i++) {
if (controller.mapping().axis(i).requiresDeadzone())
deadzones.put(controller.mapping().axis(i).identifier(), 0.2f);
}
}
}
}

View File

@ -64,6 +64,6 @@ public class JoystickController extends AbstractController<JoystickState, Joysti
@Override
public void setConfig(Gson gson, JsonElement json) {
super.setConfig(gson, json);
this.config.setController(this);
this.config.setup(this);
}
}

View File

@ -133,9 +133,8 @@ public class DataJoystickMapping implements JoystickMapping {
}
@Override
public Component getDirectionName(int axis, JoystickAxisBind.AxisDirection direction) {
var directionId = axisNames().get(ids.indexOf(axis)).get(direction.ordinal());
return Component.translatable("controlify.joystick_mapping." + typeId() + ".axis." + identifier() + "." + directionId);
public String getDirectionIdentifier(int axis, JoystickAxisBind.AxisDirection direction) {
return this.axisNames().get(ids.indexOf(axis)).get(direction.ordinal());
}
}
@ -144,6 +143,8 @@ public class DataJoystickMapping implements JoystickMapping {
public Component name() {
return Component.translatable("controlify.joystick_mapping." + typeId() + ".button." + identifier());
}
}
private record HatMapping(String identifier, String typeId) implements Hat {

View File

@ -21,7 +21,7 @@ public interface JoystickMapping {
boolean isAxisResting(float value);
Component getDirectionName(int axis, JoystickAxisBind.AxisDirection direction);
String getDirectionIdentifier(int axis, JoystickAxisBind.AxisDirection direction);
}
interface Button {

View File

@ -24,36 +24,36 @@ public class UnmappedJoystickMapping implements JoystickMapping {
private record UnmappedAxis(int axis) implements Axis {
@Override
public String identifier() {
public String identifier() {
return "axis-" + axis;
}
@Override
public Component name() {
return Component.translatable("controlify.joystick_mapping.unmapped.axis", axis + 1);
}
@Override
public boolean requiresDeadzone() {
return true;
}
@Override
public float modifyAxis(float value) {
return value;
}
@Override
public boolean isAxisResting(float value) {
return value == 0;
}
@Override
public Component getDirectionName(int axis, JoystickAxisBind.AxisDirection direction) {
return Component.translatable("controlify.joystick_mapping.unmapped.axis_direction." + direction.name().toLowerCase());
}
}
@Override
public Component name() {
return Component.translatable("controlify.joystick_mapping.unmapped.axis", axis + 1);
}
@Override
public boolean requiresDeadzone() {
return true;
}
@Override
public float modifyAxis(float value) {
return value;
}
@Override
public boolean isAxisResting(float value) {
return value == 0;
}
@Override
public String getDirectionIdentifier(int axis, JoystickAxisBind.AxisDirection direction) {
return direction.name().toLowerCase();
}
}
private record UnmappedButton(int button) implements Button {
@Override
public String identifier() {