From 98a2fdb082e72ce5a706e1ca321ad300af175096 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 17 Mar 2022 14:05:27 +0100 Subject: [PATCH 1/3] Added Passenger, Ghost, GhostNPC classes --- .../dmi/dbis/cs108/Klassenstruktur/Ghost.java | 4 ++ .../dbis/cs108/Klassenstruktur/GhostNPC.java | 14 +++++ .../dbis/cs108/Klassenstruktur/Passenger.java | 56 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java new file mode 100644 index 0000000..5a26664 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java @@ -0,0 +1,4 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class Ghost extends Passenger { +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java new file mode 100644 index 0000000..51986ed --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java @@ -0,0 +1,14 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class GhostNPC extends Ghost{ + + public GhostNPC(int position, String name) { + this.position = position; + isGhost = true; + isPlayerCharacter = false; + kickedOff = false; + if (name == null) { + this.name = "Robot Nr. " + position; + } else this.name = name; + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java new file mode 100644 index 0000000..7d59019 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java @@ -0,0 +1,56 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class Passenger { + protected int position; //the player's Cabin number (1 to 6) + protected String name; //the player's Name + protected Boolean isGhost; //boolean regarding if the player is a ghost. Could probably be removed since ghost is a subclass but I'm keeping it in. + protected Boolean isPlayerCharacter; //same here + protected Boolean kickedOff; //true if the player has been voted off. + + //todo: there needs to be some variable which keeps track of which client socket / clientThread / NPC thread this passenger is connected to? + + + /** + * Sends a protocol message to the respective player. + * @param msg the message that is sent to this player. + **/ + public void send(String msg) { + //todo: send protocol message to the respective client + } + + /** + * sets the name of this passenger. + * @param name the new name for this passenger. + */ + public void setName(String name) { + this.name = name; + } + + /** + * sets the kickedOff status of this Passenger + * @param kickedOff should be set to true if the passenger has been kicked off. + */ + public void setKickedOff(boolean kickedOff) { + this.kickedOff = kickedOff; + } + + public int getPosition() { + return position; + } + + public String getName() { + return name; + } + + public Boolean getIsGhost() { + return isGhost; + } + + public Boolean getKickedOff() { + return kickedOff; + } + + public Boolean getPlayerCharacter() { + return isPlayerCharacter; + } +} From f2c1cbc17cf4e2a65741e6c22a29307ce07b0972 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 17 Mar 2022 14:27:54 +0100 Subject: [PATCH 2/3] added all needed subclasses, worked on Ghost classes. --- .../dmi/dbis/cs108/Klassenstruktur/Ghost.java | 5 ++++ .../dbis/cs108/Klassenstruktur/GhostNPC.java | 10 +++++++- .../cs108/Klassenstruktur/GhostPlayer.java | 25 +++++++++++++++++++ .../dmi/dbis/cs108/Klassenstruktur/Human.java | 4 +++ .../dbis/cs108/Klassenstruktur/HumanNPC.java | 5 ++++ .../cs108/Klassenstruktur/HumanPlayer.java | 4 +++ .../dbis/cs108/Klassenstruktur/Passenger.java | 5 ++-- 7 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Human.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanNPC.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanPlayer.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java index 5a26664..9e5fc16 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Ghost.java @@ -1,4 +1,9 @@ package ch.unibas.dmi.dbis.cs108.Klassenstruktur; public class Ghost extends Passenger { + protected boolean isOG; //true if the Ghost is the original ghost. + + public boolean getIsOG() { + return isOG; + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java index 51986ed..6f5ee69 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java @@ -2,8 +2,16 @@ package ch.unibas.dmi.dbis.cs108.Klassenstruktur; public class GhostNPC extends Ghost{ - public GhostNPC(int position, String name) { + /** + * Creates a new GhostNPC. Should be used at game start or if a HumanNPC is turned into a ghost. + * @param position position on the train + * @param name player name. if null, then a default name is used. + * @param isOG true if the ghost is the original ghost. + */ + public GhostNPC(int position, String name, boolean isOG) { + this.isOG = isOG; this.position = position; + this.sock = null; isGhost = true; isPlayerCharacter = false; kickedOff = false; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java new file mode 100644 index 0000000..a2a7216 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java @@ -0,0 +1,25 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +import java.net.Socket; + +public class GhostPlayer extends Ghost{ + + /** + * Creates a new GhostPlayer. Should be used at game start or if a HumanPlayer is turned into a ghost. + * @param position position on the train + * @param name name. if null, then a default name is used. + * @param sock the socket for the player. + * @param isOG true if the ghost is the original ghost. + */ + public GhostPlayer(int position, String name, Socket sock, boolean isOG) { + this.position = position; + this.sock = sock; + this.isOG = isOG; + isGhost = true; + isPlayerCharacter = true; + kickedOff = false; + if (name == null) { + this.name = "Human Nr. " + position; + } else this.name = name; + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Human.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Human.java new file mode 100644 index 0000000..eeda085 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Human.java @@ -0,0 +1,4 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class Human extends Passenger { +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanNPC.java new file mode 100644 index 0000000..87c47cd --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanNPC.java @@ -0,0 +1,5 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class HumanNPC extends Human { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanPlayer.java new file mode 100644 index 0000000..f968ac9 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/HumanPlayer.java @@ -0,0 +1,4 @@ +package ch.unibas.dmi.dbis.cs108.Klassenstruktur; + +public class HumanPlayer extends Human{ +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java index 7d59019..f0171ba 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java @@ -1,13 +1,14 @@ package ch.unibas.dmi.dbis.cs108.Klassenstruktur; +import java.net.Socket; + public class Passenger { protected int position; //the player's Cabin number (1 to 6) protected String name; //the player's Name protected Boolean isGhost; //boolean regarding if the player is a ghost. Could probably be removed since ghost is a subclass but I'm keeping it in. protected Boolean isPlayerCharacter; //same here protected Boolean kickedOff; //true if the player has been voted off. - - //todo: there needs to be some variable which keeps track of which client socket / clientThread / NPC thread this passenger is connected to? + protected Socket sock; //the socket for the client associated with this Passenger, for NPCs, this can be null. /** From 166dc5151bc435d945bd4b93237fe266b21448d7 Mon Sep 17 00:00:00 2001 From: Jonas Date: Thu, 17 Mar 2022 14:56:29 +0100 Subject: [PATCH 3/3] small adjustments & comments to passenger & subclasses --- .../unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java | 2 +- .../dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java | 6 +++++- .../unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java | 9 +++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java index 6f5ee69..7d80968 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostNPC.java @@ -13,7 +13,7 @@ public class GhostNPC extends Ghost{ this.position = position; this.sock = null; isGhost = true; - isPlayerCharacter = false; + isPlayer = false; kickedOff = false; if (name == null) { this.name = "Robot Nr. " + position; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java index a2a7216..3ee1b9c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/GhostPlayer.java @@ -16,10 +16,14 @@ public class GhostPlayer extends Ghost{ this.sock = sock; this.isOG = isOG; isGhost = true; - isPlayerCharacter = true; + isPlayer = true; kickedOff = false; if (name == null) { this.name = "Human Nr. " + position; } else this.name = name; } + + public void send(String msg) { + //todo: pass message along to client. + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java index f0171ba..e53eccf 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Klassenstruktur/Passenger.java @@ -6,9 +6,10 @@ public class Passenger { protected int position; //the player's Cabin number (1 to 6) protected String name; //the player's Name protected Boolean isGhost; //boolean regarding if the player is a ghost. Could probably be removed since ghost is a subclass but I'm keeping it in. - protected Boolean isPlayerCharacter; //same here + protected Boolean isPlayer; //same here protected Boolean kickedOff; //true if the player has been voted off. protected Socket sock; //the socket for the client associated with this Passenger, for NPCs, this can be null. + //todo: maybe this should be a thread or some class instead of a socket? depends on client-server structure... /** @@ -16,7 +17,7 @@ public class Passenger { * @param msg the message that is sent to this player. **/ public void send(String msg) { - //todo: send protocol message to the respective client + //todo: send protocol message to the respective client OR process messages for NPCS } /** @@ -51,7 +52,7 @@ public class Passenger { return kickedOff; } - public Boolean getPlayerCharacter() { - return isPlayerCharacter; + public Boolean getIsPlayer() { + return isPlayer; } }