diff --git a/racevisionGame/src/main/java/shared/model/Constants.java b/racevisionGame/src/main/java/shared/model/Constants.java index 7a5e2820..b7b5243b 100644 --- a/racevisionGame/src/main/java/shared/model/Constants.java +++ b/racevisionGame/src/main/java/shared/model/Constants.java @@ -39,7 +39,7 @@ public class Constants { * The race pre-start time, in milliseconds. 3 minutes (30 seconds for development). */ // public static final long RacePreStartTime = 30 * 1000; - public static final long RacePreStartTime = 1000; + public static final long RacePreStartTime = 5000; /** diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index a6442664..8a6dd8d6 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -30,6 +30,7 @@ import visualiser.model.VisualiserRaceState; import java.io.IOException; import java.net.Socket; import java.net.URL; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; @@ -69,6 +70,12 @@ public class InGameLobbyController extends Controller { @FXML private Label countdownLabel; + @FXML + private AnchorPane countdownTenPane; + + @FXML + private Label countdownTenText; + private Event game; private View3D playerBoat; @@ -197,7 +204,6 @@ public class InGameLobbyController extends Controller { private void initialiseRaceClock(VisualiserRaceState visualiserRace) { //Remaining time. initialiseRaceClockDuration(visualiserRace); - } @@ -225,6 +231,18 @@ public class InGameLobbyController extends Controller { //Get the current race status. RaceStatusEnum raceStatus = visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum(); + try { + long interval = ChronoUnit.MILLIS.between(visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getCurrentTime(), visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getStartingTime()); + if(interval<=10000){ + countdownLabel.setVisible(false); + countdownTenPane.setVisible(true); + countdownTenText.setVisible(true); + } + countdownText(interval); + } catch (Exception e){ + + } + //If the race has reached the preparatory phase, or has started... if (raceStatus == RaceStatusEnum.PREPARATORY || raceStatus == RaceStatusEnum.STARTED) { @@ -234,6 +252,8 @@ public class InGameLobbyController extends Controller { //Hide this, and display the race controller. gameLobbyWrapper.setVisible(false); visualiserRaceEvent.getVisualiserRaceState().getBoats().removeListener(lobbyUpdateListener); + countdownTenPane.setVisible(false); + countdownLabel.setVisible(true); parent.beginRace(visualiserRaceEvent, controllerClient, isHost); } @@ -294,4 +314,33 @@ public class InGameLobbyController extends Controller { System.out.println("Empty race user pane pressed. Joining racers"); } + private void countdownText(long interval){ + + if (interval <=5000){ + countdownTenText.setText("5"); + return; + } + if (interval <=6000){ + countdownTenText.setText("6"); + return; + } + if (interval <=7000){ + countdownTenText.setText("7"); + return; + } + if (interval <=8000){ + countdownTenText.setText("8"); + return; + } + if (interval <=9000){ + countdownTenText.setText("9"); + return; + } + if (interval <=10000){ + countdownTenText.setText("10"); + return; + } + + } + } diff --git a/racevisionGame/src/main/resources/visualiser/scenes/gameLobby.fxml b/racevisionGame/src/main/resources/visualiser/scenes/gameLobby.fxml index 6ef70c28..84ff0c34 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/gameLobby.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/gameLobby.fxml @@ -94,5 +94,14 @@ + + + + +