diff --git a/matchBrowser/pom.xml b/matchBrowser/pom.xml index fb8cabe9..91581a28 100644 --- a/matchBrowser/pom.xml +++ b/matchBrowser/pom.xml @@ -36,6 +36,13 @@ 6.11 test + + + seng302 + racevisionGame + 2.0 + + diff --git a/matchBrowser/src/main/java/app/Main.java b/matchBrowser/src/main/java/app/Main.java index e189c052..0d858d6f 100644 --- a/matchBrowser/src/main/java/app/Main.java +++ b/matchBrowser/src/main/java/app/Main.java @@ -1,7 +1,12 @@ package app; +import networkInterface.NetworkInterface; + /** * Used when starting the matchmaking browser */ public class Main { + public static void main(String[] args) { + NetworkInterface networkInterface = new NetworkInterface(); + } } diff --git a/matchBrowser/src/main/java/networkInterface/InInterface.java b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java similarity index 60% rename from matchBrowser/src/main/java/networkInterface/InInterface.java rename to matchBrowser/src/main/java/networkInterface/NetworkInterface.java index 5d729e08..e6bd69c1 100644 --- a/matchBrowser/src/main/java/networkInterface/InInterface.java +++ b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java @@ -1,17 +1,23 @@ package networkInterface; -import java.io.*; -import java.net.*; +import network.Exceptions.InvalidMessageException; +import network.MessageDecoders.HostedGamesRequestDecoder; +import network.Messages.HostGamesRequest; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; /** * Holds the output for the network for */ -public class InInterface { +public class NetworkInterface { private DatagramSocket serverSocket; private byte[] receiveData = new byte[1024]; private byte[] sendData = new byte[1024]; - public InInterface(){ + public NetworkInterface(){ try { this.serverSocket = new DatagramSocket(3779); @@ -29,6 +35,14 @@ public class InInterface { serverSocket.receive(receivePacket); //decode and update table + HostedGamesRequestDecoder decoder = new HostedGamesRequestDecoder(); + HostGamesRequest newKnownGames; + try{ + newKnownGames = (HostGamesRequest) decoder.decode(receivePacket.getData()); + System.out.println(newKnownGames.getKnownGames().get(0)); + }catch (InvalidMessageException e){ + System.err.println("Message received that is not a hostedGamesRequest packet"); + } //client ip and port InetAddress IPAddress = receivePacket.getAddress(); @@ -36,6 +50,7 @@ public class InInterface { + // String capitalizedSentence = sentence.toUpperCase(); // sendData = capitalizedSentence.getBytes(); // DatagramPacket sendPacket = diff --git a/matchBrowser/src/main/java/networkInterface/OutInterface.java b/matchBrowser/src/main/java/networkInterface/OutInterface.java deleted file mode 100644 index 18746004..00000000 --- a/matchBrowser/src/main/java/networkInterface/OutInterface.java +++ /dev/null @@ -1,7 +0,0 @@ -package networkInterface; - -/** - * Holds the connection to the network for output - */ -public class OutInterface { -} diff --git a/racevisionGame/src/main/java/network/MessageEncoders/HostGameMessageEncoder.java b/racevisionGame/src/main/java/network/MessageEncoders/HostGameMessageEncoder.java index 0a5c9a08..8fbe30d2 100644 --- a/racevisionGame/src/main/java/network/MessageEncoders/HostGameMessageEncoder.java +++ b/racevisionGame/src/main/java/network/MessageEncoders/HostGameMessageEncoder.java @@ -5,8 +5,6 @@ import network.Messages.AC35Data; import network.Messages.HostGame; import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.List; import static network.Utils.ByteConverter.intToBytes; @@ -25,7 +23,7 @@ public class HostGameMessageEncoder implements MessageEncoder{ //Downcast HostGame hostGame = (HostGame) message; - ByteBuffer hostGameMessage = ByteBuffer.allocate(14); + ByteBuffer hostGameMessage = ByteBuffer.allocate(13); ByteBuffer ipBytes = ByteBuffer.allocate(4); String ip = hostGame.getIp(); diff --git a/racevisionGame/src/main/java/network/MessageEncoders/HostedGamesRequestEncoder.java b/racevisionGame/src/main/java/network/MessageEncoders/HostedGamesRequestEncoder.java index 4b4b52d1..80942a31 100644 --- a/racevisionGame/src/main/java/network/MessageEncoders/HostedGamesRequestEncoder.java +++ b/racevisionGame/src/main/java/network/MessageEncoders/HostedGamesRequestEncoder.java @@ -6,7 +6,6 @@ import network.Messages.HostGame; import network.Messages.HostGamesRequest; import java.nio.ByteBuffer; -import java.util.List; import static network.Utils.ByteConverter.intToBytes; @@ -26,7 +25,7 @@ public class HostedGamesRequestEncoder implements MessageEncoder{ int numGames = hostGamesRequest.getKnownGames().size(); - ByteBuffer hostedGamesRequestMessage = ByteBuffer.allocate(4+14*numGames); + ByteBuffer hostedGamesRequestMessage = ByteBuffer.allocate(4+13*numGames); hostedGamesRequestMessage.put(intToBytes(numGames)); diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java new file mode 100644 index 00000000..f5d806ed --- /dev/null +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java @@ -0,0 +1,33 @@ +package visualiser.network; + +import network.BinaryMessageEncoder; +import network.Exceptions.InvalidMessageException; +import network.MessageEncoders.HostGameMessageEncoder; +import network.Messages.AC35Data; +import network.Messages.Enums.MessageType; + +import java.net.DatagramSocket; + +/** + * UDP interface for the matchBrowser to send out hosted game info and get in other hosts info + */ +public class MatchBrowserInterface { + DatagramSocket clientSocket; + + public void sendOutGameInfo(AC35Data gameInfo){ + byte[] fullMessageToSend; + try{ + HostGameMessageEncoder encoder = new HostGameMessageEncoder(); + byte[] message = encoder.encode(gameInfo); + BinaryMessageEncoder messageEncoder = new BinaryMessageEncoder(MessageType.HOST_GAME + ,System.currentTimeMillis(), 1,(short) 14 ,message); + fullMessageToSend = messageEncoder.getFullMessage(); + }catch (InvalidMessageException e){ + System.err.println("HostGameMessage could not be encoded"); + } + + + + + } +}