diff --git a/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java b/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java index a301fbe..d31c60d 100644 --- a/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java +++ b/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java @@ -10,6 +10,7 @@ import org.toop.app.widget.WidgetContainer; import org.toop.app.widget.view.GameView; import org.toop.framework.eventbus.EventFlow; import org.toop.framework.eventbus.GlobalEventBus; +import org.toop.framework.game.games.reversi.BitboardReversi; import org.toop.framework.gameFramework.controller.GameController; import org.toop.framework.gameFramework.model.game.threadBehaviour.SupportsOnlinePlay; import org.toop.framework.gameFramework.model.game.TurnBasedGame; @@ -158,8 +159,14 @@ public class GenericGameController implements GameController { canvas.redraw(gameCopy); String gameType = game.getClass().getSimpleName().replace("Bitboard",""); gameView.nextPlayer(true, getCurrentPlayer().getName(), game.getPlayer(1-getCurrentPlayerIndex()).getName(),gameType); - if (getCurrentPlayer() instanceof LocalPlayer && gameType.equals("Reversi")){ - ((ReversiBitCanvas)canvas).drawLegalDots(gameCopy); + if (gameType.equals("Reversi")) { + BitboardReversi reversiGame = (BitboardReversi) game; + BitboardReversi.Score reversiScore = reversiGame.getScore(); + gameView.setPlayer1Score(reversiScore.black()); + gameView.setPlayer2Score(reversiScore.white()); + if (getCurrentPlayer() instanceof LocalPlayer) { + ((ReversiBitCanvas)canvas).drawLegalDots(gameCopy); + } } } } diff --git a/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java b/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java index 1ea8109..8954a62 100644 --- a/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java +++ b/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java @@ -11,13 +11,19 @@ import org.toop.framework.game.players.OnlinePlayer; import java.util.Arrays; public class ReversiBitController extends GenericGameController { + + private BitboardReversi game; + public ReversiBitController(Player[] players) { BitboardReversi game = new BitboardReversi(); game.init(players); - ThreadBehaviour thread = Arrays.stream(players).anyMatch(e -> e instanceof OnlinePlayer) ? new OnlineThreadBehaviour(game) : new LocalThreadBehaviour(game); super(new ReversiBitCanvas(), game, thread, "Reversi"); } + + public BitboardReversi.Score getScore() { + return game.getScore(); + } } diff --git a/app/src/main/java/org/toop/app/widget/popup/GameOverPopup.java b/app/src/main/java/org/toop/app/widget/popup/GameOverPopup.java index ab1ef3d..9c9f961 100644 --- a/app/src/main/java/org/toop/app/widget/popup/GameOverPopup.java +++ b/app/src/main/java/org/toop/app/widget/popup/GameOverPopup.java @@ -4,6 +4,7 @@ import org.toop.app.widget.complex.ConfirmWidget; import org.toop.app.widget.complex.PopupWidget; import javafx.geometry.Pos; +import org.toop.framework.game.games.reversi.BitboardReversi; public final class GameOverPopup extends PopupWidget { public GameOverPopup(boolean winOrTie, String winner) { @@ -15,7 +16,6 @@ public final class GameOverPopup extends PopupWidget { else{ confirmWidget.setMessage("It was a tie!"); } - confirmWidget.addButton("ok", this::hide); add(Pos.CENTER, confirmWidget); diff --git a/app/src/main/java/org/toop/app/widget/view/GameView.java b/app/src/main/java/org/toop/app/widget/view/GameView.java index 8362603..38fcd6c 100644 --- a/app/src/main/java/org/toop/app/widget/view/GameView.java +++ b/app/src/main/java/org/toop/app/widget/view/GameView.java @@ -26,6 +26,8 @@ public final class GameView extends ViewWidget { private final Text player2Header; private Circle player1Icon; private Circle player2Icon; + private final Text player1Score; + private final Text player2Score; private final Button forfeitButton; private final Button exitButton; private final TextField chatInput; @@ -40,6 +42,8 @@ public final class GameView extends ViewWidget { player2Header = Primitive.header(""); player1Icon = new Circle(); player2Icon = new Circle(); + player1Score = Primitive.header(""); + player2Score = Primitive.header(""); if (onForfeit != null) { forfeitButton = Primitive.button("forfeit", () -> onForfeit.run(), false); @@ -153,14 +157,16 @@ public final class GameView extends ViewWidget { private void setPlayerInfoReversi() { var player1box = Primitive.hbox( player1Icon, - player1Header + player1Header, + player1Score ); player1box.getStyleClass().add("hboxspacing"); var player2box = Primitive.hbox( player2Icon, - player2Header + player2Header, + player2Score ); player2box.getStyleClass().add("hboxspacing"); @@ -178,4 +184,12 @@ public final class GameView extends ViewWidget { player2Icon.setFill(Color.BLACK); add(Pos.TOP_RIGHT, playerInfo); } + + public void setPlayer1Score(int score) { + player1Score.setText("(" + Integer.toString(score) + ")"); + } + + public void setPlayer2Score(int score) { + player2Score.setText("(" + Integer.toString(score) + ")"); + } } \ No newline at end of file