diff --git a/src/control/GameControl.java b/src/control/GameControl.java new file mode 100644 index 0000000..1c5b7ae --- /dev/null +++ b/src/control/GameControl.java @@ -0,0 +1,37 @@ +package control; + +import model.GameModel; +import view.GameView; +import control.button.ButtonEvent; +import control.button.ButtonListener; +import control.joystick.JoystickEvent; +import control.joystick.JoystickListener; + +public class GameControl implements JoystickListener, ButtonListener{ + + GameModel model; + GameView view; + + public GameControl(GameModel model, GameView view) + { + this.model = model; + this.view = view; + } + + @Override + public void buttonPressed(ButtonEvent e) { + view.setColor(e.getButton().getColor()); + } + + @Override + public void buttonReleased(ButtonEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void onJoyStickMoved(JoystickEvent e) { + // TODO Auto-generated method stub + + } +} diff --git a/src/control/LedHandler.java b/src/control/LedHandler.java new file mode 100644 index 0000000..650a23d --- /dev/null +++ b/src/control/LedHandler.java @@ -0,0 +1,100 @@ +package control; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; + +public class LedHandler { + private BufferedReader inp; + private BufferedWriter out; + private Process p; + + public LedHandler(){ + try { + p = Runtime.getRuntime().exec("sudo python led.py"); + inp = new BufferedReader( new InputStreamReader(p.getInputStream()) ); + out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) ); + + //setLed(15, 100, 100, 100); + //strobo(); + } + catch (Exception err) { + err.printStackTrace(); + } + } + + public void close(){ + try { + inp.close(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + p.destroy(); + } + + + /** + * Set the color of a specific led + * @param Pixel number of the led + * @param Red value + * @param Green value + * @param Blue value + * Remember: Button leds are GRB, normal ledstrip is RGB + */ + public void setLed(int led, int r, int g, int b) { + if(led==-1) + { + return; + } + try { + System.out.println("Set the led with " + r); + out.write( "1|" + led + "|" + r + "|" + g + "|" + b + "\n" ); + out.flush(); + } + catch (Exception err) { + err.printStackTrace(); + } + } + + /** + * Shows the (new) colors + */ + public void show(){ + try { + out.write( "0\n" ); + out.flush(); + } + catch (Exception err) { + err.printStackTrace(); + } + } + + public void strobo(){ + boolean on = true; + while(true){ + if(on){ + for(int i = 1; i < 66; i++){ + setLed(i, 0, 0, 0); + } + }else{ + for(int i = 1; i < 66; i++){ + setLed(i, 255, 255, 255); + } + } + on = !on; + show(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/control/button/Button.java b/src/control/button/Button.java new file mode 100644 index 0000000..29e6116 --- /dev/null +++ b/src/control/button/Button.java @@ -0,0 +1,44 @@ +package control.button; + +import java.awt.Color; + +import control.LedHandler; + +public class Button { + + Color color; + int ledID; + int buttonID; + LedHandler led; + + public Button(int buttonID, int ledID, LedHandler led) + { + color = new Color(255,255,255); + this.ledID = ledID; + this.buttonID = buttonID; + this.led = led; + setLed(); + } + + private void setLed() + { + led.setLed(ledID, color.getGreen(), color.getRed(), color.getBlue()); + led.show(); + } + + public void setColor(Color newColor) + { + color = newColor; + setLed(); + } + + public Color getColor(){ + return color; + } + public int getButtonID() + { + return buttonID; + } + + +} diff --git a/src/control/button/ButtonEvent.java b/src/control/button/ButtonEvent.java new file mode 100644 index 0000000..1477528 --- /dev/null +++ b/src/control/button/ButtonEvent.java @@ -0,0 +1,19 @@ +package control.button; + +public class ButtonEvent { + private Button button; + private Long now; + + public ButtonEvent(Button button, Long now){ + this.button = button; + this.now = now; + } + + public Button getButton() { + return button; + } + + public Long getNow() { + return now; + } +} diff --git a/src/control/button/ButtonHandler.java b/src/control/button/ButtonHandler.java new file mode 100644 index 0000000..317b3bc --- /dev/null +++ b/src/control/button/ButtonHandler.java @@ -0,0 +1,84 @@ +package control.button; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.util.ArrayList; +import java.util.List; + +import control.LedHandler; + +public class ButtonHandler implements KeyListener{ + + List listeners; + static List