Added 3D element to lobby screen to show the player their boat before the race.

tags: #story[1245]
This commit is contained in:
alistairjmcintyre
2017-09-12 03:57:29 +12:00
parent 5dd936f8f1
commit 235d6c9cef
6 changed files with 122 additions and 36 deletions
@@ -2,14 +2,12 @@ package seng302.visualiser.controllers;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDialog;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.collections.ListChangeListener;
import javafx.fxml.FXML;
@@ -23,6 +21,7 @@ import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import seng302.gameServer.GameStages;
import seng302.gameServer.GameState;
import seng302.model.ClientYacht;
import seng302.model.Colors;
import seng302.model.Limit;
import seng302.model.RaceState;
@@ -30,7 +29,6 @@ import seng302.model.mark.CompoundMark;
import seng302.model.mark.Corner;
import seng302.model.stream.xml.parser.RaceXMLData;
import seng302.utilities.Sounds;
import seng302.utilities.XMLGenerator;
import seng302.visualiser.GameView;
import seng302.visualiser.controllers.cells.PlayerCell;
@@ -57,12 +55,15 @@ public class LobbyController implements Initializable {
private RaceState raceState;
private JFXDialog customizationDialog;
public Color playersColor;
private Map<Integer, ClientYacht> playerBoats;
private Double mapWidth, mapHeight;
private GameView gameView;
@Override
public void initialize(URL location, ResourceBundle resources) {
this.playerBoats = ViewManager.getInstance().getGameClient().getAllBoatsMap();
if (this.playersColor == null) {
this.playersColor = Colors.getColor(ViewManager.getInstance().getGameClient().getServerThread().getClientId() - 1);
}
@@ -121,6 +122,10 @@ public class LobbyController implements Initializable {
gameView.updateCourse(marks, corners);
}
private void getPlayerColors() {
}
/**
*
*/
@@ -162,23 +167,28 @@ public class LobbyController implements Initializable {
*/
private void refreshPlayerList() {
playerListVBox.getChildren().clear();
for (String player : ViewManager.getInstance().getPlayerList()) {
if (this.playerBoats == null || this.playerBoats.size() == 0) {
this.playerBoats = ViewManager.getInstance().getGameClient().getAllBoatsMap();
}
// TODO: 12/09/2017 ajm412: Make it so that it only removes players who's details have changed.
for (Integer playerId : playerBoats.keySet()) {
VBox pane = null;
FXMLLoader loader = new FXMLLoader(
getClass().getResource("/views/cells/PlayerCell.fxml"));
ClientYacht yacht = playerBoats.get(playerId);
loader.setController(new PlayerCell(player));
FXMLLoader loader = new FXMLLoader(
getClass().getResource("/views/cells/PlayerCell.fxml"));
loader.setController(new PlayerCell(playerId, yacht.getBoatName(), yacht.getColour()));
try {
pane = loader.load();
} catch (IOException e) {
// TODO replace with logger
e.printStackTrace();
}
playerListVBox.getChildren().add(pane);
}
}
@@ -207,6 +217,10 @@ public class LobbyController implements Initializable {
this.beginRaceButton.setText("Starting in: " + raceState.getRaceTimeStr());
}
public void setBoats(Map<Integer, ClientYacht> boats) {
this.playerBoats = boats;
}
public void closeCustomizationDialog() {
customizationDialog.close();
}