package com.integreight.onesheeld.shields.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.enums.ArduinoPin;
import com.integreight.onesheeld.model.ArduinoConnectedPin;
import com.integreight.onesheeld.sdk.OneSheeldDevice;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.GamepadShield;
import com.integreight.onesheeld.shields.controller.GamepadShield.Pin;
import com.integreight.onesheeld.utils.ConnectingPinsView;
import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener;
import com.integreight.onesheeld.utils.customviews.Key;
import com.integreight.onesheeld.utils.customviews.Key.KeyTouchEventListener;
public class GamepadFragment extends ShieldFragmentParent<GamepadFragment> {
private Key upArrowKey;
private Key downArrowKey;
private Key leftArrowKey;
private Key rightArrowKey;
private Key yellowArrowKey;
private Key greenArrowKey;
private Key blueArrowKey;
private Key redArrowKey;
KeyTouchEventListener touchEventListener = new KeyTouchEventListener() {
@Override
public void onPressed(Key k) {
// TODO Auto-generated method stub
switch (k.getId()) {
case R.id.gamepad_up_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.UP_ARROW.getName(), Pin.UP_ARROW.getId());
break;
case R.id.gamepad_down_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.DOWN_ARROW.getName(), Pin.DOWN_ARROW.getId());
break;
case R.id.gamepad_right_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.RIGHT_ARROW.getName(), Pin.RIGHT_ARROW.getId());
break;
case R.id.gamepad_left_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.LEFT_ARROW.getName(), Pin.LEFT_ARROW.getId());
break;
case R.id.gamepad_yellow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.YELLOW_BUTTON.getName(), Pin.YELLOW_BUTTON.getId());
break;
case R.id.gamepad_green_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.GREEN_BUTTON.getName(), Pin.GREEN_BUTTON.getId());
break;
case R.id.gamepad_red_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.RED_BUTTON.getName(), Pin.RED_BUTTON.getId());
break;
case R.id.gamepad_blue_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToHigh(
Pin.BLUE_BUTTON.getName(), Pin.BLUE_BUTTON.getId());
break;
default:
break;
}
}
@Override
public void onReleased(Key k) {
// TODO Auto-generated method stub
switch (k.getId()) {
case R.id.gamepad_up_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.UP_ARROW.getName(), Pin.UP_ARROW.getId());
break;
case R.id.gamepad_down_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.DOWN_ARROW.getName(), Pin.DOWN_ARROW.getId());
break;
case R.id.gamepad_right_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.RIGHT_ARROW.getName(), Pin.RIGHT_ARROW.getId());
break;
case R.id.gamepad_left_arrow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.LEFT_ARROW.getName(), Pin.LEFT_ARROW.getId());
break;
case R.id.gamepad_yellow_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.YELLOW_BUTTON.getName(), Pin.YELLOW_BUTTON.getId());
break;
case R.id.gamepad_green_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.GREEN_BUTTON.getName(), Pin.GREEN_BUTTON.getId());
break;
case R.id.gamepad_red_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.RED_BUTTON.getName(), Pin.RED_BUTTON.getId());
break;
case R.id.gamepad_blue_key:
((GamepadShield) getApplication().getRunningShields().get(
getControllerTag())).setPinToLow(
Pin.BLUE_BUTTON.getName(), Pin.BLUE_BUTTON.getId());
break;
default:
break;
}
}
};
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.gamepad_shield_fragment_layout,
container, false);
}
@Override
public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) {
upArrowKey = (Key) v.findViewById(R.id.gamepad_up_arrow_key);
downArrowKey = (Key) v.findViewById(R.id.gamepad_down_arrow_key);
leftArrowKey = (Key) v.findViewById(R.id.gamepad_left_arrow_key);
rightArrowKey = (Key) v.findViewById(R.id.gamepad_right_arrow_key);
yellowArrowKey = (Key) v.findViewById(R.id.gamepad_yellow_key);
redArrowKey = (Key) v.findViewById(R.id.gamepad_red_key);
greenArrowKey = (Key) v.findViewById(R.id.gamepad_green_key);
blueArrowKey = (Key) v.findViewById(R.id.gamepad_blue_key);
upArrowKey.setEventListener(touchEventListener);
downArrowKey.setEventListener(touchEventListener);
leftArrowKey.setEventListener(touchEventListener);
rightArrowKey.setEventListener(touchEventListener);
yellowArrowKey.setEventListener(touchEventListener);
redArrowKey.setEventListener(touchEventListener);
greenArrowKey.setEventListener(touchEventListener);
blueArrowKey.setEventListener(touchEventListener);
}
@Override
public void doOnStart() {
ConnectingPinsView.getInstance().reset(
getApplication().getRunningShields().get(getControllerTag()),
new OnPinSelectionListener() {
@Override
public void onSelect(ArduinoPin pin) {
if (pin != null) {
getApplication()
.getRunningShields()
.get(getControllerTag())
.setConnected(new ArduinoConnectedPin(
pin.microHardwarePin,
OneSheeldDevice.OUTPUT));
}
}
@Override
public void onUnSelect(ArduinoPin pin) {
// TODO Auto-generated method stub
}
});
}
private void initializeFirmata() {
if ((getApplication().getRunningShields().get(getControllerTag())) == null)
getApplication().getRunningShields().put(getControllerTag(),
new GamepadShield(activity, getControllerTag()));
}
@Override
public void doOnServiceConnected() {
initializeFirmata();
}
}