From 86bd970fe185d799679564b35d40bacaebf8d011 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Thu, 11 Jun 2015 16:30:53 +0200 Subject: [PATCH] Changing to network --- control/GameControl.java | 18 ++----- control/NetworkHandler.java | 99 +++++++++++++++++++++++++++++++++++++ main/Window.java | 6 ++- 3 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 control/NetworkHandler.java diff --git a/control/GameControl.java b/control/GameControl.java index 1458380..2db34d4 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -2,6 +2,10 @@ package control; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.SocketException; +import java.net.UnknownHostException; import javax.swing.Timer; @@ -26,20 +30,8 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList this.view = view; this.gsm = gsm; view.setIgnoreRepaint(true); - update = new Timer(0,this); + update = new Timer(1000/60,this); update.start(); -// Timer update = new Timer(); -// update.schedule(new TimerTask() { -// -// @Override -// public void run() { -// long currentTime = System.currentTimeMillis(); -// model.update(currentTime - lastTime); -// lastTime = currentTime; -// view.repaint(); -// System.out.println("Test"); -// } -// }, 0,1000/120); } @Override diff --git a/control/NetworkHandler.java b/control/NetworkHandler.java new file mode 100644 index 0000000..0d043d3 --- /dev/null +++ b/control/NetworkHandler.java @@ -0,0 +1,99 @@ +package control; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.SocketException; +import java.net.UnknownHostException; + +import control.button.ButtonHandler; +import control.joystick.JoystickHandler; + +public class NetworkHandler implements Runnable{ + + DatagramSocket udp; + + String host; + int port; + + boolean running; + Thread t; + + byte[] send; + byte[] receive; + + ButtonHandler bth; + JoystickHandler jth; + + public NetworkHandler(String host, int port, ButtonHandler bth, JoystickHandler jth) + { + this.host = host; + this.port = port; + + this.bth = bth; + this.jth = jth; + + udp = null; + + send = new byte[1024]; + receive = new byte[1024]; + + try { + udp = new DatagramSocket(); + udp.connect(InetAddress.getByName(host), port); + } catch (SocketException | UnknownHostException e) { + e.printStackTrace(); + } + + running = true; + t = new Thread(this); + t.start(); + } + + public void setLed(int led, int r, int g , int b) + { + String cmd = "1|" + led + "|" + r + "|" + g + "|" + b + "\n"; + send(cmd); + } + + public void show(){ + String cmd = "0\n"; + send(cmd); + } + + private void send(String str) + { + send = str.getBytes(); + try { + udp.send(new DatagramPacket(send, send.length)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void close() + { + running = false; + udp.disconnect(); + udp.close(); + } + + @Override + public void run() { + + while(running) + { + DatagramPacket pckg = new DatagramPacket(receive, receive.length); + try { + udp.receive(pckg); + } catch (IOException e) { + e.printStackTrace(); + } + + String str = new String(pckg.getData()); + System.out.println(str); + } + + } +} diff --git a/main/Window.java b/main/Window.java index 5b7959f..0e87451 100644 --- a/main/Window.java +++ b/main/Window.java @@ -18,6 +18,7 @@ import view.GameView; import control.GameControl; import control.GameStateManager; import control.LedHandler; +import control.NetworkHandler; import control.button.ButtonHandler; import control.joystick.JoystickHandler; @@ -35,9 +36,8 @@ public class Window extends JFrame { setSize(WIDTH, HEIGHT); //Create Events - LedHandler led = null; Window.ON_RASP = ON_RASP; - + LedHandler led = null; if(ON_RASP){ //Only on the raspberry pi led = new LedHandler(); GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment(); @@ -57,6 +57,8 @@ public class Window extends JFrame { ButtonHandler bth = new ButtonHandler(led); JoystickHandler jsh = new JoystickHandler(); + NetworkHandler ntw = new NetworkHandler("192.168.1.6", 1113, bth, jsh); + //Create Instances final SongHandler sh = new SongHandler(); GameStateManager gsm = new GameStateManager(sh);