public static String getInputDisplayName(int type, ConfigKeymap config, String key) { ConfigKeymap.Input input = config.getInput(key, -1, -1, -1); if (input.getInput() < 0) return "NONE"; if (type == KEYBOARD && input.getInput() <= 255) return Input.Keys.toString(input.getInput()); else if (type == CONTROLLER) { if (input.getType() == ConfigKeymap.Input.TYPE_AXIS) return String.format(Locale.US, "Axis %d %s", input.getInput(), input.getExtra() == 0 ? "negative" : "positive"); else if (input.getType() == ConfigKeymap.Input.TYPE_POV) { String pov = String.valueOf(input.getExtra()); for (PovDirection dir : PovDirection.values()) if (dir.ordinal() == input.getExtra()) pov = dir.name(); return String.format(Locale.US, "D-pad %d %s", input.getInput(), pov); } else if (input.getType() == ConfigKeymap.Input.TYPE_BUTTON) return String.format(Locale.US, "Button %d", input.getInput()); } return String.format(Locale.US, "%d", input.getInput()); }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { switch (value) { case north: case northEast: case northWest: { keyDown(Keys.UP); break; } case south: case southEast: case southWest: { keyDown(Keys.DOWN); break; } case center: { keyUp(Keys.DOWN); break; } default: { break; } } return true; }
public PovDirection getPov (int povIndex) { OisPov pov = joystick.getPov(povIndex); switch (pov) { case Centered: return PovDirection.center; case East: return PovDirection.east; case North: return PovDirection.north; case NorthEast: return PovDirection.northEast; case NorthWest: return PovDirection.northWest; case South: return PovDirection.south; case SouthEast: return PovDirection.southEast; case SouthWest: return PovDirection.southWest; case West: return PovDirection.west; } return null; // Impossible. }
private Controller testForBindingController() { for (Controller c : Controllers.getControllers()) { for (int i = 0; i < 10; i++) { if (c.getButton(i)) { return c; } } for (int i = 0; i < 4; i++) { if (Math.abs(c.getAxis(i)) > 0.75f) { return c; } } if (c.getPov(0) != PovDirection.center) return c; } return null; }
public PovDirection getPov (int povIndex) { OisJoystick.OisPov pov = joystick.getPov(povIndex); switch (pov) { case Centered: return PovDirection.center; case East: return PovDirection.east; case North: return PovDirection.north; case NorthEast: return PovDirection.northEast; case NorthWest: return PovDirection.northWest; case South: return PovDirection.south; case SouthEast: return PovDirection.southEast; case SouthWest: return PovDirection.southWest; case West: return PovDirection.west; } return null; // Impossible. }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { switch(value) { case north: cursorUp(); break; case south: cursorDown(); break; } return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { Gdx.app.log(getClass().getSimpleName(), "povMoved(" + controller + ", " + povCode + ", " + value + ")"); //User decided to use a d-pad---clear out any axis configurations since these can conflict. inputProcessor.getActualAxisToAxisCode().clear(); menu = topLevelMenu; menu.activate(); return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { if(controller == pads[0]) { }else if(controller == pads[1]) { } return true; }
public boolean povMoved(Controller arg0, int arg1, PovDirection arg2) { //Gdx.app.log("CONTROLLER POV", ""+arg1); //Gdx.app.log("CONTROLLER POV", ""+arg2); if (arg2 == PovDirection.center) { for (int i = 0; i < mapA.size; i++) { if (mapA.get(i).controller.equals(arg0)) { controlList[i].getCurrent().releasePov(); } } } else { for (int i = 0; i < mapA.size; i++) { if (mapA.get(i).controller.equals(arg0)) { controlList[i].getCurrent().pressPov(arg2); } } } return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { // TODO: Handle multiple pov-codes //Gdx.app.log("povMoved","LibniReceiver: "+controller.getName() // + " povCode: " + povCode // + " PovDirection: " + value + " ordinal: " + value.ordinal()); //if(value == PovDirection.center) { // this resets all pov-directions // allways update all for(int i=0; i<8; i++) gdxControllerMultiplexer.registerButtonEvent(i); //} else gdxControllerMultiplexer.registerButtonEvent(value.ordinal()-1); return false; }
@Override public boolean povMoved(final Controller controller, final int povIndex, final PovDirection direction) { if (isAssignedTo(controller)) { if (direction != null) { if (direction == PovDirection.center) { stop(); } else { movement.x = getX(direction); movement.y = getY(direction); } } return true; } return false; }
protected float getX(final PovDirection direction) { final float x; if (invertXY) { // Checking Y axis (north=east, south=west): x = getAbsoluteY(direction); } else { // Checking X axis: x = getAbsoluteX(direction); } if (invertX) { return -x; } return x; }
protected float getY(final PovDirection direction) { final float y; if (invertXY) { // Checking X axis (north=east, south=west): y = getAbsoluteX(direction); } else { // Checking Y axis: y = getAbsoluteY(direction); } if (invertY) { return -y; } return y; }
protected float getAbsoluteX(final PovDirection direction) { if (direction == PovDirection.east) { return 1f; } else if (direction == PovDirection.northEast || direction == PovDirection.southEast) { return COS; } else if (direction == PovDirection.west) { return -1f; } else if (direction == PovDirection.northWest || direction == PovDirection.southWest) { return -COS; } return 0f; }
protected float getAbsoluteY(final PovDirection direction) { if (direction == PovDirection.north) { return 1f; } else if (direction == PovDirection.northEast || direction == PovDirection.northWest) { return SIN; } else if (direction == PovDirection.south) { return -1f; } else if (direction == PovDirection.southWest || direction == PovDirection.southEast) { return -SIN; } else { return 0f; } }
public void setRotation(PovDirection dir){ switch(dir){ case east: rot = -90; break; case south: rot = 180; break; case west: rot = 90; break; default: rot = 0; break; } }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { switch (value) { case north: case northEast: case northWest: { keyDown(Keys.UP); break; } case south: case southEast: case southWest: { keyDown(Keys.DOWN); break; } case east: { keyDown(Keys.RIGHT); break; } case west: { keyDown(Keys.LEFT); break; } case center: { keyUp(Keys.LEFT); keyUp(Keys.RIGHT); keyUp(Keys.DOWN); keyUp(Keys.UP); break; } default: { break; } } return true; }
/** */ public ControllerInput() { this.povDirections = new boolean[PovDirection.values().length]; this.buttons = new boolean[64]; this.isConnected = Controllers.getControllers().size > 0; this.triggerSensitivity = 0.3f; this.leftJoystickSensitivity = 0.2f; this.rightJoystickSensitivity = 0.3f; this.movements = new float[4]; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection dir) { for(int i = 0; i<this.povDirections.length; i++) { this.povDirections[i] = false; } this.povDirections[dir.ordinal()] = true; return false; }
/** * */ public InputMap(ControllerInput controllerInput) { this.controllerInput = controllerInput; this.actions = new HashMap<String, InputMap.Action>(); this.keymap = new IntMap<String>(); this.buttonmap = new IntMap<String>(); this.controllermap = new IntMap<String>(); this.povButtons = new String[PovDirection.values().length]; this.scroller = new String[2]; }
private int handleDPad(int inputKeys) { if (isPovDirectionDown(PovDirection.north)) { inputKeys |= Actions.UP.getMask(); } else if (isPovDirectionDown(PovDirection.northEast)) { inputKeys |= Actions.UP.getMask(); inputKeys |= Actions.RIGHT.getMask(); } else if (isPovDirectionDown(PovDirection.northWest)) { inputKeys |= Actions.UP.getMask(); inputKeys |= Actions.LEFT.getMask(); } else if (isPovDirectionDown(PovDirection.south)) { inputKeys |= Actions.DOWN.getMask(); } else if (isPovDirectionDown(PovDirection.southEast)) { inputKeys |= Actions.DOWN.getMask(); inputKeys |= Actions.RIGHT.getMask(); } else if (isPovDirectionDown(PovDirection.southWest)) { inputKeys |= Actions.DOWN.getMask(); inputKeys |= Actions.LEFT.getMask(); } else if (isPovDirectionDown(PovDirection.east)) { inputKeys |= Actions.RIGHT.getMask(); } else if (isPovDirectionDown(PovDirection.west)) { inputKeys |= Actions.LEFT.getMask(); } return inputKeys; }
@Override public void dpad(int id, PovDirection dir) { /* * if (getLevel().getAssetKey() != null) { if (Game.get().getState() == * Game.PLAY || Game.get().getState() == Game.MENU) { boolean up = dir * == PovDirection.north; boolean down = dir == PovDirection.south; if * (up && mState == SOLID_STATE) { transform(); } else if (down) { * transform(); } } } */ }
private int testForPov(Controller c) { if (c == null) { System.out.println("NULL CONTROLLER"); return -1; } if (c.getPov(0) != PovDirection.center) return 1; // DebugOutput.info(this, c.getPov(0)+ " "); return -1; }
@Override public boolean povMoved(Controller c, int id, PovDirection value) { //DebugOutput.finest(this, "Controller #" + indexOf(c) + ", pov " + id + ": " + value); // TODO:DPAD Player p = getPlayer(c); if (p == null || p.mActor == null) return false; p.mActor.dpad(id, value); return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { //TODO Implement //System.out.println("Moved pov "+povCode+" with current value "+value+" on controller "+controller); return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { return false; }
@Override public boolean povMoved(Controller controller, int povCode, PovDirection value) { //Only use d-pad if axes are not configured if (actualAxisToAxisCode.isEmpty()) { switch (value) { case center: ggvm.setUpButtonState(false); ggvm.setRightButtonState(false); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(false); break; case north: ggvm.setUpButtonState(true); ggvm.setRightButtonState(false); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(false); break; case northEast: ggvm.setUpButtonState(true); ggvm.setRightButtonState(true); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(false); break; case east: ggvm.setUpButtonState(false); ggvm.setRightButtonState(true); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(false); break; case southEast: ggvm.setUpButtonState(false); ggvm.setRightButtonState(true); ggvm.setDownButtonState(true); ggvm.setLeftButtonState(false); break; case south: ggvm.setUpButtonState(false); ggvm.setRightButtonState(false); ggvm.setDownButtonState(true); ggvm.setLeftButtonState(false); break; case southWest: ggvm.setUpButtonState(false); ggvm.setRightButtonState(false); ggvm.setDownButtonState(true); ggvm.setLeftButtonState(true); break; case west: ggvm.setUpButtonState(false); ggvm.setRightButtonState(false); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(true); break; case northWest: ggvm.setUpButtonState(true); ggvm.setRightButtonState(false); ggvm.setDownButtonState(false); ggvm.setLeftButtonState(true); break; } } return false; }
private void pollInputController() { int input = -1; int input_extra = -1; int input_type = -1; main: for (Controller controller : Controllers.getControllers()) { if (!controller.getName().equals(this.controllerName)) continue; // Check axes for (int axis = 0; axis < 1000; axis++) { float ax = controller.getAxis(axis); if (ax > .5) { input_type = ConfigKeymap.Input.TYPE_AXIS; input = axis; input_extra = 1; // positive break main; } else if (ax < -.5) { input_type = ConfigKeymap.Input.TYPE_AXIS; input = axis; input_extra = 0; // negative break main; } } // Only allow an axis to be set for joystick input. // TODO Map all 4(8) axes to allow any input to control the joystick(s). 4 directions per joystick if (key.contains("JOYSTICK")) break; // Check dpad/pov for (int pov = 0; pov < 1000; pov++) { PovDirection povDirection = controller.getPov(pov); if (!povDirection.equals(PovDirection.center)) { input_type = ConfigKeymap.Input.TYPE_POV; input = pov; input_extra = povDirection.ordinal(); break main; } } // Check buttons for (int button = 0; button < 1000; button++) { if (controller.getButton(button)) { input_type = ConfigKeymap.Input.TYPE_BUTTON; input = button; break main; } } return; } if (input < 0) return; // Save input config.putInput(this.key, input_type, input, input_extra); config.load(); config.flush(); Client.setStage(new StageConfigInput(type, config, key, displayName, controllerName)); }
@Override public boolean povMoved(Controller controller, int povIndex, PovDirection value) { ControllerMappings.MappedInputs mapping = mappings.getControllerMapping(controller); if (mapping == null) return false; ConfiguredInput configuredInputV = mapping.getConfiguredFromPov(povIndex, true); ConfiguredInput configuredInputH = mapping.getConfiguredFromPov(povIndex, false); float valueH = 0; float valueV = 0; boolean handledH = false; boolean handledV = false; switch (value) { case east: valueH = 1f; break; case northEast: valueH = 1f; case north: valueV = -1f; break; case northWest: valueV = -1f; case west: valueH = -1f; break; case southEast: valueH = 1f; case south: valueV = 1f; break; case southWest: valueV = 1f; valueH = -1f; break; } if (configuredInputH != null) handledH = configuredAxisMoved(controller, configuredInputH.inputId, valueH); if (configuredInputV != null) handledV = configuredAxisMoved(controller, configuredInputV.inputId, valueV); return handledH || handledV; }
@Test public void testAxisToAxisMapping() { ControllerMappings mappings = new ControllerMappings(); // We test 3 axis ConfiguredInput axis1 = new ConfiguredInput(ConfiguredInput.Type.axis, 5); ConfiguredInput axis2 = new ConfiguredInput(ConfiguredInput.Type.axisAnalog, 6); ConfiguredInput axis3 = new ConfiguredInput(ConfiguredInput.Type.axisDigital, 7); mappings.addConfiguredInput(axis1); mappings.addConfiguredInput(axis2); mappings.addConfiguredInput(axis3); // ok, configuration done... mappings.commitConfig(); // now we connect a Controller... and map MockedController controller = new MockedController(); controller.axisValues = new float[3]; controller.povDirection = PovDirection.center; controller.axisValues[0] = .2f; controller.axisValues[1] = .6f; controller.axisValues[2] = -.2f; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 5)); //next call too fast assertEquals(ControllerMappings.RecordResult.not_added, mappings.recordMapping(controller, 6)); controller.axisValues[0] = .2f; controller.axisValues[1] = .1f; controller.axisValues[2] = 0; assertEquals(ControllerMappings.RecordResult.nothing_done, mappings.recordMapping(controller, 6)); controller.axisValues[0] = .6f; controller.axisValues[1] = .5f; controller.axisValues[2] = 0; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 6)); controller.axisValues[0] = .6f; controller.axisValues[1] = .5f; controller.axisValues[2] = -1; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 7)); assertTrue(mappings.getControllerMapping(controller).checkCompleted()); System.out.println(mappings.toJson().toJson(JsonWriter.OutputType.json)); // now check TestControllerAdapter controllerAdapter = new TestControllerAdapter(mappings); // the digital assertTrue(controllerAdapter.axisMoved(controller, 2, .8f)); assertEquals(7, controllerAdapter.lastEventId); assertTrue(controllerAdapter.axisMoved(controller, 2, -.8f)); assertEquals(7, controllerAdapter.lastEventId); assertTrue(controllerAdapter.axisMoved(controller, 2, -.2f)); assertEquals(7, controllerAdapter.lastEventId); assertTrue(controllerAdapter.axisMoved(controller, 1, .8f)); assertEquals(5, controllerAdapter.lastEventId); assertTrue(controllerAdapter.axisMoved(controller, 0, -.9f)); assertEquals(6, controllerAdapter.lastEventId); MappedController mappedController = new MappedController(controller, mappings); controller.axisValues[0] = .6f; controller.axisValues[1] = .5f; controller.axisValues[2] = -.7f; assertEquals(.6f, mappedController.getConfiguredAxisValue(6), .01f); assertEquals(.5f, mappedController.getConfiguredAxisValue(5), .01f); assertEquals(-1f, mappedController.getConfiguredAxisValue(7), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(3), .01f); }
@Test public void testPovToAxisMapping() { ControllerMappings mappings = new ControllerMappings(); // We test 3 axis ConfiguredInput axis1 = new ConfiguredInput(ConfiguredInput.Type.axis, 5); ConfiguredInput axis2 = new ConfiguredInput(ConfiguredInput.Type.axisAnalog, 6); ConfiguredInput axis3 = new ConfiguredInput(ConfiguredInput.Type.axisDigital, 7); mappings.addConfiguredInput(axis1); mappings.addConfiguredInput(axis2); mappings.addConfiguredInput(axis3); // ok, configuration done... mappings.commitConfig(); // now we connect a Controller... and map MockedController controller = new MockedController(); controller.axisValues = new float[3]; controller.povDirection = PovDirection.east; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 5)); //next call too fast assertEquals(ControllerMappings.RecordResult.not_added, mappings.recordMapping(controller, 7)); //not two directions controller.povDirection = PovDirection.northWest; assertEquals(ControllerMappings.RecordResult.not_added, mappings.recordMapping(controller, 7)); //not same direction on different configurations controller.povDirection = PovDirection.west; assertEquals(ControllerMappings.RecordResult.not_added, mappings.recordMapping(controller, 7)); //not for analog axis controller.povDirection = PovDirection.north; assertEquals(ControllerMappings.RecordResult.nothing_done, mappings.recordMapping(controller, 6)); assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 7)); assertFalse(mappings.getControllerMapping(controller).checkCompleted()); System.out.println(mappings.toJson().toJson(JsonWriter.OutputType.json)); // now check TestControllerAdapter controllerAdapter = new TestControllerAdapter(mappings); assertFalse(controllerAdapter.povMoved(controller, 1, PovDirection.center)); // the digital assertTrue(controllerAdapter.povMoved(controller, 0, PovDirection.center)); assertTrue(controllerAdapter.lastEventId == 5 || controllerAdapter.lastEventId == 7); assertTrue(controllerAdapter.povMoved(controller, 0, PovDirection.east)); assertTrue(controllerAdapter.lastEventId == 5 || controllerAdapter.lastEventId == 7); assertTrue(controllerAdapter.povMoved(controller, 0, PovDirection.southEast)); assertTrue(controllerAdapter.lastEventId == 5 || controllerAdapter.lastEventId == 7); assertTrue(controllerAdapter.povMoved(controller, 0, PovDirection.west)); assertTrue(controllerAdapter.lastEventId == 5 || controllerAdapter.lastEventId == 7); MappedController mappedController = new MappedController(controller, mappings); controller.povDirection = PovDirection.center; assertEquals(0, mappedController.getConfiguredAxisValue(5), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(6), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(7), .01f); controller.povDirection = PovDirection.north; assertEquals(0, mappedController.getConfiguredAxisValue(5), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(6), .01f); assertEquals(-1, mappedController.getConfiguredAxisValue(7), .01f); controller.povDirection = PovDirection.east; assertEquals(1, mappedController.getConfiguredAxisValue(5), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(6), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(7), .01f); controller.povDirection = PovDirection.southWest; assertEquals(-1, mappedController.getConfiguredAxisValue(5), .01f); assertEquals(0, mappedController.getConfiguredAxisValue(6), .01f); assertEquals(1, mappedController.getConfiguredAxisValue(7), .01f); }
@Test public void testJsonSaveLoad() { ControllerMappings mappings = new ControllerMappings(); mappings.addConfiguredInput(new ConfiguredInput(ConfiguredInput.Type.button, 1)); mappings.addConfiguredInput(new ConfiguredInput(ConfiguredInput.Type.axis, 2)); mappings.addConfiguredInput(new ConfiguredInput(ConfiguredInput.Type.axis, 3)); mappings.addConfiguredInput(new ConfiguredInput(ConfiguredInput.Type.axis, 4)); mappings.commitConfig(); // now we connect a Controller... and map MockedController controller = new MockedController(); controller.axisValues = new float[3]; controller.povDirection = PovDirection.center; controller.axisValues[0] = 1f; controller.pressedButton = -1; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 2)); controller.pressedButton = 2; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 1)); controller.pressedButton = 1; assertEquals(ControllerMappings.RecordResult.need_second_button, mappings.recordMapping(controller, 3)); controller.pressedButton = 0; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 3)); controller.pressedButton = -1; controller.povDirection = PovDirection.east; assertEquals(ControllerMappings.RecordResult.recorded, mappings.recordMapping(controller, 4)); JsonValue json = mappings.toJson(); System.out.println(json.toJson(JsonWriter.OutputType.json)); MappedController mappedController = new MappedController(controller, mappings); mappings.resetMappings(controller); mappedController.refreshMappingCache(); assertEquals(0, mappedController.getConfiguredAxisValue(4), 0.1f); mappings.fillFromJson(json); mappedController.refreshMappingCache(); assertEquals(1, mappedController.getConfiguredAxisValue(4), 0.1f); controller.pressedButton = 2; assertTrue(mappedController.isButtonPressed(1)); controller.pressedButton = 1; assertEquals(1, mappedController.getConfiguredAxisValue(3), 0.1f); }
@Override public PovDirection getPov(int povCode) { return (povCode != 0 ? PovDirection.center : povDirection); }
public void pressPov(PovDirection dir) { if (owner.isController() && owner.isLeft()) { rightFace = false; leftFace = false; upFace = false; downFace = false; switch (dir) { case center: break; case east: rightFace = true; back = true; break; case north: upFace = true; secSort = true; break; case northEast: upFace = true; rightFace = true; secSort = false; back = false; break; case northWest: upFace = true; leftFace = true; secSort = false; primSort = false; break; case south: downFace = true; select = true; break; case southEast: rightFace = true; downFace = true; select = false; back = false; break; case southWest: leftFace = true; downFace = true; select = false; primSort = false; break; case west: leftFace = true; primSort = true; break; default: break; } } }
@Override public boolean povMoved(Controller cntrlr, int i, PovDirection pd) { return false; }