package net.fourbytes.shadow.utils.backend;
import com.badlogic.gdx.controllers.Controller;
import net.fourbytes.shadow.Shadow;
/**
* Default ControllerNumerator used by backends not offering / made
* for numbering of currently used controllers. It's not as
* "fast" as other ControllerNumerators as others handle events of
* connection and disconnection and this numerator polls for connected
* controllers every call to getControllers as ControllerNumerators
* should not listen to GDX's Controllers class but rather to
* Shadow's ControllerHelper instance.
*/
public class DefaultControllerNumerator extends ControllerNumerator {
protected Controller[] controllers;
protected int maximum;
public DefaultControllerNumerator() {
this(0);
}
public DefaultControllerNumerator(int maximum) {
this.maximum = maximum;
if (maximum > 0) {
controllers = new Controller[maximum];
}
}
@Override
public Controller[] getControllers() {
if (maximum < 1 &&
(controllers == null || controllers.length != Shadow.controllerHelper.controllers.size)) {
controllers = Shadow.controllerHelper.controllers.toArray(Controller.class);
} else {
for (int i = 0; i < controllers.length; i++) {
if (i < Shadow.controllerHelper.controllers.size) {
controllers[i] = Shadow.controllerHelper.controllers.get(i);
} else {
controllers[i] = null;
}
}
}
return controllers;
}
}