From 76a750a764ae310f0cc8a3319770174b997246b3 Mon Sep 17 00:00:00 2001 From: William Muir Date: Wed, 16 Aug 2017 11:53:29 +1200 Subject: [PATCH] Moved sendRaceStatus Message out of S2C Thread into MS Thread (minor refactor) --- .../java/seng302/gameServer/GameState.java | 2 +- .../seng302/gameServer/MainServerThread.java | 36 ++++++++++++++++--- .../gameServer/ServerToClientThread.java | 25 ------------- .../java/seng302/visualiser/GameClient.java | 1 + .../server_config/xml_templates/race.ftlh | 8 ----- 5 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/main/java/seng302/gameServer/GameState.java b/src/main/java/seng302/gameServer/GameState.java index fc29f446..e8d858a4 100644 --- a/src/main/java/seng302/gameServer/GameState.java +++ b/src/main/java/seng302/gameServer/GameState.java @@ -283,7 +283,7 @@ public class GameState implements Runnable { Double velocity = yacht.getCurrentVelocity(); Double trueWindAngle = Math.abs(windDirection - yacht.getHeading()); Double boatSpeedInKnots = PolarTable.getBoatSpeed(getWindSpeedKnots(), trueWindAngle); - Double maxBoatSpeed = GeoUtility.knotsToMMS(boatSpeedInKnots); + Double maxBoatSpeed = GeoUtility.knotsToMMS(boatSpeedInKnots) * 3; // TODO: 15/08/17 remove magic numbers from these equations. if (yacht.getSailIn()) { if (velocity < maxBoatSpeed - 500) { diff --git a/src/main/java/seng302/gameServer/MainServerThread.java b/src/main/java/seng302/gameServer/MainServerThread.java index 691ccda3..8965839d 100644 --- a/src/main/java/seng302/gameServer/MainServerThread.java +++ b/src/main/java/seng302/gameServer/MainServerThread.java @@ -4,9 +4,14 @@ import java.io.IOException; import java.net.ServerSocket; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.List; import java.util.Timer; import java.util.TimerTask; +import seng302.gameServer.server.messages.BoatSubMessage; import seng302.gameServer.server.messages.Message; +import seng302.gameServer.server.messages.RaceStatus; +import seng302.gameServer.server.messages.RaceStatusMessage; +import seng302.gameServer.server.messages.RaceType; import seng302.model.GeoPoint; import seng302.model.Player; import seng302.model.PolarTable; @@ -159,14 +164,37 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { t.schedule(new TimerTask() { @Override public void run() { - - for (ServerToClientThread serverToClientThread : serverToClientThreads) { - serverToClientThread.sendRaceStatusMessage(); - } + broadcastMessage(makeRaceStatusMessage()); } }, 0, 500); } + private RaceStatusMessage makeRaceStatusMessage() { + // variables taken from GameServerThread + + List boatSubMessages = new ArrayList<>(); + RaceStatus raceStatus; + + for (Player player : GameState.getPlayers()) { + ServerYacht y = player.getYacht(); + BoatSubMessage m = new BoatSubMessage(y.getSourceId(), y.getBoatStatus(), 0, + 0, 0, 1234L, + 1234L); + boatSubMessages.add(m); + } + + if (GameState.getCurrentStage() == GameStages.RACING) { + raceStatus = RaceStatus.STARTED; + } else { + raceStatus = RaceStatus.WARNING; + } + + return new RaceStatusMessage(1, raceStatus, GameState.getStartTime(), + GameState.getWindDirection(), + GameState.getWindSpeedMMS().longValue(), GameState.getPlayers().size(), + RaceType.MATCH_RACE, 1, boatSubMessages); + } + public void terminate() { terminated = true; } diff --git a/src/main/java/seng302/gameServer/ServerToClientThread.java b/src/main/java/seng302/gameServer/ServerToClientThread.java index bbe7053c..c8a1e3b5 100644 --- a/src/main/java/seng302/gameServer/ServerToClientThread.java +++ b/src/main/java/seng302/gameServer/ServerToClientThread.java @@ -318,31 +318,6 @@ public class ServerToClientThread implements Runnable, Observer { return thread; } - public void sendRaceStatusMessage() { - // variables taken from GameServerThread - - List boatSubMessages = new ArrayList<>(); - RaceStatus raceStatus; - - for (Player player : GameState.getPlayers()) { - ServerYacht y = player.getYacht(); - BoatSubMessage m = new BoatSubMessage(y.getSourceId(), y.getBoatStatus(), 0, - 0, 0, 1234L, - 1234L); - boatSubMessages.add(m); - } - - if (GameState.getCurrentStage() == GameStages.RACING) { - raceStatus = RaceStatus.STARTED; - } else { - raceStatus = RaceStatus.WARNING; - } - - sendMessage(new RaceStatusMessage(1, raceStatus, GameState.getStartTime(), GameState.getWindDirection(), - GameState.getWindSpeedMMS().longValue(), GameState.getPlayers().size(), - RaceType.MATCH_RACE, 1, boatSubMessages)); - } - public Socket getSocket() { return socket; } diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index bd702a47..8acf2c46 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -290,6 +290,7 @@ public class GameClient { } } if (raceFinished == true) { + close(); loadFinishScreenView(); } diff --git a/src/main/resources/server_config/xml_templates/race.ftlh b/src/main/resources/server_config/xml_templates/race.ftlh index e38bf0b7..08d148e2 100644 --- a/src/main/resources/server_config/xml_templates/race.ftlh +++ b/src/main/resources/server_config/xml_templates/race.ftlh @@ -35,14 +35,6 @@ - - - - - - - -