From 46f75d3292845d5d482660d7faad021559e8aaca Mon Sep 17 00:00:00 2001 From: Seraina Date: Sat, 9 Apr 2022 11:53:43 +0200 Subject: [PATCH] Made the whole thing a bit more orderly, added several loggers --- .../ch/unibas/dmi/dbis/cs108/gamelogic/Game.java | 2 ++ .../unibas/dmi/dbis/cs108/gamelogic/GameState.java | 2 +- .../dmi/dbis/cs108/gamelogic/VoteHandler.java | 14 ++++++++------ .../cs108/gamelogic/klassenstruktur/Passenger.java | 3 +++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Game.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Game.java index 380f4da..5339c9e 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Game.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Game.java @@ -103,9 +103,11 @@ public class Game implements Runnable { i = 0; while (true) { //ToDo: was ist die Abbruchbedingung? VoteHandler muss das schicken. if (!isDay) { + LOGGER.info("NIGHT"); voteHandler.ghostVote(gameState.getPassengerTrain(), this); setDay(true); } else { + LOGGER.info("DAY"); gameOverCheck = voteHandler.humanVote(gameState.getPassengerTrain(), this); } if (gameOverCheck.equals("Game over: ghosts win!") || gameOverCheck.equals( diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java index 495cfb0..c6eb67e 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/GameState.java @@ -110,7 +110,7 @@ public class GameState { StringBuilder stringBuilder = new StringBuilder(); String[] print = new String[6]; for (int i = 0; i < array.length; i++) { - print[i] = "| " + array[i].getName() + ": " + array[i].getPosition() + "|"; + print[i] = "| " + array[i].getName() + ": " + array[i].getPosition() + "|"; } for (int i = 0; i < array.length; i++) { 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 9dedf84..41362bc 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 @@ -40,14 +40,13 @@ public class VoteHandler { int[] votesForPlayers = new int[6]; // Walk through entire train, ask ghosts to ghostify and humans to wait - // TODO(Seraina): Messages in for-loop should probably be handled by ServerGameInfoHandler for (Passenger passenger : passengers) { if (passenger.getIsGhost()) { passenger.send("Vote on who to ghostify!", game); } else { passenger.send( - "Please wait, ghosts are active", game); // TODO(Seraina): make sure whatever clients send in + "Please wait, ghosts are active", game); // this time, except chat is ignored } @@ -56,14 +55,16 @@ public class VoteHandler { try { // waits 20 seconds before votes get collected Thread.sleep(30*1000); } catch (InterruptedException e) { - Thread.currentThread().interrupt(); + LOGGER.warn("Thread " + Thread.currentThread() + " was interrupted"); } + for (Passenger passenger : passengers) { // collecting the votes - distribute them among the vote counters for all players // Note: Each voting collects votes for all players even though some might not be concerned // (i.e. ghosts during ghost vote). Those players will then get 0 votes so it doesn't matter. // TODO: Perhaps the vote results should be handled by ClientGameInfoHandler + passenger.getVoteFromClientHandler(); if (passenger.getHasVoted()) { for (int i = 0; i < votesForPlayers.length; i++) { if (passenger.getVote() == i) { @@ -135,7 +136,7 @@ public class VoteHandler { try { // waits 20 seconds before votes get collected Thread.sleep(30*1000); } catch (InterruptedException e) { - Thread.currentThread().interrupt(); + LOGGER.warn("Thread " + Thread.currentThread() + " was interrupted"); } for (Passenger passenger : passengers) { @@ -143,8 +144,10 @@ public class VoteHandler { // TODO: Perhaps the vote results should be handled by ClientGameInfoHandler if (passenger.getHasVoted()) { for (int i = 0; i < votesForPlayers.length; i++) { + LOGGER.info("Passenger: " + passenger.getPosition() + " voted for: " + passenger.getVote() ); if (passenger.getVote() == i) { votesForPlayers[i]++; + } } } @@ -156,7 +159,6 @@ public class VoteHandler { for (int votesForPlayer : votesForPlayers) { if (votesForPlayer > currentMax) { currentMax = votesForPlayer; - LOGGER.info("Max amount of votes: " + currentMax); } } // deal with voting results @@ -164,9 +166,9 @@ public class VoteHandler { for (int i = 0; i < votesForPlayers.length; i++) { if (votesForPlayers[i] == currentMax) { // if player has most votes voteIndex = i; - LOGGER.info("Player " + voteIndex + " has the most votes"); } } + LOGGER.info("Player " + voteIndex + " has the most votes"); if (!passengers[voteIndex] .getIsGhost()) { // if player with most votes is human, notify everyone about it for (Passenger passenger : passengers) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/Passenger.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/Passenger.java index 12167e9..333ce24 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/Passenger.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/Passenger.java @@ -109,6 +109,9 @@ public class Passenger { return clientHandler; } + /** + * When called by NPC nothing should happen, because clientHandler = null + */ public void getVoteFromClientHandler() { }