package net.fourbytes.shadow.utils.backend;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.mappings.Ouya;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.IntIntMap;
import net.fourbytes.shadow.ControllerHelper;
import net.fourbytes.shadow.ControllerHelper.ControllerButton;
import net.fourbytes.shadow.ControllerHelper.ControllerAxis;
import net.fourbytes.shadow.Input;
public class OuyaSystemControllerMapping implements ControllerHelper.Mapping {
public Array<String> names = new Array<String>(String.class);
public IntIntMap axes = new IntIntMap();
public IntIntMap buttons = new IntIntMap();
@Override
public String getName() {
return names.first()+" mapping (OUYA system mapping)";
}
@Override
public boolean map(Controller controller, ControllerHelper controllerHelper) {
if (!names.contains(controller.getName(), false)) {
return false;
}
System.out.println("Automapping OUYA controller...");
System.out.println("OUYA controller actually: "+controller.getName());
controllerHelper.map(Input.up, new ControllerButton(controller, getB(Ouya.BUTTON_DPAD_UP)));
controllerHelper.map(Input.down, new ControllerButton(controller, getB(Ouya.BUTTON_DPAD_DOWN)));
controllerHelper.map(Input.left, new ControllerButton(controller, getB(Ouya.BUTTON_DPAD_LEFT)));
controllerHelper.map(Input.right, new ControllerButton(controller, getB(Ouya.BUTTON_DPAD_RIGHT)));
controllerHelper.map(Input.up, new ControllerAxis(controller, getA(Ouya.AXIS_LEFT_Y), true));
controllerHelper.map(Input.down, new ControllerAxis(controller, getA(Ouya.AXIS_LEFT_Y), false));
controllerHelper.map(Input.left, new ControllerAxis(controller, getA(Ouya.AXIS_LEFT_X), true));
controllerHelper.map(Input.right, new ControllerAxis(controller, getA(Ouya.AXIS_LEFT_X), false));
controllerHelper.map(Input.jump, new ControllerButton(controller, getB(Ouya.BUTTON_O)));
controllerHelper.map(Input.pause, new ControllerButton(controller, getB(Ouya.BUTTON_MENU)));
controllerHelper.map(Input.enter, new ControllerButton(controller, getB(Ouya.BUTTON_O)));
controllerHelper.map(Input.androidBack, new ControllerButton(controller, getB(Ouya.BUTTON_A)));
return true;
}
private int getA(int axisOUYA) {
return axes.get(axisOUYA, axisOUYA);
}
private int getB(int buttonOUYA) {
return buttons.get(buttonOUYA, buttonOUYA);
}
}