diff --git a/src/control/joystick/Joystick.java b/src/control/joystick/Joystick.java index e19ce74..8a92811 100644 --- a/src/control/joystick/Joystick.java +++ b/src/control/joystick/Joystick.java @@ -2,7 +2,31 @@ package control.joystick; public class Joystick { + public enum Position { + UP, + LEFT, + DOWN, + RIGHT, + UP_RIGHT, + DOWN_RIGHT, + UP_LEFT, + DOWN_LEFT, + CENTER + } + + private Position pos; + public Joystick() { + pos = Position.CENTER; } + + public void setPosition(Position pos) + { + this.pos = pos; + } + public Position getPos() { + return pos; + } + } diff --git a/src/control/joystick/JoystickHandler.java b/src/control/joystick/JoystickHandler.java index bd31916..9cb677f 100644 --- a/src/control/joystick/JoystickHandler.java +++ b/src/control/joystick/JoystickHandler.java @@ -3,46 +3,108 @@ package control.joystick; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; -import control.LedHandler; +import control.joystick.Joystick.Position; public class JoystickHandler implements KeyListener{ - + List listeners; - LedHandler led; + Set keys; + Joystick j; - public JoystickHandler(LedHandler led) + public JoystickHandler() { - this.led = led; listeners = new ArrayList(); + keys = new HashSet(); + j = new Joystick(); } - public void addJoyStickListener(JoystickListener toAdd) { - listeners.add(toAdd); + public void addJoystickListener(JoystickListener toAdd) { + listeners.add(toAdd); + } + + public void onJoystickMoved(Joystick j) { + JoystickEvent e = new JoystickEvent(j, System.currentTimeMillis()); + for (JoystickListener yst : listeners) + yst.onJoystickMoved(e); } - public void onJoyStickMoved() { - JoystickEvent e = new JoystickEvent(new Joystick(), 1000L); //TODO edit - for (JoystickListener yst : listeners) - yst.onJoyStickMoved(e); + private void updateJoystickPosition() + { + if(keys.contains(KeyEvent.VK_UP) && keys.contains(KeyEvent.VK_RIGHT)) + { + j.setPosition(Position.UP_RIGHT); + } + else if(keys.contains(KeyEvent.VK_UP) && keys.contains(KeyEvent.VK_LEFT)) + { + j.setPosition(Position.UP_LEFT); + } + else if(keys.contains(KeyEvent.VK_DOWN) && keys.contains(KeyEvent.VK_RIGHT)) + { + j.setPosition(Position.DOWN_RIGHT); + } + else if(keys.contains(KeyEvent.VK_DOWN) && keys.contains(KeyEvent.VK_LEFT)) + { + j.setPosition(Position.DOWN_LEFT); + } + + else if(keys.contains(KeyEvent.VK_UP)) + { + j.setPosition(Position.UP); + } + else if(keys.contains(KeyEvent.VK_LEFT)) + { + j.setPosition(Position.LEFT); + } + else if(keys.contains(KeyEvent.VK_RIGHT)) + { + j.setPosition(Position.RIGHT); + } + else if(keys.contains(KeyEvent.VK_DOWN)) + { + j.setPosition(Position.DOWN); + } + + else + { + j.setPosition(Position.CENTER); + } } @Override public void keyPressed(KeyEvent e) { - // TODO Auto-generated method stub - + if(e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_RIGHT) + { + Set keysCopy = new HashSet(keys); + + keys.add(e.getKeyCode()); + updateJoystickPosition(); + + if(!keys.equals(keysCopy)) + { + onJoystickMoved(j); + } + } } @Override public void keyReleased(KeyEvent e) { - // TODO Auto-generated method stub - + if(e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_RIGHT) + { + Set keysCopy = new HashSet(keys); + + keys.remove(e.getKeyCode()); + updateJoystickPosition(); + + if(!keys.equals(keysCopy)) + { + onJoystickMoved(j); + } + } } - @Override - public void keyTyped(KeyEvent e) { - // TODO Auto-generated method stub - - } -} \ No newline at end of file + public void keyTyped(KeyEvent e) {} +} \ No newline at end of file diff --git a/src/control/joystick/JoystickListener.java b/src/control/joystick/JoystickListener.java index 0cb07ac..01c9e74 100644 --- a/src/control/joystick/JoystickListener.java +++ b/src/control/joystick/JoystickListener.java @@ -1,5 +1,5 @@ package control.joystick; public interface JoystickListener { - public void onJoyStickMoved(JoystickEvent e); + public void onJoystickMoved(JoystickEvent e); }