diff --git a/src/main/java/seng302/client/ClientPacketParser.java b/src/main/java/seng302/client/ClientPacketParser.java index 06b22818..4f36e9ea 100644 --- a/src/main/java/seng302/client/ClientPacketParser.java +++ b/src/main/java/seng302/client/ClientPacketParser.java @@ -119,7 +119,6 @@ public class ClientPacketParser { */ private static void extractHeartBeat(StreamPacket packet) { long heartbeat = bytesToLong(packet.getPayload()); - System.out.println("[CLIENT] Received heartbeat = " + heartbeat); } private static String getTimeZoneString() { diff --git a/src/main/java/seng302/client/ClientToServerThread.java b/src/main/java/seng302/client/ClientToServerThread.java index 649ef2de..ba5caf37 100644 --- a/src/main/java/seng302/client/ClientToServerThread.java +++ b/src/main/java/seng302/client/ClientToServerThread.java @@ -6,6 +6,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; +import java.time.LocalDateTime; import java.util.zip.CRC32; import java.util.zip.Checksum; @@ -42,7 +43,7 @@ public class ClientToServerThread implements Runnable { clientLog("Successful handshake. Allocated ID: " + ourID, 1); ClientState.setClientSourceId(String.valueOf(ourID)); } else { - clientLog("Unsuccessful handhsake", 1); + clientLog("Unsuccessful handshake", 1); closeSocket(); return; } @@ -54,7 +55,7 @@ public class ClientToServerThread implements Runnable { static void clientLog(String message, int logLevel){ if(logLevel <= LOG_LEVEL){ - System.out.println("[CLIENT] " + message); + System.out.println("[CLIENT " + LocalDateTime.now().toLocalTime().toString() + "] " + message); } } @@ -105,7 +106,7 @@ public class ClientToServerThread implements Runnable { } } closeSocket(); - System.out.println("[CLIENT] Disconnected from server"); + clientLog("Disconnected from server", 0); } diff --git a/src/main/java/seng302/controllers/Controller.java b/src/main/java/seng302/controllers/Controller.java index 5ca31ee7..550f6f81 100644 --- a/src/main/java/seng302/controllers/Controller.java +++ b/src/main/java/seng302/controllers/Controller.java @@ -19,6 +19,8 @@ public class Controller implements Initializable { @FXML private AnchorPane contentPane; private ClientToServerThread clientToServerThread; + private long lastSendingTime; + private int KEY_STROKE_SENDING_FREQUENCY = 50; private Object setContentPane(String jfxUrl) { try { @@ -43,35 +45,41 @@ public class Controller implements Initializable { StartScreenController startScreenController = (StartScreenController) setContentPane("/views/StartScreenView.fxml"); startScreenController.setController(this); ClientPacketParser.boatLocations.clear(); + + lastSendingTime = System.currentTimeMillis(); } /** Handle the key-pressed event from the text field. */ public void keyPressed(KeyEvent e) { BoatActionMessage boatActionMessage; - switch (e.getCode()){ - case SPACE: // align with vmg - boatActionMessage = new BoatActionMessage(BoatActionType.VMG); - clientToServerThread.sendBoatActionMessage(boatActionMessage); - break; - case PAGE_UP: // upwind - boatActionMessage = new BoatActionMessage(BoatActionType.UPWIND); - clientToServerThread.sendBoatActionMessage(boatActionMessage); - break; - case PAGE_DOWN: // downwind - boatActionMessage = new BoatActionMessage(BoatActionType.DOWNWIND); - clientToServerThread.sendBoatActionMessage(boatActionMessage); - break; - case ENTER: // tack/gybe - boatActionMessage = new BoatActionMessage(BoatActionType.TACK_GYBE); - clientToServerThread.sendBoatActionMessage(boatActionMessage); - break; - //TODO Allow a zoom in and zoom out methods - case Z: // zoom in - System.out.println("Zoom in"); - break; - case X: // zoom out - System.out.println("Zoom out"); - break; + long currentTime = System.currentTimeMillis(); + if (currentTime - lastSendingTime > KEY_STROKE_SENDING_FREQUENCY) { + lastSendingTime = currentTime; + switch (e.getCode()) { + case SPACE: // align with vmg + boatActionMessage = new BoatActionMessage(BoatActionType.VMG); + clientToServerThread.sendBoatActionMessage(boatActionMessage); + break; + case PAGE_UP: // upwind + boatActionMessage = new BoatActionMessage(BoatActionType.UPWIND); + clientToServerThread.sendBoatActionMessage(boatActionMessage); + break; + case PAGE_DOWN: // downwind + boatActionMessage = new BoatActionMessage(BoatActionType.DOWNWIND); + clientToServerThread.sendBoatActionMessage(boatActionMessage); + break; + case ENTER: // tack/gybe + boatActionMessage = new BoatActionMessage(BoatActionType.TACK_GYBE); + clientToServerThread.sendBoatActionMessage(boatActionMessage); + break; + //TODO Allow a zoom in and zoom out methods + case Z: // zoom in + System.out.println("Zoom in"); + break; + case X: // zoom out + System.out.println("Zoom out"); + break; + } } } diff --git a/src/main/java/seng302/gameServer/MainServerThread.java b/src/main/java/seng302/gameServer/MainServerThread.java index 793cc6f0..1d90fbaf 100644 --- a/src/main/java/seng302/gameServer/MainServerThread.java +++ b/src/main/java/seng302/gameServer/MainServerThread.java @@ -1,5 +1,6 @@ package seng302.gameServer; +import java.time.LocalDateTime; import java.util.Observable; import seng302.client.ClientPacketParser; import seng302.models.Player; @@ -108,7 +109,7 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff static void serverLog(String message, int logLevel){ if(logLevel <= LOG_LEVEL){ - System.out.println("[SERVER] " + message); + System.out.println("[SERVER " + LocalDateTime.now().toLocalTime().toString() + "] " + message); } } diff --git a/src/main/java/seng302/gameServer/ServerToClientThread.java b/src/main/java/seng302/gameServer/ServerToClientThread.java index b547c439..0ca77b45 100644 --- a/src/main/java/seng302/gameServer/ServerToClientThread.java +++ b/src/main/java/seng302/gameServer/ServerToClientThread.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; +import java.net.SocketException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Observable; @@ -97,7 +99,7 @@ public class ServerToClientThread implements Runnable, Observer { static void serverLog(String message, int logLevel){ if(logLevel <= LOG_LEVEL){ - System.out.println("[SERVER] " + message); + System.out.println("[SERVER " + LocalDateTime.now().toLocalTime().toString() + "] " + message); } } @@ -234,8 +236,8 @@ public class ServerToClientThread implements Runnable, Observer { } } catch (Exception e) { // TODO: 24/07/17 zyt10 - fix a logic here when a client disconnected - serverLog("ERROR OCCURRED, CLOSING SERVER CONNECTION: " + socket.getRemoteSocketAddress().toString(), 1); - e.printStackTrace(); +// serverLog("ERROR OCCURRED, CLOSING SERVER CONNECTION: " + socket.getRemoteSocketAddress().toString(), 1); +// e.printStackTrace(); closeSocket(); return; } @@ -346,6 +348,8 @@ public class ServerToClientThread implements Runnable, Observer { public void sendMessage(Message message){ try { os.write(message.getBuffer()); + } catch (SocketException e) { + serverLog("Player " + sourceId + " " + e.getMessage(), 0); } catch (IOException e) { e.printStackTrace(); }