123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package me.hammerle.snuviengine.api;
- import java.nio.ByteBuffer;
- import java.nio.FloatBuffer;
- import java.util.function.Consumer;
- import static org.lwjgl.glfw.GLFW.*;
- public class GamepadHandler
- {
- public final static GamepadBinding A = new GamepadBinding("A", 1);
- public final static GamepadBinding B = new GamepadBinding("B", 2);
- public final static GamepadBinding X = new GamepadBinding("X", 0);
- public final static GamepadBinding Y = new GamepadBinding("Y", 3);
- public final static GamepadBinding L = new GamepadBinding("L", 4);
- public final static GamepadBinding R = new GamepadBinding("R", 5);
- public final static GamepadBinding START = new GamepadBinding("Start", 9);
- public final static GamepadBinding SELECT = new GamepadBinding("Select", 8);
- public final static GamepadBinding LEFT = new GamepadBinding("Left", 0);
- public final static GamepadBinding RIGHT = new GamepadBinding("Right", 0);
- public final static GamepadBinding UP = new GamepadBinding("Up", 1);
- public final static GamepadBinding DOWN = new GamepadBinding("Down", 1);
- private final static GamepadBinding[] BUTTONS = new GamepadBinding[]
- {
- A, B, X, Y, L, R, START, SELECT
- };
-
- public final static GamepadBinding[] BINDINGS = new GamepadBinding[]
- {
- A, B, X, Y, L, R, START, SELECT, LEFT, RIGHT, UP, DOWN
- };
- protected static void tick()
- {
- if(!glfwJoystickPresent(GLFW_JOYSTICK_1))
- {
- return;
- }
- updateButtons();
- updateAxes();
- }
- private static void updateButtons()
- {
- ByteBuffer buttonBuffer = glfwGetJoystickButtons(GLFW_JOYSTICK_1);
- if(buttonBuffer == null)
- {
- return;
- }
- for(GamepadBinding binding : BUTTONS)
- {
- binding.tick(buttonBuffer.get(binding.getMapping()) != 0);
- }
- }
- private static void updateAxes()
- {
- FloatBuffer axesBuffer = glfwGetJoystickAxes(GLFW_JOYSTICK_1);
- if(axesBuffer == null)
- {
- return;
- }
- LEFT.tick(axesBuffer.get(LEFT.getMapping()) < -0.5f);
- RIGHT.tick(axesBuffer.get(RIGHT.getMapping()) > 0.5f);
- UP.tick(axesBuffer.get(UP.getMapping()) < -0.5f);
- DOWN.tick(axesBuffer.get(DOWN.getMapping()) > 0.5f);
- }
- }
|