diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/ClientCallbackImpl.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/ClientCallbackImpl.java index c9c3224..02b3d08 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/ClientCallbackImpl.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/ClientCallbackImpl.java @@ -53,11 +53,14 @@ public class ClientCallbackImpl extends UnicastRemoteObject implements IClientCa */ @Override public void onAction(NetworkEvent event) throws RemoteException { - if(event.getIsError()) { - clientController.view.showError(event.toString()); - } else { - event.apply(clientController.miniModel); - clientController.view.render(); + synchronized (clientController) + { + if(event.getIsError()) { + clientController.view.showError(event.toString()); + } else { + event.apply(clientController.miniModel); + clientController.view.render(); + } } } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java index affbeb6..b9b09fb 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java @@ -156,17 +156,19 @@ public class TCPClient implements IClient { e.printStackTrace(); break; } - if (read instanceof NetworkEvent event) { - if (event.getIsError()) { - controller.view.showError(event.toString()); - } else { - event.apply(controller.miniModel); + synchronized (controller) { + if (read instanceof NetworkEvent event) { + if (event.getIsError()) { + controller.view.showError(event.toString()); + } else { + event.apply(controller.miniModel); + controller.view.render(); + } + + } else if (read instanceof MiniModel model) { + controller.setModel(model); controller.view.render(); } - - } else if (read instanceof MiniModel model) { - controller.setModel(model); - controller.view.render(); } } catch (ClassNotFoundException e) { e.printStackTrace(); diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java index 5274d97..e32a6af 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java @@ -88,35 +88,38 @@ public class MainFXMLController { public void render() { - if (old_state_stage==null) { - renderBackground(); - renderUpper(); - renderBoard(); - renderLower(); - renderMyHand(); - renderSidePanel(); - } else if (old_state_stage==SLOT_CHOICE ) { - System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); - System.out.println("RIDISEGNO BOARD\n"); - renderBoard(); - } else if (old_state_stage==RES_ACTIONS) { - System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); - System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username); - renderUpper(); - renderBoard(); - renderLower(); - renderSidePanel(); - if (Objects.equals(old_state_username, controller.myUsername)) { - renderMyHand(); - } + synchronized (controller) + { + if (old_state_stage==null) { + renderBackground(); + renderUpper(); + renderBoard(); + renderLower(); + renderMyHand(); + renderSidePanel(); + } else if (old_state_stage==SLOT_CHOICE ) { + System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); + System.out.println("RIDISEGNO BOARD\n"); + renderBoard(); + } else if (old_state_stage==RES_ACTIONS) { + System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); + System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username); + renderUpper(); + renderBoard(); + renderLower(); + renderSidePanel(); + if (Objects.equals(old_state_username, controller.myUsername)) { + renderMyHand(); + } - // TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato) - } else { - System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + // TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato) + } else { + System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + } + + old_state_stage=controller.miniModel.currentState.getGameStage(); + old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName(); } - - old_state_stage=controller.miniModel.currentState.getGameStage(); - old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName(); // TODO: le info in sidepanel non vengono aggiornate sempre aggiornate, bisogna prima capire dove metterle }