示例#1
0
 public void setDeadZones(float xDeadZone, float yDeadZone) {
   for (int i = 0; i < Controllers.getControllerCount(); i++) {
     Controller c = Controllers.getController(i);
     c.setXAxisDeadZone(xDeadZone);
     c.setYAxisDeadZone(yDeadZone);
   }
 }
示例#2
0
文件: Input.java 项目: Lucki/opsu
  /**
   * Initialise the controllers system
   *
   * @throws SlickException Indicates a failure to use the hardware
   */
  public void initControllers() throws SlickException {
    if (controllersInited) {
      return;
    }

    controllersInited = true;
    try {
      Controllers.create();
      int count = Controllers.getControllerCount();

      for (int i = 0; i < count; i++) {
        Controller controller = Controllers.getController(i);

        if ((controller.getButtonCount() >= 3) && (controller.getButtonCount() < MAX_BUTTONS)) {
          controllers.add(controller);
        }
      }

      Log.info("Found " + controllers.size() + " controllers");
      for (int i = 0; i < controllers.size(); i++) {
        Log.info(i + " : " + ((Controller) controllers.get(i)).getName());
      }
    } catch (LWJGLException e) {
      if (e.getCause() instanceof ClassNotFoundException) {
        throw new SlickException(
            "Unable to create controller - no jinput found - add jinput.jar to your classpath");
      }
      throw new SlickException("Unable to create controllers");
    } catch (NoClassDefFoundError | UnsatisfiedLinkError e) {
      // forget it, no jinput availble
    }
  }
示例#3
0
 public void createControllers() {
   Controllers.destroy();
   try {
     Controllers.create();
     for (int i = 0; i < Controllers.getControllerCount(); i++) {
       Controller c = Controllers.getController(i);
       c.setXAxisDeadZone(DEFAULT_DEAD_ZONE);
       c.setYAxisDeadZone(DEFAULT_DEAD_ZONE);
     }
     buttonWasPressed =
         new boolean[getControllerCount()][Controllers.getController(0).getButtonCount()];
     // c = controller index
     for (int c = 0; c < buttonWasPressed.length; c++) {
       // b = buttonID index
       for (int b = 0; b < buttonWasPressed[0].length; b++) {
         buttonWasPressed[c][b] = false;
       }
     }
   } catch (LWJGLException e) {
     // TODO Auto-generated catch block
     // Sys.alert("Something went wrong!", e.getMessage());
   }
 }
  private int detectControllers() {
    validControllers.clear();
    inValidControllers.clear();

    try {
      if (!Controllers.isCreated()) Controllers.create();

      if (Controllers.getControllerCount() > 0) {
        LogHelper.Info("Found " + Controllers.getControllerCount() + " controller(s) in total.");
        for (int joyIndex = 0; joyIndex < Controllers.getControllerCount(); joyIndex++) {
          Controller thisController = Controllers.getController(joyIndex);

          logControllerInfo(thisController);

          if (controllerUtils.meetsInputRequirements(
              thisController, requiredButtonCount, requiredMinButtonCount, requiredAxisCount)) {
            LogHelper.Info(
                "Controller #"
                    + joyIndex
                    + " ( "
                    + thisController.getName()
                    + ") meets the input requirements");
            addControllerToList(validControllers, thisController.getName(), joyIndex);
          } else {
            LogHelper.Info("This controller does not meet the input requirements");
            addControllerToList(inValidControllers, thisController.getName(), joyIndex);
          }
          LogHelper.Info("---");
        }
      }
    } catch (org.lwjgl.LWJGLException e) {
      System.err.println("Couldn't initialize Controllers: " + e.getMessage());
    }

    LogHelper.Info("Found " + validControllers.size() + " valid controllers!");
    return validControllers.size();
  }
