From adeec50882436cadb22785b611200f51984cdf46 Mon Sep 17 00:00:00 2001 From: Alireza-Alipanah Date: Wed, 21 Jul 2021 22:27:54 +0430 Subject: [PATCH] a lot of changes --- .../view/gameboardview/GameBoardHandler.java | 18 ++++++++- .../view/gameboardview/GameBoardView.java | 20 ++++++---- .../view/mainMenu/MainMenuController.java | 2 +- .../sample/view/mainMenu/MainMenuFxml.fxml | 12 +++--- .../sample/view/newduel/DuelController.java | 37 +++++++++++++------ src/main/java/sample/view/sender/Sender.java | 1 + 6 files changed, 63 insertions(+), 27 deletions(-) diff --git a/src/main/java/sample/view/gameboardview/GameBoardHandler.java b/src/main/java/sample/view/gameboardview/GameBoardHandler.java index 3e34cd1..123bae7 100644 --- a/src/main/java/sample/view/gameboardview/GameBoardHandler.java +++ b/src/main/java/sample/view/gameboardview/GameBoardHandler.java @@ -17,6 +17,7 @@ public class GameBoardHandler implements Runnable{ private Stage stage; private Communicator communicator; private GameBoardView gameBoardView; + private boolean isRunning; public GameBoardHandler(Stage stage){ this.stage = stage; @@ -34,13 +35,21 @@ public void setGameBoardView(GameBoardView gameBoardView) { this.gameBoardView = gameBoardView; } + public boolean getIsRunning(){ + return isRunning; + } + @Override public void run() { + isRunning = true; String message; while (run){ message = sender.receive(); handle(message); + if (message.equals("break")) + break; } + isRunning = false; } protected void handle(String message){ @@ -99,7 +108,14 @@ else if (message.startsWith("reduceHealth")){ } else if (message.startsWith("actions")){ strings= message.replaceAll("actions\\*", "").split("\\*"); gameBoardView.setActions(strings[0], strings[1], Integer.parseInt(strings[2]), strings[3].equalsIgnoreCase("true")); - } + } else if (message.startsWith("message")) + gameBoardView.addTextToChat(message.replaceAll("^message\\*", "")); + else if (message.equals("pause")) + gameBoardView.pause(); + else if (message.equals("resume")) + gameBoardView.resume(); + else if (message.equals("break")) + gameBoardView.shutdown(stage, true); else { handleSelecting(message); } diff --git a/src/main/java/sample/view/gameboardview/GameBoardView.java b/src/main/java/sample/view/gameboardview/GameBoardView.java index 1092cda..07c6968 100644 --- a/src/main/java/sample/view/gameboardview/GameBoardView.java +++ b/src/main/java/sample/view/gameboardview/GameBoardView.java @@ -309,25 +309,28 @@ private void setPause(Button button){ if (button.getText().equals("pause")) { button.setText("resume"); pause(); - opponentCommunicator.pause(); + sender.send("-GPC-pause"); } else { button.setText("pause"); resume(); - opponentCommunicator.resume(); + sender.send("-GPC-resume"); } }); } public void pause(){ blocked = true; - pauseButton.setText("resume"); - anchorPane.getChildren().add(darkMode); + Platform.runLater(() -> pauseButton.setText("resume")); + if (!anchorPane.getChildren().contains(darkMode)) + Platform.runLater(() -> anchorPane.getChildren().add(darkMode)); } public void resume(){ blocked = false; - pauseButton.setText("pause"); - anchorPane.getChildren().remove(darkMode); + Platform.runLater(() -> { + pauseButton.setText("pause"); + anchorPane.getChildren().remove(darkMode); + }); } private void setNextPhase(Rectangle... rectangles){ @@ -377,12 +380,13 @@ private void sendMessage() { messageField.clear(); text = "\n" + myNicknameString + " : " + text; chatTexts.appendText(text); - opponentCommunicator.sendMessage(text); + sender.send("-GPC-message*" + text); } } public void addTextToChat(String message){ - chatTexts.appendText(message); + if (message.startsWith("\n" + enemyNickname.getText())) + chatTexts.appendText(message); } private void initializeCardPlaces(HashMap places, AnchorPane anchorPane, boolean enemy){ diff --git a/src/main/java/sample/view/mainMenu/MainMenuController.java b/src/main/java/sample/view/mainMenu/MainMenuController.java index bbe1b0e..c62a98a 100644 --- a/src/main/java/sample/view/mainMenu/MainMenuController.java +++ b/src/main/java/sample/view/mainMenu/MainMenuController.java @@ -88,7 +88,7 @@ public void initialize(URL url, ResourceBundle resourceBundle){ logoutButton.setStyle("-fx-border-width: 0 0 0 0.5; -fx-border-color: #ff5959"); searchPlayerToPlayTextArea.setStyle("-fx-prompt-text-fill: white; -fx-text-fill: #ffff22"); allUsersTextArea.setStyle("-fx-text-fill: white"); - tvButton.setStyle("-fx-border-width: 0 0 0 0.4; -fx-border-color: radial-gradient(aqua, #ff5bec)"); +// tvButton.setStyle("-fx-border-width: 0 0 0 0.4; -fx-border-color: radial-gradient(aqua, #ff5bec)"); } public void onMouseEnteredNewGameButton(MouseEvent e){ diff --git a/src/main/java/sample/view/mainMenu/MainMenuFxml.fxml b/src/main/java/sample/view/mainMenu/MainMenuFxml.fxml index f7f4d53..ab236d7 100644 --- a/src/main/java/sample/view/mainMenu/MainMenuFxml.fxml +++ b/src/main/java/sample/view/mainMenu/MainMenuFxml.fxml @@ -58,7 +58,7 @@ - + @@ -216,11 +216,11 @@ - - - - - + + + + + diff --git a/src/main/java/sample/view/newduel/DuelController.java b/src/main/java/sample/view/newduel/DuelController.java index 71d7599..1fb61b0 100644 --- a/src/main/java/sample/view/newduel/DuelController.java +++ b/src/main/java/sample/view/newduel/DuelController.java @@ -55,13 +55,14 @@ public void initialize(URL url, ResourceBundle resourceBundle) { @FXML private void startGame(ActionEvent actionEvent){ - errorLabel.setText(sender.getResponse(sender.setMessageWithToken("-ND-", "startANewGame", rounds))); - GameBoardHandler gameBoardHandler = new GameBoardHandler((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()); - this.gameBoardHandler = gameBoardHandler; - Thread thread = new Thread(gameBoardHandler); - thread.setDaemon(true); - thread.start(); -// } + if (gameBoardHandler == null) { + errorLabel.setText(sender.getResponse(sender.setMessageWithToken("-ND-", "startANewGame", rounds))); + GameBoardHandler gameBoardHandler = new GameBoardHandler((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()); + this.gameBoardHandler = gameBoardHandler; + Thread thread = new Thread(gameBoardHandler); + thread.setDaemon(true); + thread.start(); + } } @FXML @@ -69,15 +70,13 @@ private void changeRounds(ActionEvent actionEvent){ if (oneRound.isSelected()) rounds = "1"; else rounds = "3"; + reset(); } @FXML private void back(ActionEvent actionEvent){ try { - if (gameBoardHandler != null){ - gameBoardHandler.setRun(false); - } - sender.send(sender.setMessageWithToken("-ND-", "end", rounds)); + reset(); Parent root = FXMLLoader.load(new File("./src/main/java/sample/view/mainMenu/MainMenuFxml.fxml").toURI().toURL()); Scene scene = new Scene(root); Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow(); @@ -86,4 +85,20 @@ private void back(ActionEvent actionEvent){ ioException.printStackTrace(); } } + + private void reset() { + if (gameBoardHandler != null){ + gameBoardHandler.setRun(false); + sender.send(sender.setMessageWithToken("-ND-", "dummy", "dummy")); + while (gameBoardHandler.getIsRunning()) { + try { + Thread.sleep(100); + } catch (InterruptedException interruptedException) { + interruptedException.printStackTrace(); + } + } + this.gameBoardHandler = null; + } + sender.getResponse(sender.setMessageWithToken("-ND-", "end", rounds)); + } } diff --git a/src/main/java/sample/view/sender/Sender.java b/src/main/java/sample/view/sender/Sender.java index 77650eb..e367536 100644 --- a/src/main/java/sample/view/sender/Sender.java +++ b/src/main/java/sample/view/sender/Sender.java @@ -106,6 +106,7 @@ public String receive(){ message = dataInputStream.readUTF(); } catch (IOException ioException) { ioException.printStackTrace(); + message = "break"; } return message; }