Some fixes (Concurrent List GUI)
This commit is contained in:
@@ -956,7 +956,7 @@ public class Game implements Serializable {
|
|||||||
);
|
);
|
||||||
currentState.GameStageUpdate(GameStages.ENDED);
|
currentState.GameStageUpdate(GameStages.ENDED);
|
||||||
playerStanding=new ArrayList<>(playersList);
|
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);
|
currentState.GameStageUpdate(GameStages.ENDED);
|
||||||
playerStanding=new ArrayList<>(playersList);
|
playerStanding=new ArrayList<>(playersList);
|
||||||
playerStanding.remove(winner);
|
playerStanding.remove(winner);
|
||||||
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()));
|
||||||
playersList.addLast(winner);
|
playerStanding.addFirst(winner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -53,14 +53,15 @@ public class ClientCallbackImpl extends UnicastRemoteObject implements IClientCa
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onAction(NetworkEvent event) throws RemoteException {
|
public void onAction(NetworkEvent event) throws RemoteException {
|
||||||
synchronized (clientController)
|
|
||||||
{
|
|
||||||
if(event.getIsError()) {
|
if(event.getIsError()) {
|
||||||
clientController.view.showError(event.toString());
|
clientController.view.showError(event.toString());
|
||||||
} else {
|
} else {
|
||||||
|
synchronized (clientController)
|
||||||
|
{
|
||||||
event.apply(clientController.miniModel);
|
event.apply(clientController.miniModel);
|
||||||
|
}
|
||||||
clientController.view.render();
|
clientController.view.render();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ public class TCPClient implements IClient {
|
|||||||
event.apply(controller.miniModel);
|
event.apply(controller.miniModel);
|
||||||
}
|
}
|
||||||
controller.view.render();
|
controller.view.render();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (read instanceof MiniModel model) {
|
} else if (read instanceof MiniModel model) {
|
||||||
|
|||||||
@@ -120,11 +120,6 @@ public class ServerLauncher {
|
|||||||
Game game=gameController.getModel();
|
Game game=gameController.getModel();
|
||||||
if(!event.getIsError())
|
if(!event.getIsError())
|
||||||
{
|
{
|
||||||
if(game.getCurrentState().getGameStage().equals(GameStages.ENDED))
|
|
||||||
{
|
|
||||||
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))
|
if(event.getEventType().equals(EventType.DISCONNECTED_PLAYER)&& game.getCurrentState().getGameStage().equals(GameStages.WAITING))
|
||||||
{
|
{
|
||||||
playerList.remove(event.getUsername());
|
playerList.remove(event.getUsername());
|
||||||
@@ -136,17 +131,6 @@ public class ServerLauncher {
|
|||||||
playerList.remove(event.getUsername());
|
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(game.getCurrentState().getGameStage() == GameStages.ENDED){
|
||||||
if(!this.deleteSave()){
|
if(!this.deleteSave()){
|
||||||
System.out.println("\n!!! Couldn't delete save !!!\n");
|
System.out.println("\n!!! Couldn't delete save !!!\n");
|
||||||
@@ -162,6 +146,19 @@ public class ServerLauncher {
|
|||||||
System.out.println("\n!!! Save failed !!!\n");
|
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 (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && playerList.values().stream().filter(x -> x).count() == 1&& game.getCurrentState().getGameStage() != GameStages.ENDED) {
|
||||||
if (disconnectionTimer != null && !disconnectionTimer.isDone()) {
|
if (disconnectionTimer != null && !disconnectionTimer.isDone()) {
|
||||||
disconnectionTimer.cancel(false);
|
disconnectionTimer.cancel(false);
|
||||||
@@ -246,7 +243,8 @@ public class ServerLauncher {
|
|||||||
launcher.run();
|
launcher.run();
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
System.out.println("Generic exception occurred"+e.getMessage());
|
System.out.println("Generic exception occurred");
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
|
|||||||
@@ -82,15 +82,19 @@ public class GUI extends Application implements IView {
|
|||||||
public void render() {
|
public void render() {
|
||||||
if(controller.miniModel.currentState.getGameStage()==TOTEM_CHOICE) {
|
if(controller.miniModel.currentState.getGameStage()==TOTEM_CHOICE) {
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
|
synchronized (this) {
|
||||||
controllerTotem.render();
|
controllerTotem.render();
|
||||||
primaryStage.setScene(totemScene);
|
primaryStage.setScene(totemScene);
|
||||||
primaryStage.setFullScreen(true);
|
primaryStage.setFullScreen(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
|
synchronized (this) {
|
||||||
controllerMain.render();
|
controllerMain.render();
|
||||||
primaryStage.setScene(mainScene);
|
primaryStage.setScene(mainScene);
|
||||||
primaryStage.setFullScreen(true);
|
primaryStage.setFullScreen(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,10 +86,7 @@ public class MainFXMLController {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void render() {
|
public synchronized void render() {
|
||||||
|
|
||||||
synchronized (controller)
|
|
||||||
{
|
|
||||||
if (old_state_stage==null) {
|
if (old_state_stage==null) {
|
||||||
renderBackground();
|
renderBackground();
|
||||||
renderUpper();
|
renderUpper();
|
||||||
@@ -119,7 +116,6 @@ public class MainFXMLController {
|
|||||||
|
|
||||||
old_state_stage=controller.miniModel.currentState.getGameStage();
|
old_state_stage=controller.miniModel.currentState.getGameStage();
|
||||||
old_state_username=controller.miniModel.currentState.getCurrentPlayer().getUserName();
|
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
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -272,6 +268,8 @@ public class MainFXMLController {
|
|||||||
upperList.setAlignment(Pos.CENTER);
|
upperList.setAlignment(Pos.CENTER);
|
||||||
upperList.getChildren().clear();
|
upperList.getChildren().clear();
|
||||||
|
|
||||||
|
synchronized (controller)
|
||||||
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (TribeCard card : controller.miniModel.board.upperListTribe) {
|
for (TribeCard card : controller.miniModel.board.upperListTribe) {
|
||||||
final int index = i;
|
final int index = i;
|
||||||
@@ -289,11 +287,14 @@ public class MainFXMLController {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private void renderLower() {
|
private void renderLower() {
|
||||||
lowerList.setSpacing(14);
|
lowerList.setSpacing(14);
|
||||||
lowerList.setAlignment(Pos.CENTER);
|
lowerList.setAlignment(Pos.CENTER);
|
||||||
lowerList.getChildren().clear();
|
lowerList.getChildren().clear();
|
||||||
|
|
||||||
|
synchronized (controller)
|
||||||
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
|
for (TribeCard card : controller.miniModel.board.lowerListTribe) {
|
||||||
final int index = i;
|
final int index = i;
|
||||||
@@ -311,6 +312,7 @@ public class MainFXMLController {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private void renderDeck() {
|
private void renderDeck() {
|
||||||
String path = "";
|
String path = "";
|
||||||
switch (controller.miniModel.currentState.getEra()) {
|
switch (controller.miniModel.currentState.getEra()) {
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public class TUI implements IView {
|
|||||||
* Delegates to {@link #renderBoard()}.
|
* Delegates to {@link #renderBoard()}.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void render() {
|
public synchronized void render() {
|
||||||
if(model != null)
|
if(model != null)
|
||||||
{
|
{
|
||||||
if(model.currentState.getGameStage().equals(GameStages.TOTEM_CHOICE))
|
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))
|
else if(model.currentState.getGameStage().equals(GameStages.ENDED))
|
||||||
{
|
{
|
||||||
renderStanding();
|
renderStanding();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -109,25 +110,27 @@ public class TUI implements IView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void renderStanding() {
|
private void renderStanding() {
|
||||||
StringBuilder stringBuilder=new StringBuilder();
|
if(model.standingPlayers!=null)
|
||||||
ArrayList<Player> playersList=new ArrayList<>(model.players.values());
|
|
||||||
for(int i = 0; i< model.players.size()/2; i++)
|
|
||||||
{
|
{
|
||||||
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 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");
|
stringBuilder.append("\n");
|
||||||
if(playersList.size()%2!=0)
|
if(model.standingPlayers.size()%2!=0)
|
||||||
{
|
{
|
||||||
stringBuilder.append(playersList.get(playersList.size()-1).toString());
|
stringBuilder.append(model.standingPlayers.get(model.standingPlayers.size()-1).toString());
|
||||||
stringBuilder.append("\n");
|
stringBuilder.append("\n");
|
||||||
}
|
}
|
||||||
System.out.println(stringBuilder);
|
System.out.println(stringBuilder);
|
||||||
if(playersList.get(0).getUserName().equals(username))
|
if(model.standingPlayers.get(0).getUserName().equals(username))
|
||||||
{
|
{
|
||||||
System.out.println("!!!YOU WON!!!");
|
System.out.println("GAME ENDED: !!!YOU WON!!!");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
System.out.println("!!!YOU LOST!!!");
|
System.out.println("GAME ENDED: !!!YOU LOST!!!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user