Some fixes (Concurrent List GUI)
This commit is contained in:
@@ -956,7 +956,7 @@ public class Game implements Serializable {
|
||||
);
|
||||
currentState.GameStageUpdate(GameStages.ENDED);
|
||||
playerStanding=new ArrayList<>(playersList);
|
||||
playersList.sort((x,y)->x.getPrestigeValue()==y.getPrestigeValue()?Integer.compare(x.getFoodValue(),y.getFoodValue()):Integer.compare(x.getPrestigeValue(),y.getPrestigeValue()));
|
||||
playerStanding.sort((y,x)->x.getPrestigeValue()==y.getPrestigeValue()?Integer.compare(x.getFoodValue(),y.getFoodValue()):Integer.compare(x.getPrestigeValue(),y.getPrestigeValue()));
|
||||
|
||||
}
|
||||
|
||||
@@ -996,8 +996,8 @@ public class Game implements Serializable {
|
||||
currentState.GameStageUpdate(GameStages.ENDED);
|
||||
playerStanding=new ArrayList<>(playersList);
|
||||
playerStanding.remove(winner);
|
||||
playersList.sort((x,y)->x.getPrestigeValue()==y.getPrestigeValue()?Integer.compare(x.getFoodValue(),y.getFoodValue()):Integer.compare(x.getPrestigeValue(),y.getPrestigeValue()));
|
||||
playersList.addLast(winner);
|
||||
playerStanding.sort((y,x)->x.getPrestigeValue()==y.getPrestigeValue()?Integer.compare(x.getFoodValue(),y.getFoodValue()):Integer.compare(x.getPrestigeValue(),y.getPrestigeValue()));
|
||||
playerStanding.addFirst(winner);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -53,14 +53,15 @@ public class ClientCallbackImpl extends UnicastRemoteObject implements IClientCa
|
||||
*/
|
||||
@Override
|
||||
public void onAction(NetworkEvent event) throws RemoteException {
|
||||
synchronized (clientController)
|
||||
{
|
||||
if(event.getIsError()) {
|
||||
clientController.view.showError(event.toString());
|
||||
} else {
|
||||
if(event.getIsError()) {
|
||||
clientController.view.showError(event.toString());
|
||||
} else {
|
||||
synchronized (clientController)
|
||||
{
|
||||
event.apply(clientController.miniModel);
|
||||
clientController.view.render();
|
||||
}
|
||||
clientController.view.render();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,6 +165,7 @@ public class TCPClient implements IClient {
|
||||
event.apply(controller.miniModel);
|
||||
}
|
||||
controller.view.render();
|
||||
|
||||
}
|
||||
|
||||
} else if (read instanceof MiniModel model) {
|
||||
|
||||
@@ -120,33 +120,17 @@ public class ServerLauncher {
|
||||
Game game=gameController.getModel();
|
||||
if(!event.getIsError())
|
||||
{
|
||||
if(game.getCurrentState().getGameStage().equals(GameStages.ENDED))
|
||||
if(event.getEventType().equals(EventType.DISCONNECTED_PLAYER)&& game.getCurrentState().getGameStage().equals(GameStages.WAITING))
|
||||
{
|
||||
actionQueue.offer(new EndedGame(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayerStanding()));
|
||||
}
|
||||
else {
|
||||
if(event.getEventType().equals(EventType.DISCONNECTED_PLAYER)&& game.getCurrentState().getGameStage().equals(GameStages.WAITING))
|
||||
{
|
||||
playerList.remove(event.getUsername());
|
||||
}else {
|
||||
event.setData(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayerByUsername(event.getUsername()));
|
||||
if (event.getEventType().equals(EventType.TOTEM_CHOICE)) {
|
||||
((TotemChoice) event).setAvailableTotems(gameController.getModel().getAvailableTotems());
|
||||
} else if (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && game.getCurrentState().equals(GameStages.WAITING)) {
|
||||
playerList.remove(event.getUsername());
|
||||
}else {
|
||||
event.setData(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayerByUsername(event.getUsername()));
|
||||
if (event.getEventType().equals(EventType.TOTEM_CHOICE)) {
|
||||
((TotemChoice) event).setAvailableTotems(gameController.getModel().getAvailableTotems());
|
||||
} else if (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && game.getCurrentState().equals(GameStages.WAITING)) {
|
||||
playerList.remove(event.getUsername());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
serverRMI.notifyAll(event);
|
||||
serverTCP.notifyAll(event);
|
||||
if(game.getCurrentState().getRound()!=roundPrev)
|
||||
{
|
||||
ApplyNextRound nextRound=new ApplyNextRound(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayers());
|
||||
serverRMI.notifyAll(nextRound);
|
||||
serverTCP.notifyAll(nextRound);
|
||||
}
|
||||
if(!event.getIsError()){
|
||||
if(game.getCurrentState().getGameStage() == GameStages.ENDED){
|
||||
if(!this.deleteSave()){
|
||||
System.out.println("\n!!! Couldn't delete save !!!\n");
|
||||
@@ -162,6 +146,19 @@ public class ServerLauncher {
|
||||
System.out.println("\n!!! Save failed !!!\n");
|
||||
}
|
||||
}
|
||||
serverRMI.notifyAll(event);
|
||||
serverTCP.notifyAll(event);
|
||||
if(game.getCurrentState().getRound()!=roundPrev)
|
||||
{
|
||||
ApplyNextRound nextRound=new ApplyNextRound(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayers());
|
||||
serverRMI.notifyAll(nextRound);
|
||||
serverTCP.notifyAll(nextRound);
|
||||
}
|
||||
else if(game.getCurrentState().getGameStage().equals(GameStages.ENDED))
|
||||
{
|
||||
serverRMI.notifyAll(new EndedGame(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayerStanding()));
|
||||
serverTCP.notifyAll(new EndedGame(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayerStanding()));
|
||||
}
|
||||
if (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && playerList.values().stream().filter(x -> x).count() == 1&& game.getCurrentState().getGameStage() != GameStages.ENDED) {
|
||||
if (disconnectionTimer != null && !disconnectionTimer.isDone()) {
|
||||
disconnectionTimer.cancel(false);
|
||||
@@ -246,7 +243,8 @@ public class ServerLauncher {
|
||||
launcher.run();
|
||||
} catch (Exception e)
|
||||
{
|
||||
System.out.println("Generic exception occurred"+e.getMessage());
|
||||
System.out.println("Generic exception occurred");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}).start();
|
||||
|
||||
|
||||
@@ -82,15 +82,19 @@ public class GUI extends Application implements IView {
|
||||
public void render() {
|
||||
if(controller.miniModel.currentState.getGameStage()==TOTEM_CHOICE) {
|
||||
Platform.runLater(() -> {
|
||||
controllerTotem.render();
|
||||
primaryStage.setScene(totemScene);
|
||||
primaryStage.setFullScreen(true);
|
||||
synchronized (this) {
|
||||
controllerTotem.render();
|
||||
primaryStage.setScene(totemScene);
|
||||
primaryStage.setFullScreen(true);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Platform.runLater(() -> {
|
||||
controllerMain.render();
|
||||
primaryStage.setScene(mainScene);
|
||||
primaryStage.setFullScreen(true);
|
||||
synchronized (this) {
|
||||
controllerMain.render();
|
||||
primaryStage.setScene(mainScene);
|
||||
primaryStage.setFullScreen(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,40 +86,36 @@ public class MainFXMLController {
|
||||
|
||||
|
||||
|
||||
public void render() {
|
||||
|
||||
synchronized (controller)
|
||||
{
|
||||
if (old_state_stage==null) {
|
||||
renderBackground();
|
||||
renderUpper();
|
||||
renderBoard();
|
||||
renderLower();
|
||||
public synchronized 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();
|
||||
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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
}
|
||||
|
||||
old_state_stage=controller.miniModel.currentState.getGameStage();
|
||||
old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName();
|
||||
// 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();
|
||||
// TODO: le info in sidepanel non vengono aggiornate sempre aggiornate, bisogna prima capire dove metterle
|
||||
|
||||
}
|
||||
@@ -272,21 +268,24 @@ public class MainFXMLController {
|
||||
upperList.setAlignment(Pos.CENTER);
|
||||
upperList.getChildren().clear();
|
||||
|
||||
int i = 0;
|
||||
for (TribeCard card : controller.miniModel.board.upperListTribe) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));
|
||||
upperList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
for (BuildingCard card : controller.miniModel.board.upperListBuilding) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index));
|
||||
upperList.getChildren().add(img);
|
||||
i++;
|
||||
synchronized (controller)
|
||||
{
|
||||
int i = 0;
|
||||
for (TribeCard card : controller.miniModel.board.upperListTribe) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));
|
||||
upperList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
for (BuildingCard card : controller.miniModel.board.upperListBuilding) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index));
|
||||
upperList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
private void renderLower() {
|
||||
@@ -294,21 +293,24 @@ public class MainFXMLController {
|
||||
lowerList.setAlignment(Pos.CENTER);
|
||||
lowerList.getChildren().clear();
|
||||
|
||||
int i = 0;
|
||||
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index));
|
||||
lowerList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
for (BuildingCard card : controller.miniModel.board.lowerListBuilding) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index));
|
||||
lowerList.getChildren().add(img);
|
||||
i++;
|
||||
synchronized (controller)
|
||||
{
|
||||
int i = 0;
|
||||
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index));
|
||||
lowerList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
for (BuildingCard card : controller.miniModel.board.lowerListBuilding) {
|
||||
final int index = i;
|
||||
StackPane img = createCard(card, true, true);
|
||||
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index));
|
||||
lowerList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
private void renderDeck() {
|
||||
|
||||
@@ -89,7 +89,7 @@ public class TUI implements IView {
|
||||
* Delegates to {@link #renderBoard()}.
|
||||
*/
|
||||
@Override
|
||||
public void render() {
|
||||
public synchronized void render() {
|
||||
if(model != null)
|
||||
{
|
||||
if(model.currentState.getGameStage().equals(GameStages.TOTEM_CHOICE))
|
||||
@@ -99,6 +99,7 @@ public class TUI implements IView {
|
||||
else if(model.currentState.getGameStage().equals(GameStages.ENDED))
|
||||
{
|
||||
renderStanding();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -109,25 +110,27 @@ public class TUI implements IView {
|
||||
}
|
||||
|
||||
private void renderStanding() {
|
||||
StringBuilder stringBuilder=new StringBuilder();
|
||||
ArrayList<Player> playersList=new ArrayList<>(model.players.values());
|
||||
for(int i = 0; i< model.players.size()/2; i++)
|
||||
if(model.standingPlayers!=null)
|
||||
{
|
||||
stringBuilder.append(AsciiTable.sideBySide(List.of(playersList.get((i*2)).toString().split("\n")),List.of(playersList.get((i*2+1)).toString().split("\n")),2));
|
||||
}
|
||||
stringBuilder.append("\n");
|
||||
if(playersList.size()%2!=0)
|
||||
{
|
||||
stringBuilder.append(playersList.get(playersList.size()-1).toString());
|
||||
StringBuilder stringBuilder=new StringBuilder();
|
||||
for(int i = 0; i< model.standingPlayers.size()/2; i++)
|
||||
{
|
||||
stringBuilder.append(AsciiTable.sideBySide(List.of(model.standingPlayers.get((i*2)).toString().split("\n")),List.of(model.standingPlayers.get((i*2+1)).toString().split("\n")),2));
|
||||
}
|
||||
stringBuilder.append("\n");
|
||||
}
|
||||
System.out.println(stringBuilder);
|
||||
if(playersList.get(0).getUserName().equals(username))
|
||||
{
|
||||
System.out.println("!!!YOU WON!!!");
|
||||
}
|
||||
else {
|
||||
System.out.println("!!!YOU LOST!!!");
|
||||
if(model.standingPlayers.size()%2!=0)
|
||||
{
|
||||
stringBuilder.append(model.standingPlayers.get(model.standingPlayers.size()-1).toString());
|
||||
stringBuilder.append("\n");
|
||||
}
|
||||
System.out.println(stringBuilder);
|
||||
if(model.standingPlayers.get(0).getUserName().equals(username))
|
||||
{
|
||||
System.out.println("GAME ENDED: !!!YOU WON!!!");
|
||||
}
|
||||
else {
|
||||
System.out.println("GAME ENDED: !!!YOU LOST!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user