package net.fourbytes.shadow.utils.backend; import com.badlogic.gdx.controllers.Controller; /** * ControllerNumerator is a backend independent * manager of controller identification (numeration), * either given by the backend (i.e. OuyaControllerNumerator) * or "comes-first-is-first" (DefaultControllerNumerator). */ public abstract class ControllerNumerator { public ControllerNumerator() { } public int getPlayerForController(Controller controller) { Controller[] controllers = getControllers(); for (int i = 0; i < controllers.length; i++) { if (controller == controllers[i]) { return i; } } return -1; } public Controller getControllerForPlayer(int player) { Controller[] controllers = getControllers(); if (controllers == null) { return null; } if (player < 0 || player >= controllers.length) { return null; } return controllers[player]; } public int getNextPlayer(int start) { Controller[] controllers = getControllers(); if (controllers == null) { return -1; } if (start < 0 || start >= controllers.length) { return -1; } for (int i = start; i < controllers.length; i++) { if (controllers[i] != null) { return i; } } return -1; } public int getPrevPlayer(int start) { Controller[] controllers = getControllers(); if (controllers == null) { return -1; } if (start < 0 || start >= controllers.length) { return -1; } for (int i = start; i >= 0; i--) { if (controllers[i] != null) { return i; } } return -1; } public Controller getNextController(int start) { Controller[] controllers = getControllers(); if (controllers == null) { return null; } if (start < 0 || start >= controllers.length) { return null; } for (int i = start; i < controllers.length; i++) { if (controllers[i] != null) { return controllers[i]; } } return null; } public Controller getPrevController(int start) { Controller[] controllers = getControllers(); if (controllers == null) { return null; } if (start < 0 || start >= controllers.length) { return null; } for (int i = start; i >= 0; i--) { if (controllers[i] != null) { return controllers[i]; } } return null; } public abstract Controller[] getControllers(); }