示例#5
0
  /*
   * Updates the values of each button in the gui
   *
   */
  public void updateDetails() {
    for (int i = 0; i < controller.getButtonCount(); i++) {
      values[i].setText("" + controller.isButtonPressed(i));
    }
    for (int i = buttonCount; i < buttonCount + controller.getAxisCount(); i++) {
      values[i].setText("" + controller.getAxisValue(i - buttonCount));
    }

    values[itemCount - 2].setText("" + controller.getPovX());
    values[itemCount - 1].setText("" + controller.getPovY());
  }
  public static void saveDeadZones(int joyId) {
    Controller controller = Controllers.getController(joyId);
    DecimalFormat df = new DecimalFormat("#0.00");

    for (int i = 0; i < controller.getAxisCount(); i++) {
      config.setConfigFileSetting(
          "-Deadzones-." + controller.getName(),
          controller.getAxisName(i),
          df.format(controller.getDeadZone(i)));
    }
    config.addComment(
        "-Deadzones-", "Deadzone values here will override values in individual bindings");
    LogHelper.Info("Saved deadzones for " + controller.getName());
  }
示例#7
0
  // Constructor - Creates a Controller object for every controller detected
  public TestControllers(int index) {

    // Get the controller index from the Controllers group
    controller = Controllers.getController(index);
    // Gui LayoutManager
    setLayout(null);

    // Get the number of buttons on the controller
    buttonCount = controller.getButtonCount();
    // Get the number of buttons + the number of hat pads
    itemCount = controller.getButtonCount() + controller.getAxisCount() + 2;
    // Create a Gui Box for every button / hat pad
    values = new JTextField[itemCount];
    names = new JTextField[itemCount];

    for (int i = 0; i < controller.getButtonCount(); i++) {
      names[i] = new JTextField();
      names[i].setEditable(false);
      names[i].setBounds(0, i * 30, 100, 30);
      names[i].setText(controller.getButtonName(i));
      add(names[i]);
      values[i] = new JTextField();
      values[i].setEditable(false);
      values[i].setBounds(100, i * 30, 100, 30);
      add(values[i]);
    }
    for (int i = buttonCount; i < buttonCount + controller.getAxisCount(); i++) {
      names[i] = new JTextField();
      names[i].setEditable(false);
      names[i].setBounds(0, i * 30, 100, 30);
      names[i].setText(controller.getAxisName(i - buttonCount));
      add(names[i]);
      values[i] = new JTextField();
      values[i].setEditable(false);
      values[i].setBounds(100, i * 30, 100, 30);
      add(values[i]);
    }

    int i = itemCount - 2;
    names[i] = new JTextField();
    names[i].setEditable(false);
    names[i].setBounds(0, i * 30, 100, 30);
    names[i].setText("POV X");
    add(names[i]);
    values[i] = new JTextField();
    values[i].setEditable(false);
    values[i].setBounds(100, i * 30, 100, 30);
    add(values[i]);

    i = itemCount - 1;
    names[i] = new JTextField();
    names[i].setEditable(false);
    names[i].setBounds(0, i * 30, 100, 30);
    names[i].setText("POV Y");
    add(names[i]);
    values[i] = new JTextField();
    values[i].setEditable(false);
    values[i].setBounds(100, i * 30, 100, 30);
    add(values[i]);

    total++;

    setPreferredSize(new Dimension(200, 30 * itemCount));
    JFrame frame = new JFrame(controller.getName());
    frame.setContentPane(new JScrollPane(this));
    frame.addWindowListener(
        new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            total--;
            if (total == 0) {
              System.exit(0);
            }
          }
        });
    frame.setSize(230, 400);
    frame.setLocation(index * 30, index * 30);
    frame.setVisible(true);
  }
