Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
1d9ee624fe
@ -40,6 +40,7 @@ public class GameFunctions {
|
|||||||
h.setPosition(train.orderOfTrain[i]);
|
h.setPosition(train.orderOfTrain[i]);
|
||||||
passengerTrain[i] = h;
|
passengerTrain[i] = h;
|
||||||
}
|
}
|
||||||
|
this.passengerTrain = passengerTrain;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getNrOfGhosts() {
|
public int getNrOfGhosts() {
|
||||||
|
|||||||
@ -1,27 +1,27 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.gamelogic;
|
package ch.unibas.dmi.dbis.cs108.gamelogic;
|
||||||
|
|
||||||
|
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
|
||||||
import ch.unibas.dmi.dbis.cs108.gamelogic.klassenstruktur.GhostPlayer;
|
import ch.unibas.dmi.dbis.cs108.gamelogic.klassenstruktur.GhostPlayer;
|
||||||
import ch.unibas.dmi.dbis.cs108.gamelogic.klassenstruktur.Passenger;
|
import ch.unibas.dmi.dbis.cs108.gamelogic.klassenstruktur.Passenger;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
public class GhostifyHandler {
|
public class GhostifyHandler {
|
||||||
|
public static final Logger LOGGER = LogManager.getLogger();
|
||||||
|
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
||||||
/**
|
/**
|
||||||
* Changes passenger at position x to ghost and returns this ghost. Monitors the times the ghost method is being
|
* Changes passenger at position x to ghost and returns this ghost. Monitors the times the ghost method is being
|
||||||
* called. If it's being called for the first time, the ghostified player is being set as the original ghost.
|
* called. If it's being called for the first time, the ghostified player is being set as the original ghost.
|
||||||
*
|
*
|
||||||
* @param p Passenger to be ghostified
|
* @param p Passenger to be ghostified
|
||||||
*/
|
*/
|
||||||
private static int ghostifyCallCounter = -1;
|
|
||||||
|
|
||||||
public GhostPlayer ghost(Passenger p, Game game) {
|
public GhostPlayer ghost(Passenger p, Game game) {
|
||||||
p.setGhost();
|
p.setGhost();
|
||||||
GhostPlayer g;
|
GhostPlayer g;
|
||||||
ghostifyCallCounter++;
|
|
||||||
if (ghostifyCallCounter == 0) {
|
|
||||||
g = new GhostPlayer(p.getPosition(), p.getName(), p.getClientHandler(), true);
|
|
||||||
} else {
|
|
||||||
g = new GhostPlayer(p.getPosition(), p.getName(), p.getClientHandler(), false);
|
g = new GhostPlayer(p.getPosition(), p.getName(), p.getClientHandler(), false);
|
||||||
}
|
|
||||||
game.gameFunctions.passengerTrain[g.getPosition()] = g;
|
game.gameFunctions.passengerTrain[g.getPosition()] = g;
|
||||||
|
LOGGER.info("Passenger at position " + p.getPosition() + "has been ghostified");
|
||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class VoteHandler {
|
|||||||
*
|
*
|
||||||
* @param passengers: passengers on the train
|
* @param passengers: passengers on the train
|
||||||
*/
|
*/
|
||||||
public void ghostVote(Passenger[] passengers, Game game) {
|
public static void ghostVote(Passenger[] passengers, Game game) {
|
||||||
|
|
||||||
// array to collect votes for all players during voting, i.e. votes for player 1 (passengers[0])
|
// array to collect votes for all players during voting, i.e. votes for player 1 (passengers[0])
|
||||||
// are saved in
|
// are saved in
|
||||||
@ -42,13 +42,13 @@ public class VoteHandler {
|
|||||||
// TODO(Seraina): Messages in for-loop should probably be handled by ServerGameInfoHandler
|
// TODO(Seraina): Messages in for-loop should probably be handled by ServerGameInfoHandler
|
||||||
for (Passenger passenger : passengers) {
|
for (Passenger passenger : passengers) {
|
||||||
if (passenger.getIsGhost()) {
|
if (passenger.getIsGhost()) {
|
||||||
LOGGER.info("Send msg to Ghost in Position: " + passenger);
|
|
||||||
passenger.send("Vote on who to ghostify!");
|
passenger.send("Vote on who to ghostify!");
|
||||||
} else {
|
} else {
|
||||||
passenger.send(
|
passenger.send(
|
||||||
"Please wait, ghosts are active"); // TODO(Seraina): make sure whatever clients send in
|
"Please wait, ghosts are active"); // TODO(Seraina): make sure whatever clients send in
|
||||||
// this time, except chat is ignored
|
// this time, except chat is ignored
|
||||||
LOGGER.info("Send msg to Human in Position: " + passenger);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ public class VoteHandler {
|
|||||||
currentMax = votesForPlayer;
|
currentMax = votesForPlayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOGGER.info("Most votes" + currentMax);
|
LOGGER.info("Most votes: " + currentMax + " vote");
|
||||||
|
|
||||||
// ghostify the player with most votes
|
// ghostify the player with most votes
|
||||||
int ghostPosition = 0;
|
int ghostPosition = 0;
|
||||||
@ -105,7 +105,8 @@ public class VoteHandler {
|
|||||||
*
|
*
|
||||||
* @param passengers: train passengers
|
* @param passengers: train passengers
|
||||||
*/
|
*/
|
||||||
public void humanVote(Passenger[] passengers, Game game) {
|
public static void humanVote(Passenger[] passengers, Game game) {
|
||||||
|
|
||||||
|
|
||||||
// array to collect votes for all players during voting, i.e. votes for player 1 are saved in
|
// array to collect votes for all players during voting, i.e. votes for player 1 are saved in
|
||||||
// votesForPlayers[0]
|
// votesForPlayers[0]
|
||||||
@ -181,9 +182,53 @@ public class VoteHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// set hasVoted to false for all passengers for future votings
|
// set hasVoted to false for all passengers for future voting
|
||||||
for (Passenger passenger : passengers) {
|
for (Passenger passenger : passengers) {
|
||||||
passenger.setHasVoted(false);
|
passenger.setHasVoted(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print(Passenger[] array) {
|
||||||
|
System.out.println();
|
||||||
|
String[] print = new String[6];
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
if(array[i].getIsGhost()) {
|
||||||
|
print[i] = "| ghost |";
|
||||||
|
} else {
|
||||||
|
print[i] = "| human |";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
System.out.print(print[i]);
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
Game game = new Game(6,1, 6);
|
||||||
|
|
||||||
|
Passenger[] testArray = game.gameFunctions.passengerTrain;
|
||||||
|
Passenger ghost = new Ghost();
|
||||||
|
testArray[3] = ghost;
|
||||||
|
testArray[3].setGhost();
|
||||||
|
testArray[3].setIsOg();
|
||||||
|
print(testArray);
|
||||||
|
LOGGER.info("NIGHT");
|
||||||
|
ghostVote(testArray,game);
|
||||||
|
print(testArray);
|
||||||
|
|
||||||
|
LOGGER.info("Day");
|
||||||
|
humanVote(testArray, game);
|
||||||
|
print(testArray);
|
||||||
|
|
||||||
|
} catch (TrainOverflow e) {
|
||||||
|
LOGGER.warn(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ public class Passenger {
|
|||||||
**/
|
**/
|
||||||
public void send(String msg) {
|
public void send(String msg) {
|
||||||
if (msg.equals("Vote on who to ghostify!") || msg.equals("Vote for a ghost to kick off!")) {
|
if (msg.equals("Vote on who to ghostify!") || msg.equals("Vote for a ghost to kick off!")) {
|
||||||
vote = (int) (Math.random() * 6);
|
vote = 1;
|
||||||
hasVoted = true; // for testing, when is it set to false again?
|
hasVoted = true; // for testing, when is it set to false again?
|
||||||
LOGGER.info("Voted for Position " + vote);
|
LOGGER.info("Voted for Position " + vote);
|
||||||
} else {
|
} else {
|
||||||
@ -76,6 +76,10 @@ public class Passenger {
|
|||||||
hasVoted = voted;
|
hasVoted = voted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setIsOg() {
|
||||||
|
isOG = true;
|
||||||
|
}
|
||||||
|
|
||||||
public int getPosition() {
|
public int getPosition() {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package ch.unibas.dmi.dbis.cs108.sebaschi;
|
|||||||
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
|
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
|
||||||
import ch.unibas.dmi.dbis.cs108.gamelogic.Game;
|
import ch.unibas.dmi.dbis.cs108.gamelogic.Game;
|
||||||
import ch.unibas.dmi.dbis.cs108.multiplayer.client.Client;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.client.Client;
|
||||||
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -11,7 +12,7 @@ import org.apache.logging.log4j.Logger;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This Class Represents an Object containing different Maps, Lists and Sets wherein a server object
|
* This Class Represents an Object containing different Maps, Lists and Sets wherein a server object
|
||||||
* can find all needed data. An instance of this object can also be passed to other class-objects uf
|
* can find all needed data. An instance of this object can also be passed to other class-objects if
|
||||||
* they need the same data. This Class is used to query for information in collections.
|
* they need the same data. This Class is used to query for information in collections.
|
||||||
*/
|
*/
|
||||||
public class CentralServerData {
|
public class CentralServerData {
|
||||||
@ -19,11 +20,11 @@ public class CentralServerData {
|
|||||||
public static final Logger LOGGER = LogManager.getLogger();
|
public static final Logger LOGGER = LogManager.getLogger();
|
||||||
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
||||||
|
|
||||||
private Set<Client> clientsOnServer;
|
private Set<ClientHandler> clientsOnServer;
|
||||||
private Set<Game> activeGames;
|
private Set<Game> activeGames;
|
||||||
private Set<Game> gamesOpenToJoin;
|
private Set<Game> gamesOpenToJoin;
|
||||||
|
|
||||||
private Map<Client, Socket> clientSocketMap;
|
private Map<ClientHandler, Socket> clientSocketMap;
|
||||||
private Map<Socket, Client> socketClientMap;
|
private Map<Socket, ClientHandler> socketClientMap;
|
||||||
private Map<Game, Client> gameClientMap;
|
private Map<Game, ClientHandler> gameClientMap;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,57 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.sebaschi;
|
package ch.unibas.dmi.dbis.cs108.sebaschi;
|
||||||
|
|
||||||
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Lobby one is in after a client sends the CRTGM command. THe Server
|
||||||
|
*/
|
||||||
public class Lobby {
|
public class Lobby {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Person who created the game and can configure it and decide to start once enough players
|
||||||
|
* have entered the lobby.
|
||||||
|
*/
|
||||||
|
private final ClientHandler admin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Everyone who's in the lobby.
|
||||||
|
*/
|
||||||
|
private List<ClientHandler> players = new ArrayList<>();
|
||||||
|
|
||||||
|
private static final int MAX_NO_OF_CLIENTS = 6;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The admin has to be set in the constructor. The admin is final.
|
||||||
|
* Every Lobby needs and admin, so no other constructors are needed.
|
||||||
|
* @param admin the Client who called CRTGM
|
||||||
|
*/
|
||||||
|
public Lobby(ClientHandler admin) {
|
||||||
|
this.admin = admin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter
|
||||||
|
*
|
||||||
|
* @return the admin of the lobby.
|
||||||
|
*/
|
||||||
|
public ClientHandler getAdmin() {
|
||||||
|
return this.admin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a player to the lobby.
|
||||||
|
* @param player who wants to join the lobby.
|
||||||
|
*/
|
||||||
|
public void addPlayer(ClientHandler player) {
|
||||||
|
players.add(player);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user