Pre-race countdown implementation.

main
David Wu 8 years ago
parent c750b806e0
commit 89ce8a7cc0

@ -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;
/**

@ -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;
}
}
}

@ -94,5 +94,14 @@
<RowConstraints maxHeight="80.0" minHeight="80.0" prefHeight="80.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
<AnchorPane fx:id="countdownTenPane" prefHeight="200.0" prefWidth="200.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Label fx:id="countdownTenText" alignment="CENTER" text="COUNTDOWN" textFill="#ee0000" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<font>
<Font name="System Bold" size="41.0" />
</font>
</Label>
</children>
</AnchorPane>
</children>
</AnchorPane>

Loading…
Cancel
Save