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 ba640a2..243ac36 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 @@ -58,6 +58,8 @@ public class Game implements Runnable { return nrOfUsers; } + public boolean getIsDay() {return isDay;} + public void setDay(boolean day) { isDay = day; } 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 965c69f..c11cd80 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 @@ -81,6 +81,11 @@ public class GameState { } + /** + * Converts the data in this passengerTrain into a human-readable string, + * where one can see who is a ghost and who is a human, who is a player and who an NPC + * @return a String that displays passengerTrain + */ public String toString() { Passenger[] array = passengerTrain; StringBuilder stringBuilder = new StringBuilder(); @@ -111,6 +116,12 @@ public class GameState { return stringBuilder.toString(); } + /** + * Converts the data in this passengerTrain into a human-readable string, but it is anonymised for + * human players, so it is not obvious who is a human and who a ghost, only names and positions + * are displayed + * @return the String displaying an anonymised passengerTrain + */ public String humanToString() { Passenger[] array = passengerTrain; StringBuilder stringBuilder = new StringBuilder(); 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 2fd184d..e43d7cc 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 @@ -34,9 +34,9 @@ public class ServerGameInfoHandler { msg = Protocol.serverRequestsHumanVote + "$" + p.getPosition() +"$"+ game.gameState.humanToString(); break; default: - msg = Protocol.printToClientConsole + "$" + p.getPosition() +"$"+ msg; + msg = Protocol.printToClientConsole + "$"+ msg; } - LOGGER.info(msg); + LOGGER.debug(msg); return msg; } 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 5ff7192..2c56d43 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 @@ -72,17 +72,16 @@ public class VoteHandler { } - for (Passenger passenger : passengers) { + for (Passenger passenger : passengers) { //TODO: could be outsourced to a method to increase readability // 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.getVoteFromGameState(clientVoteData); + passenger.getVoteFromGameState(clientVoteData, game); if (passenger.getHasVoted()) { for (int i = 0; i < votesForPlayers.length; i++) { if (passenger.getVote() == i) { votesForPlayers[i]++; - LOGGER.info(passengers[i] + " has received a vote"); } } } @@ -96,18 +95,18 @@ public class VoteHandler { currentMax = votesForPlayer; } } - LOGGER.info("Most votes: " + currentMax + " vote"); + LOGGER.debug("Most votes: " + currentMax + " vote"); // ghostify the player with most votes int ghostPosition = 0; for (int i = 0; i < votesForPlayers.length; i++) { if (votesForPlayers[i] == currentMax) { // if player at position i has most votes ghostPosition = i; - LOGGER.info("Most votes for Passenger " + i); + LOGGER.debug("Most votes for Passenger " + i); } } - LOGGER.debug("ghostPosition: " + ghostPosition); + LOGGER.info("Most votes for: " + ghostPosition); GhostifyHandler gh = new GhostifyHandler(); Ghost g = gh.ghost(passengers[ghostPosition], game); passengers[ghostPosition] = g; @@ -154,7 +153,7 @@ public class VoteHandler { } for (Passenger passenger : passengers) { - passenger.getVoteFromGameState(clientVoteData); + passenger.getVoteFromGameState(clientVoteData, game); // collecting the votes - distribute them among the vote counters for all players // TODO: Perhaps the vote results should be handled by ClientGameInfoHandler if (passenger.getHasVoted()) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java index 363bf0a..72f865d 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/GhostPlayer.java @@ -45,7 +45,7 @@ public class GhostPlayer extends Ghost { * Sets clientHandler fields to default: vote = Integer.MAX_VALUE , hasVoted = false */ @Override - public void getVoteFromGameState(ClientVoteData clientVoteData) { + public void getVoteFromGameState(ClientVoteData clientVoteData, Game game) { vote = clientVoteData.getVote()[position]; hasVoted = clientVoteData.getHasVoted()[position]; clientVoteData.setVote(position,Integer.MAX_VALUE); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanPlayer.java index ac512f3..b7e714f 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanPlayer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/klassenstruktur/HumanPlayer.java @@ -43,20 +43,22 @@ public class HumanPlayer extends Human { * Sets clientHandler fields to default: vote = Integer.MAX_VALUE , hasVoted = false */ @Override - public void getVoteFromGameState(ClientVoteData clientVoteData) { - LOGGER.debug(Arrays.toString(clientVoteData.getVote())); - LOGGER.info("method was called by: " + position); - vote = clientVoteData.getVote()[position]; - LOGGER.info("Human at Pos: " + position + " has voted for: " + vote); - hasVoted = clientVoteData.getHasVoted()[position]; - LOGGER.debug(Arrays.toString(clientVoteData.getVote())); - //clientVoteData.setVote(position,Integer.MAX_VALUE); - //clientVoteData.setHasVoted(position,false); - /* - * if vote wasn't valid, make sure, the passenger field hasVoted == false, probably redundant but better be safe than sorry - */ - if(vote == Integer.MAX_VALUE) { - hasVoted = false; + public void getVoteFromGameState(ClientVoteData clientVoteData, Game game) { + if(game.getIsDay()) { + LOGGER.debug(Arrays.toString(clientVoteData.getVote())); + LOGGER.debug("method was called by: " + position); + vote = clientVoteData.getVote()[position]; + LOGGER.info("Human at Pos: " + position + " has voted for: " + vote); + hasVoted = clientVoteData.getHasVoted()[position]; + LOGGER.debug(Arrays.toString(clientVoteData.getVote())); + clientVoteData.setVote(position, Integer.MAX_VALUE); + clientVoteData.setHasVoted(position, false); + /* + * if vote wasn't valid, make sure, the passenger field hasVoted == false, probably redundant but better be safe than sorry + */ + if (vote == Integer.MAX_VALUE) { + hasVoted = false; + } } } } 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 449c53b..a595bac 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 @@ -112,8 +112,8 @@ public class Passenger { /** * When called by NPC nothing should happen, because clientHandler = null */ - public void getVoteFromGameState(ClientVoteData clientVoteData) { - //LOGGER.debug("a NPC called this method hopefully: " + position); + public void getVoteFromGameState(ClientVoteData clientVoteData,Game game) { + LOGGER.debug("a NPC called this method hopefully: " + position); } } 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 f63b2aa..db6c3eb 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 @@ -97,7 +97,7 @@ public class Client { input = String.valueOf(Integer.MAX_VALUE); } sendMsgToServer(Protocol.votedFor + "$" + position + "$" + input); - LOGGER.info("msg to server is: " + Protocol.votedFor + "$" + position + "$" + input); + LOGGER.debug("msg to server is: " + Protocol.votedFor + "$" + position + "$" + input); } 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 a3e1462..0789616 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 @@ -43,12 +43,14 @@ public class JClientProtocolParser { c.disconnectFromServer(); break; case Protocol.serverRequestsGhostVote: - System.out.println("Ghost received Vote request"); + LOGGER.debug("Ghost received Vote request"); + System.out.println("Ghost Vote:"); c.voteGetter(msg.substring(6)); //TODO(Seraina): How can be enforced, that clients won't vote otherwise? Trigger a methode here that listens to input break; case Protocol.serverRequestsHumanVote: - LOGGER.info("Human received Vote request"); + LOGGER.debug("Human received Vote request"); + System.out.println("Human Vote:"); c.voteGetter(msg.substring(6)); //TODO(Seraina): How can be enforced, that clients won't vote otherwise? Trigger a methode here that listens to input break;