package com.masseranolabs.snappyfrog; import com.badlogic.gdx.controllers.Controller; import com.badlogic.gdx.controllers.ControllerListener; import com.badlogic.gdx.controllers.Controllers; import com.badlogic.gdx.controllers.PovDirection; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Array; import tv.ouya.console.api.OuyaIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class OuyaServices extends BroadcastReceiver implements PlatformServices, ControllerListener { private Array<Controller> controllers = new Array<Controller>(); private boolean gamePadDown = false; public OuyaServices(){ } @Override public void initGamePadControllers() { for(Controller controller: Controllers.getControllers()) { controllers.add(controller); } Controllers.addListener(this); } @Override public void connected(Controller arg0) { controllers.add(arg0); } @Override public void disconnected(Controller arg0) { // int index = -1; // for (int i = 0; i < controllers.size; i++){ // if (controllers.get(i).getName().equals(arg0.getName())){ // index = i; // break; // } // } // // if (index != -1){ // controllers.removeIndex(index); // } controllers.removeValue(arg0, true); if (controllers.size == 0){ // Pause game or notify disconnect LevelScreen.paused = true; } } @Override public boolean accelerometerMoved(Controller arg0, int arg1, Vector3 arg2) { return false; } @Override public boolean axisMoved(Controller arg0, int arg1, float arg2) { return false; } @Override public boolean buttonDown(Controller arg0, int arg1) { // Don't let multiple people interfer with the gameplay if (controllers.size > 0 && controllers.get(0) == arg0){ gamePadDown = true; } return true; } @Override public boolean buttonUp(Controller arg0, int arg1) { if (controllers.size > 0 && controllers.get(0) == arg0){ gamePadDown = false; } return true; } @Override public boolean povMoved(Controller arg0, int arg1, PovDirection arg2) { return false; } @Override public boolean xSliderMoved(Controller arg0, int arg1, boolean arg2) { return false; } @Override public boolean ySliderMoved(Controller arg0, int arg1, boolean arg2) { return false; } @Override public boolean isGamePadButtonPressed() { return gamePadDown; } @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(OuyaIntent.ACTION_MENUAPPEARING)) { Game.getSingleton().pause(); } } @Override public boolean isSharingAvailable() { return false; } @Override public boolean shareCurrentScreen() { return false; } @Override public boolean willResumeAfterShare() { return true; } @Override public boolean delayHint() { return true; } @Override public boolean supportsFreetype() { return true; } }