diff options
Diffstat (limited to 'src/tesseract/objects/remote/RemoteObjectMenu.java')
-rw-r--r-- | src/tesseract/objects/remote/RemoteObjectMenu.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/tesseract/objects/remote/RemoteObjectMenu.java b/src/tesseract/objects/remote/RemoteObjectMenu.java index bb076d1..610c433 100644 --- a/src/tesseract/objects/remote/RemoteObjectMenu.java +++ b/src/tesseract/objects/remote/RemoteObjectMenu.java @@ -3,6 +3,10 @@ package tesseract.objects.remote; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.net.UnknownHostException; import java.util.ArrayList; import javax.swing.JCheckBoxMenuItem; @@ -21,12 +25,25 @@ public class RemoteObjectMenu extends JMenu { private World myWorld; + private RemoteObjectCommunicator myCommunicator; + + private SocketAddress myHome; + public RemoteObjectMenu(final World theWorld) { super("RC Objects"); // Added by Steve: Fixes viewing menu problem with Canvas3D on both my windows machines JPopupMenu.setDefaultLightWeightPopupEnabled(false); myWorld = theWorld; myControlledObjects = new ArrayList<RemoteObject>(); + myCommunicator = new RemoteObjectCommunicator(); + new Thread(myCommunicator).start(); + + try { + myHome = new InetSocketAddress(InetAddress.getLocalHost(), myCommunicator.getPort()); + + } catch (UnknownHostException e) { + System.err.println(e); + } // Objects that can be added add(new TankMenuItem(this)); @@ -56,13 +73,18 @@ public class RemoteObjectMenu extends JMenu { myWorld.addObject(theObject); myControlledObjects.add(theObject); + theObject.setHome(myHome); item.setSelected(true); add(item); } public void sendKeyToObjects(final KeyEvent e) { for (RemoteObject o : myControlledObjects) { - o.sendKeyEvent(e); + if (!myCommunicator.sendKeyToObject(o.getId(), e)) { + System.out.println("Send failed to " + o.getId()); + //myControlledObjects.remove(o); + // TODO : Remove from menu. + } } } } |