package pp.mdga.game; import java.util.ArrayList; import java.util.LinkedList; import java.util.Map; /** * The Game class represents the game state of the Ludo game. * It contains all the information needed to play the game. * The game state is updated by the game logic. */ public class Game { private int diceModifier = 1; private int diceEyes; private Map players; private Statistic gameStatistics; private ArrayList drawPile; private ArrayList discardPile = new ArrayList<>(); private Board board; private Color activeColor; private LinkedList order; private Map playerConnectionID; private static final int AMOUNT_OF_TURBO_CARDS = 16; private static final int AMOUNT_OF_SHIELD_AND_SWAP_CARDS = 12; /** * This constructor creates a new Game object. */ public Game(){ gameStatistics = new Statistic(); drawPile = new ArrayList<>(); for (int i = 0; i < AMOUNT_OF_TURBO_CARDS; i++) { drawPile.add(BonusCard.TURBO); } for (int i = 0; i < AMOUNT_OF_SHIELD_AND_SWAP_CARDS; i++) { drawPile.add(BonusCard.SWAP); drawPile.add(BonusCard.SHIELD); } board = new Board(); } /** * This method returns the dice modifier. * * @return the dice modifier */ public int getDiceModifier() { return diceModifier; } /** * This method sets the dice modifier. * * @param diceModifier the new dice modifier */ public void setDiceModifier(int diceModifier) { this.diceModifier = diceModifier; } /** * This method returns the dice eyes. * * @return the dice eyes */ public int getDiceEyes() { return diceEyes; } /** * This method sets the dice eyes. * * @param diceEyes the new dice eyes */ public void setDiceEyes(int diceEyes) { this.diceEyes = diceEyes; } /** * This method returns the players. * * @return the players */ public Map getPlayers() { return players; } /** * This method sets the players. * * @param players the new players */ public void setPlayers(Map players) { this.players = players; } /** * This method returns the game statistics. * * @return the game statistics */ public Statistic getGameStatistics() { return gameStatistics; } /** * This method sets the game statistics. * * @param gameStatistics the new game statistics */ public void setGameStatistics(Statistic gameStatistics) { this.gameStatistics = gameStatistics; } /** * This method returns the draw pile. * * @return the draw pile */ public ArrayList getDrawPile() { return drawPile; } /** * This method sets the draw pile. * * @param drawPile the new draw pile */ public void setDrawPile(ArrayList drawPile) { this.drawPile = drawPile; } /** * This method returns the discard pile. * * @return the discard pile */ public ArrayList getDiscardPile() { return discardPile; } /** * This method sets the discard pile. * * @param discardPile the new discard pile */ public void setDiscardPile(ArrayList discardPile) { this.discardPile = discardPile; } /** * This method returns the board. * * @return the board */ public Board getBoard() { return board; } /** * This method sets the board. * * @param board the new board */ public void setBoard(Board board) { this.board = board; } /** * This method returns the active color. * * @return the active color */ public Color getActiveColor() { return activeColor; } /** * This method sets the active color. * * @param activeColor the new active color */ public void setActiveColor(Color activeColor) { this.activeColor = activeColor; } /** * This method returns the order of the players. * * @return the order of the players */ public LinkedList getOrder() { return order; } /** * This method sets the order of the players. * * @param order the new order of the players */ public void setOrder(LinkedList order) { this.order = order; } /** * This method returns the player connection ID. * * @return the player connection ID */ public Map getPlayerConnectionID() { return playerConnectionID; } /** * This method sets the player connection ID. * * @param playerConnectionID the new player connection ID */ public void setPlayerConnectionID(Map playerConnectionID) { this.playerConnectionID = playerConnectionID; } /** * This method sets the player connection ID. * * @param color the color of the player * @param connectionID the new connection ID */ public void setPlayerConnectionID(Color color, int connectionID) { playerConnectionID.put(color, connectionID); } /** * This method returns the player connection ID. * * @param color the color of the player * @return the player connection ID */ public int getPlayerConnectionID(Color color) { return playerConnectionID.get(color); } /** * This method adds a player to the game. * * @param color the color of the player * @param player the player to be added */ public void addPlayer(Color color, Player player) { players.put(color, player); } /** * This method removes a player from the game. * * @param color the color of the player */ public void removePlayer(Color color) { players.remove(color); } }