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

Class Class, % Method, % Line, %
EffectTracker 100% (1/1) 100% (13/13) 100% (18/18)


1 package it.polimi.ingsw.Model; 2  3 import it.polimi.ingsw.Misc.OptionalValue; 4 import it.polimi.ingsw.Model.Enums.PawnColour; 5  6 import java.io.Serial; 7 import java.io.Serializable; 8  9 /** 10  * {@link CharacterCard}s may impose some non immediate effects to resolve during the turn. This class aims to keep track of them 11  */ 12 public class EffectTracker implements Serializable { 13  @Serial 14  private static final long serialVersionUID = 135L; // convention: 1 for model, (01 -> 99) for objects 15  private OptionalValue<PawnColour> deniedPawnColour; 16  private boolean denyTowerInfluence; 17  private boolean increasedInfluence; 18  private boolean increasedMotherNatureMovement; 19  private boolean alternativeTeacherAssignment; 20  21  /** 22  * Constructor for the Tracker (all effects are disabled) 23  */ 24  public EffectTracker() { 25  this.reset(); 26  } 27  28  /** 29  * When called, this method will reset all effects to the disabled state. 30  */ 31  public void reset() { 32  this.deniedPawnColour = OptionalValue.empty(); 33  this.denyTowerInfluence = false; 34  this.increasedInfluence = false; 35  this.increasedMotherNatureMovement = false; 36  this.alternativeTeacherAssignment = false; 37  } 38  39  /** 40  * enables the increased influence flag 41  */ 42  public void enableIncreasedInfluence() { 43  this.increasedInfluence = true; 44  } 45  46  /** 47  * enables the denied tower influence flag 48  */ 49  public void enableDenyTowerInfluence() { 50  this.denyTowerInfluence = true; 51  } 52  53  /** 54  * enables the increased mother nature movement flag 55  */ 56  public void enableIncreasedMotherNatureMovement() { 57  this.increasedMotherNatureMovement = true; 58  } 59  60  /** 61  * enables the alternative teacher assignment algorithm flag 62  */ 63  public void enableAlternativeTeacherAssignment() { 64  this.alternativeTeacherAssignment = true; 65  } 66  67  /** 68  * @return value of the increased influence flag 69  */ 70  public boolean isInfluenceIncreased() { 71  return increasedInfluence; 72  } 73  74  /** 75  * @return value of the denied tower influence flag 76  */ 77  public boolean isTowerInfluenceDenied() { 78  return denyTowerInfluence; 79  } 80  81  /** 82  * @return value of the increased mother nature movement flag 83  */ 84  public boolean isMotherNatureMovementIncreased() { 85  return increasedMotherNatureMovement; 86  } 87  88  /** 89  * @return value of the alternative teacher assignment algorithm flag 90  */ 91  public boolean isAlternativeTeacherAssignmentEnabled() { 92  return alternativeTeacherAssignment; 93  } 94  95  /** 96  * @return true if the value of the denied {@link PawnColour} is set 97  */ 98  public boolean isPawnColourDenied() { 99  return deniedPawnColour.isPresent(); 100  } 101  102  /** 103  * @return the denied {@link PawnColour} wrapped in a {@link OptionalValue} 104  */ 105  public OptionalValue<PawnColour> getDeniedPawnColour() { 106  return deniedPawnColour; 107  } 108  109  /** 110  * sets the denied {@link PawnColour} 111  * 112  * @param pawnColour the {@link PawnColour} to be denied 113  */ 114  public void setDeniedPawnColour(PawnColour pawnColour) { 115  this.deniedPawnColour = OptionalValue.of(pawnColour); 116  } 117 }