package Controller; import net.java.games.input.Event; import Graphics.RenderMaster; import States.StateContext; public class KeyboardController implements GameController { // Don't change arrow keys. The other 4 values can be moved to wherever we deem best private static final String UP_KEY = "Up"; private static final String DOWN_KEY = "Down"; private static final String LEFT_KEY = "Left"; private static final String RIGHT_KEY = "Right"; private static final String ACTION_KEY = " "; // Space bar private static final String BACK_KEY = "Z"; private static final String WEAPON_KEY = "X"; private static final String PAUSE_KEY = "Escape"; private int upValue; private int downValue; private int leftValue; private int rightValue; private int actionValue; private int backValue; private int weaponValue; private int pauseValue; private int id; public KeyboardController(int id){ this.id = id; upValue = 0; downValue = 0; leftValue = 0; rightValue = 0; actionValue = 0; backValue = 0; weaponValue = 0; pauseValue = 0; } @Override public void handleEvent(Event event, StateContext stateContext, RenderMaster renderMaster) { float eventValue = event.getValue(); int intEventValue = (int)eventValue; String eventComponentString = event.getComponent().toString(); if(ACTION_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.useActionButton(stateContext, getId()); } actionValue = intEventValue; } else if(BACK_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.useBackButton(stateContext, getId()); } backValue = intEventValue; } else if(WEAPON_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.useWeapon(stateContext, getId()); } weaponValue = intEventValue; } else if(PAUSE_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.pause(stateContext, getId()); } pauseValue = intEventValue; } else if(UP_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.moveUp(stateContext, getId()); } upValue = intEventValue; } else if(DOWN_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.moveDown(stateContext, getId()); } downValue = intEventValue; } else if(LEFT_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.moveLeft(stateContext, getId()); } leftValue = intEventValue; } else if(RIGHT_KEY.equals(eventComponentString)){ if (intEventValue == 1) { stateContext.moveRight(stateContext, getId()); } rightValue = intEventValue; } } @Override public int getId() { return id; } @Override public int getActionValue() { return actionValue; } @Override public int getBackValue() { return backValue; } @Override public int getWeaponValue() { return weaponValue; } @Override public int getPauseValue() { return pauseValue; } @Override public float getLeftRightValue() { if(rightValue == leftValue) return 0; return (rightValue > leftValue) ? rightValue : leftValue * -1; } @Override public float getUpDownValue() { if(upValue == downValue) return 0; return (upValue > downValue) ? upValue : downValue * -1; } @Override public float getForwardBackValue() { return getUpDownValue(); } @Override public float getJumpValue(){ return actionValue; } @Override public boolean equals(Object other) { if (other == null || !(other instanceof KeyboardController)){ return false; } KeyboardController otherController = (KeyboardController)other; return (otherController.getId() == this.getId()); } }