Coverage Summary for Class: InfoUI (it.polimi.ingsw.Client.CLI)

Class Class, % Method, % Branch, % Line, %
InfoUI 0% (0/1) 0% (0/3) 0% (0/12) 0% (0/24)


1 package it.polimi.ingsw.Client.CLI; 2  3 import it.polimi.ingsw.Misc.Symbols; 4 import it.polimi.ingsw.Model.Enums.GameMode; 5 import it.polimi.ingsw.Model.Model; 6 import it.polimi.ingsw.Model.PlayerBoard; 7 import it.polimi.ingsw.Model.StudentBag; 8 import it.polimi.ingsw.Model.TurnOrder; 9  10 import java.util.List; 11  12 /** 13  * InfoUI is a graphical informative component (as a String data structure) 14  * useful to print details about the {@link TurnOrder} 15  * and the {@link StudentBag} 16  */ 17 public class InfoUI { 18  19  /** 20  * It will provide the players with a summary about the turn order, it will show the current and next players in 21  * line and highlight if you are one of them. 22  * <br> 23  * It also shows the number of remaining coins if the game is in advanced mode. 24  * 25  * @param ctx reference to the model used to access {@link Model#getMutableTurnOrder()} 26  * @param caller the player to whom the information will be displayed. It is used to highlight if you are 27  * the current or next player 28  * @return a visual description of useful information for the players: turns and coins 29  */ 30  public static String draw(Model ctx, String caller) { 31  String info = ""; 32  PlayerBoard currentPlayer = ctx.getMutableTurnOrder().getMutableCurrentPlayer(); 33  List<PlayerBoard> turnOrder = ctx.getMutableTurnOrder().getCurrentTurnOrder(); 34  35  // Prints the current player 36  if (caller.equals(currentPlayer.getNickname())) { 37  // Highlight whether the current player is the person to which the console is shown 38  info = info + currentPlayer.getNickname() + " is your turn!\n"; 39  } else 40  info = info + "It's " + currentPlayer.getNickname() + "'s turn\n"; 41  42  // Prints the next player 43  if (turnOrder.indexOf(currentPlayer) < turnOrder.size() - 1) { 44  String nextPlayer = turnOrder.get(turnOrder.indexOf(currentPlayer) + 1).getNickname(); 45  if (caller.equals(nextPlayer)) { 46  // Highlight whether the next player is the person to which the console is shown 47  info = info + "Next player: you \n"; 48  } else info = info + "Next player: " + nextPlayer + "\n"; 49  } else { 50  // This loops around the list of players to address the fact that the next player after the last one 51  // is the first one in line 52  String nextPlayer = turnOrder.get(0).getNickname(); // the first element in the list of players 53  if (caller.equals(nextPlayer)) { 54  info = info + "Next player: you \n"; 55  } else info = info + "Next player: " + nextPlayer + "\n"; 56  } 57  // Prints the coins left if the game mode is advanced 58  if (ctx.getGameMode().equals(GameMode.ADVANCED)) { 59  switch (ctx.getCoinReserve()) { 60  case 0 -> info = info + "There are no coins left"; 61  case 1 -> info = info + "There is 1 coin left"; 62  case default -> info = info + "There are " + ctx.getCoinReserve() + " coins left\n"; 63  } 64  } 65  return info; 66  } 67  68  public static String showActions() { 69  return "\tIf you are stuck, enter " + Symbols.BOLD + "`showActions` " + Symbols.RESET + Symbols.BACKGROUND; 70  } 71 }