From 401b3bec52b8290cef3023ca2d49a5cbdab0e2af Mon Sep 17 00:00:00 2001 From: Seraina Date: Fri, 1 Apr 2022 12:20:08 +0200 Subject: [PATCH] Added Handler skeletons concerning game logic and instructions on how to implement them --- .../gamelogic/ClientGameInfoHandler.java | 11 ++++++++++ .../unibas/dmi/dbis/cs108/gamelogic/Game.java | 1 + .../dbis/cs108/gamelogic/NoiseHandler.java | 10 +++++++++ .../gamelogic/ServerGameInfoHandler.java | 12 ++++++++++ .../dmi/dbis/cs108/gamelogic/Train.java | 14 +++--------- .../dmi/dbis/cs108/gamelogic/VoteHandler.java | 22 +++++++++++++++++++ 6 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ClientGameInfoHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ClientGameInfoHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ClientGameInfoHandler.java new file mode 100644 index 0000000..7c489cf --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ClientGameInfoHandler.java @@ -0,0 +1,11 @@ +package ch.unibas.dmi.dbis.cs108.gamelogic; + +/** + * Handles all communication Client to Server concerning games tate updates i.e. client a has voted + * Maybe unnecessary, everything that is needed might already be implemented in ClientHandler. + * We might only need to extend the protocol and its parser. + */ + +public class ClientGameInfoHandler { + +} 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 ffee4d2..7b11695 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 @@ -15,6 +15,7 @@ public class Game { protected int nrOfGhosts; // sets how many Ghosts we start witch protected int nrOfUsers; // safes how many clients are active in this Game protected GameFunctions gameFunctions; + //TODO: Figure out where Day/Night game state is saved maybe think about a game state class or smt. /** * Constructs a Game instance where: * diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java new file mode 100644 index 0000000..0b3fc50 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/NoiseHandler.java @@ -0,0 +1,10 @@ +package ch.unibas.dmi.dbis.cs108.gamelogic; + +/** + * Determines who heard something (via Passenger Array currently in GameFunctions 'passengerTrain') + * and broadcasts noise message to them (via ServerGameInfoHandler) + */ + +public class NoiseHandler { + +} 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 new file mode 100644 index 0000000..a16fe25 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java @@ -0,0 +1,12 @@ +package ch.unibas.dmi.dbis.cs108.gamelogic; + +/** + * Handles all communications Server to Client concerning game state or game state related requests + * - Needs a possibility to only send to Ghosts + * - and only humans + * TODO: Figure out what format the messages have, consider protocol add what is needed dont forget about parsing + */ + +public class ServerGameInfoHandler { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Train.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Train.java index 821b822..7449484 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Train.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/Train.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.gamelogic; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import java.util.Arrays; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -43,7 +44,7 @@ public class Train { } } - LOGGER.debug("A bug"); + LOGGER.info("The userTrain order is: " + Arrays.toString(userTrain)); this.orderOfTrain = userTrain; this.positionOfGhost = nrOfPlayers / 2; } @@ -63,23 +64,14 @@ public class Train { } i++; } - LOGGER.info("An information"); return false; } public static void main(String[] args) { - int[] a = {1, 2, 3, 4, 5}; - System.out.println(isInArray(a, 0)); - //Test try { Train t = new Train(6, 1); - for (int i = 0; i < 6; i++) { - System.out.print("|" + t.orderOfTrain[i] + "|"); - } - System.out.println(" Ghost:" + t.positionOfGhost); - } catch (TrainOverflow e) { - System.out.println(e.getMessage()); + LOGGER.error(e.getMessage()); } } 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 new file mode 100644 index 0000000..ba18e2a --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/VoteHandler.java @@ -0,0 +1,22 @@ +package ch.unibas.dmi.dbis.cs108.gamelogic; + +/** + * Handles the Event of Voting for Humans and Ghosts. Differentiates between day and night (human Ghost) and handles votes accordingly. + * - Sends voting request to passengers that need to be concerned + * - collects voting results + * - calculates who was voted for + * - decides consequence of vote: + * - Is Og Ghost: Humans win + * - Is last Human: Ghosts win + * - Is just a human: Message "x is a human" + * - Is a peasant Ghost -> kickoff + * + * (All messages going to Clients are handled via ServerGameInfoHandler) + * + * TODO: Think about if the timer needs to be implemented here or in the Game class + */ + +public class VoteHandler { + + +}