Coverage Summary for Class: CharacterCardInput (it.polimi.ingsw.Model)

Class Class, % Method, % Branch, % Line, %
CharacterCardInput 100% (1/1) 100% (8/8) 100% (6/6) 100% (12/12)


1 package it.polimi.ingsw.Model; 2  3 import it.polimi.ingsw.Misc.OptionalValue; 4 import it.polimi.ingsw.Misc.Pair; 5 import it.polimi.ingsw.Model.Enums.PawnColour; 6  7 import java.io.Serial; 8 import java.io.Serializable; 9 import java.util.List; 10  11 /** 12  * Each {@link CharacterCard} can use many input parameters. This class serves as a way to group all possible inputs and 13  * edit them in a safe, coherent way. 14  */ 15 public class CharacterCardInput implements Serializable { 16  @Serial 17  private static final long serialVersionUID = 116L; // convention: 1 for model, (01 -> 99) for objects 18  private final PlayerBoard caller; 19  private Island targetIsland; 20  private PawnColour targetPawn; 21  private List<Pair<PawnColour, PawnColour>> targetPawnPairs; 22  23  /** 24  * Constructor for the base input of the card. 25  * 26  * @param caller each card requires the caller's {@link PlayerBoard} as an input. 27  */ 28  public CharacterCardInput(PlayerBoard caller) { 29  this.caller = caller; 30  } 31  32  /** 33  * @return the caller's {@link PlayerBoard} 34  */ 35  public PlayerBoard getCaller() { 36  return caller; 37  } 38  39  /** 40  * @return the {@link Island} set as a target. The value is wrapped in a {@link OptionalValue}, as the related input is not 41  * compulsory 42  */ 43  public OptionalValue<Island> getTargetIsland() { 44  if (this.targetIsland == null) return OptionalValue.empty(); 45  else return OptionalValue.of(targetIsland); 46  } 47  48  /** 49  * @param targetIsland the {@link Island} to set as a target 50  */ 51  public void setTargetIsland(Island targetIsland) { 52  this.targetIsland = targetIsland; 53  } 54  55  /** 56  * @return the {@link PawnColour} set as a target. The value is wrapped in a {@link OptionalValue}, as the related input is not 57  * compulsory 58  */ 59  public OptionalValue<PawnColour> getTargetPawn() { 60  if (this.targetPawn == null) return OptionalValue.empty(); 61  else return OptionalValue.of(targetPawn); 62  } 63  64  /** 65  * @param targetPawn the {@link PawnColour} to set as a target 66  */ 67  public void setTargetPawn(PawnColour targetPawn) { 68  this.targetPawn = targetPawn; 69  } 70  71  /** 72  * @return the the {@link List} of {@link Pair}s of {@link PawnColour} set as a target. 73  * The value is wrapped in a {@link OptionalValue}, as the related input is not 74  * compulsory 75  */ 76  public OptionalValue<List<Pair<PawnColour, PawnColour>>> getTargetPawnPairs() { 77  if (this.targetPawnPairs == null) return OptionalValue.empty(); 78  else return OptionalValue.of(targetPawnPairs); 79  } 80  81  /** 82  * Note: the convention of the {@link Pair} is to be verified through the card that requires the input. 83  * 84  * @param targetPawnPairs the {@link List} of {@link Pair}s of {@link PawnColour} to set as a target. 85  */ 86  public void setTargetPawnPairs(List<Pair<PawnColour, PawnColour>> targetPawnPairs) { 87  this.targetPawnPairs = targetPawnPairs; 88  } 89 }