diff --git a/gui/src/controller/Controller.java b/gui/src/controller/Controller.java index 9fdf2ccfb4939d07b1a82013b8e7e249515be48f..32f454277026fdac91ba8b7542c99dbe6990915e 100644 --- a/gui/src/controller/Controller.java +++ b/gui/src/controller/Controller.java @@ -37,6 +37,8 @@ public class Controller implements Initializable @FXML private Polygon tile0, tile1, tile2, tile3, tile4, tile5, tile6, tile7, tile8, tile9, tile10, tile11, tile12, tile13, tile14, tile15, tile16, tile17, tile18, tile19, tile20, tile21, tile22, tile23, tile24, tile25, tile26, tile27, tile28, tile29, tile30, tile31, tile32, tile33, tile34, tile35, tile36, tile37, tile38, tile39, tile40, tile41, tile42, tile43, tile44, tile45, tile46, tile47, tile48, tile49, tile50, tile51, tile52, tile53, tile54, tile55, tile56, tile57, tile58, tile59; + @FXML + private Label nbFish0, nbFish1, nbFish2, nbFish3, nbFish4, nbFish5, nbFish6, nbFish7, nbFish8, nbFish9, nbFish10, nbFish11, nbFish12, nbFish13, nbFish14, nbFish15, nbFish16, nbFish17, nbFish18, nbFish19, nbFish20, nbFish21, nbFish22, nbFish23, nbFish24, nbFish25, nbFish26, nbFish27, nbFish28, nbFish29, nbFish30, nbFish31, nbFish32, nbFish33, nbFish34, nbFish35, nbFish36, nbFish37, nbFish38, nbFish39, nbFish40, nbFish41, nbFish42, nbFish43, nbFish44, nbFish45, nbFish46, nbFish47, nbFish48, nbFish49, nbFish50, nbFish51, nbFish52, nbFish53, nbFish54, nbFish55, nbFish56, nbFish57, nbFish58, nbFish59; @FXML private BorderPane mainPane; @@ -48,13 +50,16 @@ public class Controller implements Initializable public void initialize(URL location, ResourceBundle resources) { Polygon[] fxTiles = {tile0, tile1, tile2, tile3, tile4, tile5, tile6, tile7, tile8, tile9, tile10, tile11, tile12, tile13, tile14, tile15, tile16, tile17, tile18, tile19, tile20, tile21, tile22, tile23, tile24, tile25, tile26, tile27, tile28, tile29, tile30, tile31, tile32, tile33, tile34, tile35, tile36, tile37, tile38, tile39, tile40, tile41, tile42, tile43, tile44, tile45, tile46, tile47, tile48, tile49, tile50, tile51, tile52, tile53, tile54, tile55, tile56, tile57, tile58, tile59}; + Label[] labels = {nbFish0, nbFish1, nbFish2, nbFish3, nbFish4, nbFish5, nbFish6, nbFish7, nbFish8, nbFish9, nbFish10, nbFish11, nbFish12, nbFish13, nbFish14, nbFish15, nbFish16, nbFish17, nbFish18, nbFish19, nbFish20, nbFish21, nbFish22, nbFish23, nbFish24, nbFish25, nbFish26, nbFish27, nbFish28, nbFish29, nbFish30, nbFish31, nbFish32, nbFish33, nbFish34, nbFish35, nbFish36, nbFish37, nbFish38, nbFish39, nbFish40, nbFish41, nbFish42, nbFish43, nbFish44, nbFish45, nbFish46, nbFish47, nbFish48, nbFish49, nbFish50, nbFish51, nbFish52, nbFish53, nbFish54, nbFish55, nbFish56, nbFish57, nbFish58, nbFish59}; this.board = new Tile[fxTiles.length]; this.boardView = new TileView[fxTiles.length]; for (int i = 0; i < fxTiles.length; i++) { board[i] = new Tile(i, Tile.PenguinPresence.NO_PENGUIN); - fxTiles[i].setOnMouseClicked(new TileClickHandler(i)); - boardView[i] = new TileView(fxTiles[i], board[i]); + TileClickHandler clickHandler = new TileClickHandler(i); + fxTiles[i].setOnMouseClicked(clickHandler); + labels[i].setOnMouseClicked(clickHandler); + boardView[i] = new TileView(fxTiles[i], board[i], labels[i]); } this.selectedTile = -1; this.gameState = new GameState(); diff --git a/gui/src/controller/UpdateThread.java b/gui/src/controller/UpdateThread.java index 92f2834a1f65e4f9641b6bb5eb16b025822bbb04..8d227199beef7c336ce2d8352e7f31827cece115 100644 --- a/gui/src/controller/UpdateThread.java +++ b/gui/src/controller/UpdateThread.java @@ -79,9 +79,9 @@ public class UpdateThread extends Thread } //UPDATE VIEW - for (int i = 0; i < boardView.length; i++) - boardView[i].update(); Platform.runLater(() -> { + for (int i = 0; i < boardView.length; i++) + boardView[i].update(); scoreRed.setText(Integer.toString(gameState.getScore(Player.Red))); scoreBlue.setText(Integer.toString(gameState.getScore(Player.Blue))); turnLabel.setText(gameState.getCurrent_player()+ "'s turn"); diff --git a/gui/src/view/TileView.java b/gui/src/view/TileView.java index 2ebb48993eb6d8ad3a94016dbaa1132a426bdf52..36f5928231e507df68294afe1620e1873ac0a34f 100644 --- a/gui/src/view/TileView.java +++ b/gui/src/view/TileView.java @@ -1,5 +1,6 @@ package view; +import javafx.scene.control.Label; import javafx.scene.paint.Color; import javafx.scene.shape.Polygon; import model.Move; @@ -12,14 +13,16 @@ public class TileView { private Polygon fxTile; private Tile modelTile; + private Label fishLabel; private boolean selected, highlighted; private Move highlightMove = null; // How do we get here from the selected tile (used when highlighting) - public TileView(Polygon fxTile, Tile modelTile) + public TileView(Polygon fxTile, Tile modelTile, Label fishLabel) { this.fxTile = fxTile; this.modelTile = modelTile; + this.fishLabel = fishLabel; } /** @@ -30,20 +33,15 @@ public class TileView //TODO: Better tile representation Color fillColor = null; //FISH NUMBER - switch (modelTile.getNbFish()) + if(modelTile.getNbFish() == 0) { - case 0: - fillColor = Color.LIGHTBLUE; - break; - case 1: - fillColor = Color.GREENYELLOW; - break; - case 2: - fillColor = Color.GREEN; - break; - case 3: - fillColor = Color.DARKGREEN; - break; + fishLabel.setText(""); + fillColor = Color.WHITE; + } + else + { + fishLabel.setText(Integer.toString(modelTile.getNbFish())); + fillColor = Color.LIGHTBLUE; } //PENGUIN if (modelTile.getPenguinPresence().equals(Tile.PenguinPresence.RED_PENGUIN)) @@ -53,9 +51,9 @@ public class TileView //SELECTION/HIGHLIGHT if (selected) - fillColor = fillColor.deriveColor(0, 1, 0.5, 1); - if (highlighted) fillColor = fillColor.deriveColor(0, 0.5, 1, 1); + if (highlighted) + fillColor = fillColor.deriveColor(0, 1, 0.5, 1); fxTile.setFill(fillColor); diff --git a/gui/src/view/view.fxml b/gui/src/view/view.fxml index 2f7f1d6fd423f141519a3012f6d092e5bb4f0d48..c63064b791546add10be9fb6dc1a0bc0d3a6841d 100644 --- a/gui/src/view/view.fxml +++ b/gui/src/view/view.fxml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> +<?import javafx.scene.image.*?> <?import javafx.geometry.*?> <?import javafx.scene.text.*?> <?import java.lang.*?> @@ -1016,6 +1017,66 @@ <Font size="24.0" /> </font> </Label> + <Label fx:id="nbFish44" layoutX="61.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish43" layoutX="111.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish42" layoutX="161.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish41" layoutX="211.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish40" layoutX="260.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish39" layoutX="310.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish38" layoutX="360.0" layoutY="202.0" text="0" /> + <Label fx:id="nbFish59" layoutX="60.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish58" layoutX="110.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish57" layoutX="160.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish56" layoutX="210.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish55" layoutX="259.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish54" layoutX="309.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish53" layoutX="359.0" layoutY="112.0" text="0" /> + <Label fx:id="nbFish29" layoutX="60.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish28" layoutX="110.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish27" layoutX="160.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish26" layoutX="210.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish25" layoutX="259.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish24" layoutX="309.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish23" layoutX="359.0" layoutY="292.0" text="0" /> + <Label fx:id="nbFish14" layoutX="60.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish13" layoutX="110.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish12" layoutX="160.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish11" layoutX="210.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish10" layoutX="259.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish9" layoutX="309.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish8" layoutX="359.0" layoutY="383.0" text="0" /> + <Label fx:id="nbFish6" layoutX="84.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish5" layoutX="134.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish4" layoutX="184.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish3" layoutX="234.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish2" layoutX="283.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish1" layoutX="333.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish0" layoutX="383.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish21" layoutX="86.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish20" layoutX="136.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish19" layoutX="186.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish18" layoutX="236.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish17" layoutX="285.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish16" layoutX="335.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish15" layoutX="385.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish36" layoutX="85.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish35" layoutX="135.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish34" layoutX="185.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish33" layoutX="235.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish32" layoutX="284.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish31" layoutX="334.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish30" layoutX="384.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish51" layoutX="84.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish50" layoutX="134.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish49" layoutX="184.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish48" layoutX="234.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish47" layoutX="283.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish46" layoutX="333.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish45" layoutX="383.0" layoutY="157.0" text="0" /> + <Label fx:id="nbFish7" layoutX="34.0" layoutY="427.0" text="0" /> + <Label fx:id="nbFish22" layoutX="34.0" layoutY="337.0" text="0" /> + <Label fx:id="nbFish37" layoutX="34.0" layoutY="247.0" text="0" /> + <Label fx:id="nbFish52" layoutX="34.0" layoutY="157.0" text="0" /> </children> </AnchorPane> </center>