Coverage Summary for Class: Order2 (it.polimi.ingsw.gc14.Model.Orders)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
| Order2 |
100%
(1/1)
|
100%
(3/3)
|
87.5%
(14/16)
|
95.7%
(22/23)
|
package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.OrderLogicCard;
import it.polimi.ingsw.gc14.Model.Player;
import it.polimi.ingsw.gc14.View.TUI.AsciiTable;
import it.polimi.ingsw.gc14.View.TUI.BorderStyle;
import java.util.*;
/**
* Represents the order logic card used in a two-player game.
*
* <p>This class defines the specific turn-order behavior for games with
* two players.
*/
public class Order2 extends OrderLogicCard {
/**
* Creates an Order2 logic card for a two-player game.
*
* @param players the list of players associated with this order card.
* @throws NoSuchElementException if the number of players is not equal to 2.
*/
public Order2(ArrayList<Player> players) throws NoSuchElementException {
super(players);
if(players.size()!=2)
throw new NoSuchElementException();
}
/**
* Applies the effect associated with the specified position index for the given player.
* <p>If {@code index == 0}, the player gains 1 Food and the building effect is applied.
* <p>If {@code index == 1}, the player tries to remove 1 Food; if the player cannot pay it,
* the player loses 2 Prestige.
*
* @param player the player to whom the effect is applied.
* @param index the position index of the effect to apply.
* @throws IndexOutOfBoundsException if {@code index < 0} or {@code index >= 2}.
*/
@Override
protected void effect(Player player,int index) throws IndexOutOfBoundsException
{
if(index >= 2 || index < 0)
{
throw new IndexOutOfBoundsException("index out of bounds");
}
if(index==0)
{
player.addFood(1);
buildingEffect(player);
return;
}
if (!player.removeFood(1)) {
player.removePrestige(2);
}
}
/**
* Creates the TURN ORDER box of the TUI.
* @return the string containing the box
*/
@Override
public String toString()
{
var table = new AsciiTable(BorderStyle.ROUNDED, 2);
List<String> stringUp=new ArrayList<>();
for(int i=0;i<2;i++)
{
try {
if(playerList.get(i).isPlayed())
stringUp.add("");
else
stringUp.add(playerList.get(i).getPlayer().getTotem() != null ? playerList.get(i).getPlayer().getTotem().toString() : playerList.get(i).getPlayer().getUserName());
}
catch (IndexOutOfBoundsException e) {
stringUp.add("");
}
}
table.addRow(stringUp);
List<String> stringList=new ArrayList<>();
stringList.add("+1\uD83C\uDF56");
stringList.add("-1\uD83C\uDF56/-2\uD83C\uDFC5");
table.addRow(stringList);
return table.build() + "\n";
}
}