diff --git a/control/GameControl.java b/control/GameControl.java index 42bdbb4..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; @@ -28,18 +32,6 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList view.setIgnoreRepaint(true); 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 @@ -62,7 +54,10 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList @Override public void actionPerformed(ActionEvent e) { long currentTime = System.currentTimeMillis(); - model.update(currentTime - lastTime); + long time = currentTime - lastTime; + if(time > 1000/60) + time = 1000/60; + model.update(time); lastTime = currentTime; view.repaint(); } diff --git a/control/NetworkHandler.java b/control/NetworkHandler.java new file mode 100644 index 0000000..759173a --- /dev/null +++ b/control/NetworkHandler.java @@ -0,0 +1,175 @@ +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.Joystick.Position; +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(1112); + } catch (SocketException 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 receivePacket = new DatagramPacket(receive, receive.length); + try { + udp.receive(receivePacket); + } catch (IOException e) { + e.printStackTrace(); + } + String sentence = new String( receivePacket.getData()); + + if(sentence.length() != 21) + return; + + System.out.println("RECEIVED: " + sentence); + + String[] controls = sentence.split("\\|"); + int[] control = new int[controls.length]; + for(int i=0; i listeners; static List