From 035578400092fba745d5318f12e4e2d060f7cd5d Mon Sep 17 00:00:00 2001 From: Haoming Yin Date: Thu, 14 Sep 2017 15:40:12 +1200 Subject: [PATCH 1/2] Broadcast messages when boats pass legs or a token is picked up or expired. tags: #story[1250] #pair[hyi25, zyt10] --- .../java/seng302/gameServer/GameState.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) 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; } From 73799954e4ae17ec6d4112181403dabfcfabac2d Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Fri, 15 Sep 2017 12:47:40 +1200 Subject: [PATCH 2/2] Fixed tests that failed when running on lower end computers. Needed to add a couple of thread.sleeps --- src/test/java/steps/ToggleSailSteps.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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(); } }