diff --git a/src/main/java/seng302/gameServer/GameState.java b/src/main/java/seng302/gameServer/GameState.java index 64912ea4..0b495a8e 100644 --- a/src/main/java/seng302/gameServer/GameState.java +++ b/src/main/java/seng302/gameServer/GameState.java @@ -323,6 +323,7 @@ public class GameState implements Runnable { if (yacht.getPowerUp() != null) { if (System.currentTimeMillis() - yacht.getPowerUpStartTime() > POWERUP_TIMEOUT_MS) { yacht.powerDown(); + sendServerMessage(yacht.getSourceId(), yacht.getBoatName() + "'s power-up token expired"); logger.debug("Yacht: " + yacht.getShortName() + " powered down!"); } } @@ -433,6 +434,7 @@ public class GameState implements Runnable { //Token Collision Token collidedToken = checkTokenPickUp(serverYacht); if (collidedToken != null) { + sendServerMessage(serverYacht.getSourceId(), serverYacht.getBoatName() + " has picked speed-up token"); tokensInPlay.remove(collidedToken); serverYacht.powerUp(collidedToken.getTokenType()); logger.debug("Yacht: " + serverYacht.getShortName() + " got powerup " + collidedToken @@ -531,6 +533,9 @@ public class GameState implements Runnable { } if (hasProgressed) { + if (currentMarkSeqID != 0 && !markOrder.isLastMark(currentMarkSeqID)) { + sendServerMessage(yacht.getSourceId(), yacht.getBoatName() + " passed leg " + yacht.getLegNumber()); + } yacht.incrementLegNumber(); sendMarkRoundingMessage(yacht); logMarkRounding(yacht); @@ -565,6 +570,7 @@ public class GameState implements Runnable { if (crossedLine == 2 && isClockwiseCross || crossedLine == 1 && !isClockwiseCross) { yacht.setClosestCurrentMark(mark1); yacht.setBoatStatus(BoatStatus.RACING); + sendServerMessage(yacht.getSourceId(), yacht.getBoatName() + " passed start line"); return true; } } @@ -668,6 +674,7 @@ public class GameState implements Runnable { if (crossedLine == 1 && isClockwiseCross || crossedLine == 2 && !isClockwiseCross) { yacht.setClosestCurrentMark(mark1); yacht.setBoatStatus(BoatStatus.FINISHED); + sendServerMessage(yacht.getSourceId(), yacht.getBoatName() + " passed finish line"); return true; } } @@ -788,12 +795,7 @@ public class GameState implements Runnable { try { setSpeedMultiplier(Double.valueOf(words[3])); sendServerMessage(chatterMessage.getMessage_type(), - "SERVER: Speed modifier set to x" + words[3]); - System.out.println(chatterMessage.getMessage_type()); -// notifyMessageListeners(new ChatterMessage( -// chatterMessage.getMessage_type(), -// "SERVER: Speed modifier set to x" + words[3] -// )); + "Speed modifier set to x" + words[3]); } catch (Exception e) { Logger logger = LoggerFactory.getLogger(GameState.class); logger.error("cannot parse >speed value"); @@ -801,12 +803,7 @@ public class GameState implements Runnable { return; case "/finish": sendServerMessage(chatterMessage.getMessage_type(), - "SERVER: Game will now finish"); - System.out.println(chatterMessage.getMessage_type()); -// notifyMessageListeners(new ChatterMessage( -// chatterMessage.getMessage_type(), -// "SERVER: Game will now finish" -// )); + "Game will now finish"); endRace(); return; } diff --git a/src/test/java/steps/ToggleSailSteps.java b/src/test/java/steps/ToggleSailSteps.java index 347fe1d1..4bf20242 100644 --- a/src/test/java/steps/ToggleSailSteps.java +++ b/src/test/java/steps/ToggleSailSteps.java @@ -24,7 +24,17 @@ public class ToggleSailSteps { @Given("^The game is running$") public void the_game_is_running() throws Throwable { mst = new MainServerThread(); + try { + Thread.sleep(100); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } client = new ClientToServerThread("localhost", 4942); + try { + Thread.sleep(100); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } GameState.setCurrentStage(GameStages.RACING); Thread.sleep(200); // Sleep needed to help the threads all be up to speed with each other ServerYacht yacht = (new ArrayList<>(GameState.getYachts().values())).get(0); @@ -50,5 +60,6 @@ public class ToggleSailSteps { Assert.assertFalse(yacht.getSailIn()); } mst.terminate(); + client.setSocketToClose(); } }