From a8fa462949875c3815b18ec3ca83822f4600c8bc Mon Sep 17 00:00:00 2001 From: Seraina Date: Sun, 1 May 2022 09:46:29 +0200 Subject: [PATCH] Fixed some wonky bugs, and added minimum vote time of 5 seconds to calm the game down a litte --- .../cs108/gamelogic/ServerGameInfoHandler.java | 14 ++++++++++---- .../ch/unibas/dmi/dbis/cs108/gamelogic/Timer.java | 9 +++++++-- .../dmi/dbis/cs108/gamelogic/VoteHandler.java | 2 -- .../dmi/dbis/cs108/multiplayer/client/Client.java | 1 + .../multiplayer/client/JClientProtocolParser.java | 4 +++- .../multiplayer/client/gui/GameStateModel.java | 1 - .../client/gui/game/GameController.java | 10 +++++----- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java index 5337714..2edb598 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java @@ -36,7 +36,11 @@ public class ServerGameInfoHandler { msg = Protocol.serverRequestsHumanVote + "$" + passenger.getPosition() + "$"; break; default: - msg = Protocol.printToClientConsole + "$" + msg; + if(!msg.contains("$")) { + msg = Protocol.printToClientConsole + "$" + msg; + } else { + msg = msg; + } } LOGGER.debug(msg); return msg; @@ -64,7 +68,11 @@ public class ServerGameInfoHandler { msg = Protocol.printToGUI + "$" + GuiParameters.updateGameState + game.getGameState().toString(); break; default: - msg = Protocol.printToClientConsole + "$" + msg; + if(!msg.contains("$")) { + msg = Protocol.printToClientConsole + "$" + msg; + } else { + msg = msg; + } } LOGGER.debug(msg); return msg; @@ -112,7 +120,6 @@ public class ServerGameInfoHandler { case ClientGameInfoHandler.noiseNotification + 5 + " time(s)": String outMsg = npc.getName() + ": " + noiseRandomizer(); //TODO: add likelyhood - Timer.ghostAfterVoteTimer(); game.getLobby().getAdmin().broadcastNpcChatMessageToLobby(outMsg); game.getLobby().getAdmin().sendMsgToClientsInLobby(Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition + "$" + npc.getPosition()); @@ -137,7 +144,6 @@ public class ServerGameInfoHandler { case ClientGameInfoHandler.noiseNotification + 4 + " time(s)": case ClientGameInfoHandler.noiseNotification + 5 + " time(s)": String outMsg = npc.getName() + ": " + noiseRandomizer(); - Timer.ghostAfterVoteTimer(); game.getLobby().getAdmin().broadcastNpcChatMessageToLobby(outMsg); game.getLobby().getAdmin().sendMsgToClientsInLobby(Protocol.printToGUI + "$" + GuiParameters.noiseHeardAtPosition + "$" + npc.getPosition()); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Timer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Timer.java index d52ec23..cc888d9 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Timer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Timer.java @@ -39,6 +39,11 @@ public class Timer { */ public static final int interval = 1; + /** + * The minimal vote time, in seconds + */ + public static final int minVoteTime = 5; + /** * The timer for the ghost vote. Checks every {@code interval} seconds if every ghost has already voted. * If all have voted or if the {@code ghostVoteTime} value is reached, the timer ends @@ -47,7 +52,7 @@ public class Timer { public static void ghostVoteTimer(Game game) { int counter = 0; while(counter < ghostVoteTime) { - if(haveAllGhostsVoted(game)) { //if all ghost have voted + if(haveAllGhostsVoted(game) && counter > minVoteTime) { //if all ghost have voted return; } try { @@ -62,7 +67,7 @@ public class Timer { public static void humanVoteTimer(Game game) { int counter = 0; while (counter < humanVoteTime) { - if (haveAllHumansVoted(game)) return; + if (haveAllHumansVoted(game) && counter > minVoteTime) return; try { Thread.sleep(interval*1000); } catch (InterruptedException e) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java index 07d3ce3..e7a7a0a 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java @@ -68,7 +68,6 @@ public class VoteHandler { } } LOGGER.info("Most votes for: " + newGhostPosition); - Timer.ghostAfterVoteTimer(); for(Passenger passenger : passengers) { if(passenger.getIsGhost() || passenger.getIsSpectator()) { passenger.send(passengers[newGhostPosition].getName() + ClientGameInfoHandler.gotGhostyfied, game); @@ -87,7 +86,6 @@ public class VoteHandler { walk by is being updated. Finally, each passenger receives information about how often he heard something during this night. The player who's just been ghostified is ignored since he didn't participate in this night's ghostification. */ - Timer.ghostAfterVoteTimer(); int[] noiseAmount = new int[6]; for (int i = 0; i < passengers.length; i++) { if (passengers[i].getIsGhost() && i != newGhostPosition) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index f396a6f..36fe472 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -346,6 +346,7 @@ public class Client { break; case GuiParameters.day: //ClientGameInfoHandler gameStateModel.setDayClone(true); + chatApp.getGameController().setNoiseButtonVisible(); break; case GuiParameters.updateGameState: gameStateModel.setGSFromString(data); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java index 275db4e..41dbad6 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java @@ -39,6 +39,7 @@ public class JClientProtocolParser { c.clientPinger.setGotPingBack(true); break; case Protocol.printToClientConsole: + LOGGER.debug(msg); System.out.println(msg.substring(6)); if (!msg.substring(6).equals("Your vote was invalid")) { c.notificationTextDisplay(msg.substring(6)); @@ -83,8 +84,9 @@ public class JClientProtocolParser { } catch (Exception e) { LOGGER.warn(msg.substring(6)); } + break; default: - System.out.println("Received unknown command"); + System.out.println("Received unknown command: " + msg); } } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java index 164419e..5a4a594 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GameStateModel.java @@ -117,7 +117,6 @@ public class GameStateModel { j = right.indexOf(':'); roles[i] = right.substring(0, j); kickedOff[i] = Boolean.parseBoolean(right.substring(j + 1)); - LOGGER.info(kickedOff[i]); i++; } setPassengerTrainClone(names, roles); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java index 22f5a5c..30f84c5 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java @@ -268,7 +268,7 @@ public class GameController implements Initializable{ if(kickedOff[1]) { role1 = new Text("\nkicked off"); } else { - role1 = new Text("\n" + roles[0]); + role1 = new Text("\n" + roles[1]); } role1.setStyle("-fx-font: 25 arial;"); role1.setFill(Color.WHITE); @@ -276,7 +276,7 @@ public class GameController implements Initializable{ if(kickedOff[2]) { role2 = new Text("\nkicked off"); } else { - role2 = new Text("\n" + roles[0]); + role2 = new Text("\n" + roles[2]); } role2.setStyle("-fx-font: 25 arial;"); role2.setFill(Color.WHITE); @@ -284,7 +284,7 @@ public class GameController implements Initializable{ if(kickedOff[3]) { role3 = new Text("\nkicked off"); } else { - role3 = new Text("\n" + roles[0]); + role3 = new Text("\n" + roles[3]); } role3.setStyle("-fx-font: 25 arial;"); role3.setFill(Color.WHITE); @@ -292,7 +292,7 @@ public class GameController implements Initializable{ if(kickedOff[4]) { role4 = new Text("\nkicked off"); } else { - role4 = new Text("\n" + roles[0]); + role4 = new Text("\n" + roles[4]); } role4.setStyle("-fx-font: 25 arial;"); role4.setFill(Color.WHITE); @@ -300,7 +300,7 @@ public class GameController implements Initializable{ if(kickedOff[5]) { role5 = new Text("\nkicked off"); } else { - role5 = new Text("\n" + roles[0]); + role5 = new Text("\n" + roles[5]); } role5.setStyle("-fx-font: 25 arial;"); role5.setFill(Color.WHITE);