Fixed: synchronized on client UI

This commit is contained in:
rubenpirreram
2026-05-15 17:10:30 +02:00
parent d4b8de9e4f
commit 2c65ce0aa7
3 changed files with 49 additions and 41 deletions
@@ -53,11 +53,14 @@ public class ClientCallbackImpl extends UnicastRemoteObject implements IClientCa
*/ */
@Override @Override
public void onAction(NetworkEvent event) throws RemoteException { public void onAction(NetworkEvent event) throws RemoteException {
if(event.getIsError()) { synchronized (clientController)
clientController.view.showError(event.toString()); {
} else { if(event.getIsError()) {
event.apply(clientController.miniModel); clientController.view.showError(event.toString());
clientController.view.render(); } else {
event.apply(clientController.miniModel);
clientController.view.render();
}
} }
} }
} }
@@ -156,17 +156,19 @@ public class TCPClient implements IClient {
e.printStackTrace(); e.printStackTrace();
break; break;
} }
if (read instanceof NetworkEvent event) { synchronized (controller) {
if (event.getIsError()) { if (read instanceof NetworkEvent event) {
controller.view.showError(event.toString()); if (event.getIsError()) {
} else { controller.view.showError(event.toString());
event.apply(controller.miniModel); } else {
event.apply(controller.miniModel);
controller.view.render();
}
} else if (read instanceof MiniModel model) {
controller.setModel(model);
controller.view.render(); controller.view.render();
} }
} else if (read instanceof MiniModel model) {
controller.setModel(model);
controller.view.render();
} }
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
@@ -88,35 +88,38 @@ public class MainFXMLController {
public void render() { public void render() {
if (old_state_stage==null) { synchronized (controller)
renderBackground(); {
renderUpper(); if (old_state_stage==null) {
renderBoard(); renderBackground();
renderLower(); renderUpper();
renderMyHand(); renderBoard();
renderSidePanel(); renderLower();
} else if (old_state_stage==SLOT_CHOICE ) { renderMyHand();
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); renderSidePanel();
System.out.println("RIDISEGNO BOARD\n"); } else if (old_state_stage==SLOT_CHOICE ) {
renderBoard(); System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
} else if (old_state_stage==RES_ACTIONS) { System.out.println("RIDISEGNO BOARD\n");
System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage()); renderBoard();
System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username); } else if (old_state_stage==RES_ACTIONS) {
renderUpper(); System.out.println("OLD: "+old_state_stage+", NEW: "+controller.miniModel.currentState.getGameStage());
renderBoard(); System.out.println("RIDISEGNO TUTTO. USERNAME: "+old_state_username);
renderLower(); renderUpper();
renderSidePanel(); renderBoard();
if (Objects.equals(old_state_username, controller.myUsername)) { renderLower();
renderMyHand(); renderSidePanel();
} if (Objects.equals(old_state_username, controller.myUsername)) {
renderMyHand();
}
// TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato) // TODO: se sono io a pescare renderizzo myHand, altrimenti no (non è scontato)
} else { } else {
System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 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 // TODO: le info in sidepanel non vengono aggiornate sempre aggiornate, bisogna prima capire dove metterle
} }