From ddbadba3ea09944f2146bd0121c24d9e8be4efbb Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 14 Mar 2014 15:16:21 -0430 Subject: [PATCH] Added OUYA gamepad support. --- .../ciens/ccg/nxtar/states/InGameState.java | 99 +++++++++++++++++-- 1 file changed, 89 insertions(+), 10 deletions(-) diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java index dae72b6..c09a615 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java +++ b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java @@ -122,9 +122,13 @@ public class InGameState extends BaseState{ motorButtonsPointers[4] = -1; motorButtonsPointers[5] = -1; - motorGamepadButtonPressed = new boolean[2]; + motorGamepadButtonPressed = new boolean[6]; motorGamepadButtonPressed[0] = false; motorGamepadButtonPressed[1] = false; + motorGamepadButtonPressed[2] = false; + motorGamepadButtonPressed[3] = false; + motorGamepadButtonPressed[4] = false; + motorGamepadButtonPressed[5] = false; axisStopSent = new boolean[4]; axisStopSent[0] = true; @@ -623,29 +627,67 @@ public class InGameState extends BaseState{ public boolean buttonDown(Controller controller, int buttonCode){ MotorEvent event; - if(stateActive && Ouya.runningOnOuya){ + if(stateActive /*&& Ouya.runningOnOuya*/){ Gdx.app.log(TAG, CLASS_NAME + ".buttonDown() :: " + controller.getName() + " :: " + Integer.toString(buttonCode)); if(buttonCode == Ouya.BUTTON_L1){ motorGamepadButtonPressed[0] = true; - if(!motorGamepadButtonPressed[1]){ + if(!motorGamepadButtonPressed[4]){ event = new MotorEvent(); event.setMotor(motor_t.MOTOR_A); - event.setPower((byte)100); + event.setPower((byte)-100); queue.addEvent(event); } }else if(buttonCode == Ouya.BUTTON_R1){ motorGamepadButtonPressed[1] = true; - if(!motorGamepadButtonPressed[0]){ + if(!motorGamepadButtonPressed[5]){ event = new MotorEvent(); event.setMotor(motor_t.MOTOR_C); event.setPower((byte)-100); queue.addEvent(event); } + }else if(buttonCode == Ouya.BUTTON_DPAD_LEFT){ + motorGamepadButtonPressed[2] = false; + + if(!motorGamepadButtonPressed[3]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_B); + event.setPower((byte)-40); + queue.addEvent(event); + } + }else if(buttonCode == Ouya.BUTTON_DPAD_RIGHT){ + motorGamepadButtonPressed[3] = false; + + if(!motorGamepadButtonPressed[2]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_B); + event.setPower((byte)40); + queue.addEvent(event); + } + }else if(buttonCode == Ouya.BUTTON_L2){ + motorGamepadButtonPressed[4] = false; + + if(!motorGamepadButtonPressed[0]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_A); + event.setPower((byte)100); + queue.addEvent(event); + } + + }else if(buttonCode == Ouya.BUTTON_R2){ + motorGamepadButtonPressed[5] = false; + + if(!motorGamepadButtonPressed[1]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_C); + event.setPower((byte)100); + queue.addEvent(event); + } + } return true; @@ -658,29 +700,66 @@ public class InGameState extends BaseState{ public boolean buttonUp(Controller controller, int buttonCode){ MotorEvent event; - if(stateActive && Ouya.runningOnOuya){ + if(stateActive /*&& Ouya.runningOnOuya*/){ Gdx.app.log(TAG, CLASS_NAME + ".buttonDown() :: " + controller.getName() + " :: " + Integer.toString(buttonCode)); - if(buttonCode == Ouya.BUTTON_L1){ + if(buttonCode == Ouya.BUTTON_L1){ motorGamepadButtonPressed[0] = false; - if(!motorGamepadButtonPressed[1]){ + if(!motorGamepadButtonPressed[4]){ event = new MotorEvent(); event.setMotor(motor_t.MOTOR_A); event.setPower((byte)0); queue.addEvent(event); } - }else if(buttonCode == Ouya.BUTTON_R1){ + }else if(buttonCode == Ouya.BUTTON_R1){ motorGamepadButtonPressed[1] = false; - if(!motorGamepadButtonPressed[0]){ + if(!motorGamepadButtonPressed[5]){ event = new MotorEvent(); event.setMotor(motor_t.MOTOR_C); event.setPower((byte)0); queue.addEvent(event); } + }else if(buttonCode == Ouya.BUTTON_DPAD_LEFT){ + motorGamepadButtonPressed[2] = false; + + if(!motorGamepadButtonPressed[3]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_B); + event.setPower((byte)0); + queue.addEvent(event); + } + }else if(buttonCode == Ouya.BUTTON_DPAD_RIGHT){ + motorGamepadButtonPressed[3] = false; + + if(!motorGamepadButtonPressed[2]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_B); + event.setPower((byte)0); + queue.addEvent(event); + } + }else if(buttonCode == Ouya.BUTTON_L2){ + motorGamepadButtonPressed[4] = false; + + if(!motorGamepadButtonPressed[0]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_A); + event.setPower((byte)0); + queue.addEvent(event); + } + + }else if(buttonCode == Ouya.BUTTON_R2){ + motorGamepadButtonPressed[5] = false; + + if(!motorGamepadButtonPressed[1]){ + event = new MotorEvent(); + event.setMotor(motor_t.MOTOR_C); + event.setPower((byte)0); + queue.addEvent(event); + } } return true;