示例#8
0
  public static void main(String[] argv) {

    // Create the environment of controllers
    try {
      Controllers.create();
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(0);
    }

    // Print how many controllers there are
    int count = Controllers.getControllerCount();
    System.out.println(count + " Controllers Found");

    // Print the name of each controller
    for (int i = 0; i < count; i++) {
      Controller controller = Controllers.getController(i);
      System.out.println(controller.getName() + " ");
      System.out.println("Number of Rumblers " + controller.getRumblerCount());
      System.out.println("Index Number " + controller.getIndex());
    }

    // If there are no controllers, exit program
    if (count == 0) {
      System.exit(0);
    }

    TestControllers[] controllerWindows = new TestControllers[count];
    for (int i = 0; i < count; i++) {
      controllerWindows[i] = new TestControllers(i);
    }

    // Start the "Game"
    boolean running = true;
    while (running) {
      // Sleep for 100 milliseonds, no need to poll too fast
      try {
        Thread.sleep(100);
      } catch (Exception e) {
      }
      ;

      // Poll all the controllers
      Controllers.poll();

      /*
       * Controllers have an event listener
       * Whenever a button is pushed it add the event
       * it to the buffer of the controller instance
       * As long as the buffer has something in it
       * we print it out                                 *
       */
      while (Controllers.next()) {
        //	                                System.out.println("Event Fired: ");
        //
        // System.out.println("\t"+Controllers.getEventNanoseconds());
        //
        // System.out.println("\t"+Controllers.getEventSource()+":"+Controllers.getEventControlIndex()+":"+Controllers.isEventButton());
        //
        // System.out.println("\t"+Controllers.isEventXAxis()+":"+Controllers.isEventYAxis());

        // Controller number
        int controllerNumber = Controllers.getEventSource().getIndex();
        // Button number
        int buttonNumber = Controllers.getEventControlIndex();
        /*
         * Pressing a button on an xBox controller slightly alters the analog values
         * This causes multiple unwanted events on button push
         * By checking to see if the event was a button we can strip out the uneeded events
         */
        if (Controllers.isEventButton() == true) {
          handleButtonPush(controllerNumber, buttonNumber);
        }
      }

      for (int i = 0; i < count; i++) {
        controllerWindows[i].updateDetails();
      }
    }
  } // end main
 private void logControllerInfo(Controller controller) {
   LogHelper.Info("Found controller " + controller.getName() + " (" + controller.getIndex() + ")");
   LogHelper.Info("It has  " + controller.getButtonCount() + " buttons.");
   LogHelper.Info("It has  " + controller.getAxisCount() + " axes.");
 }
示例#10
0
 public ControllerEvent getInput(int controllerIndex) {
   Controller c = Controllers.getController(controllerIndex);
   ControllerEvent ce = new ControllerEvent();
   if (c.getXAxisValue() < -0.75 && c.getYAxisValue() > -0.75 && c.getYAxisValue() < 0.75) {
     ce.setDirection(Direction.LEFT);
   } else if (c.getXAxisValue() > 0.75 && c.getYAxisValue() > -0.75 && c.getYAxisValue() < 0.75) {
     ce.setDirection(Direction.RIGHT);
   } else if (c.getYAxisValue() < -0.75 && c.getXAxisValue() > -0.75 && c.getXAxisValue() < 0.75) {
     ce.setDirection(Direction.UP);
   } else if (c.getYAxisValue() > 0.75 && c.getXAxisValue() > -0.75 && c.getXAxisValue() < 0.75) {
     ce.setDirection(Direction.DOWN);
   }
   for (Button button : Button.values()) {
     if (c.isButtonPressed(button.buttonID)) {
       if (!buttonWasPressed[controllerIndex][button.buttonID]) {
         ce.addButtonState(button, true);
         buttonWasPressed[controllerIndex][button.buttonID] = true;
       }
     } else {
       buttonWasPressed[controllerIndex][button.buttonID] = false;
     }
   }
   return ce;
 }
示例#11
0
 public void pollControllers() {
   for (int i = 0; i < Controllers.getControllerCount(); i++) {
     Controller c = Controllers.getController(i);
     c.poll();
   }
 }