115 lines
3.4 KiB
Java
115 lines
3.4 KiB
Java
package javass.jass;
|
|
|
|
import static javass.Preconditions.*;
|
|
|
|
/**
|
|
*
|
|
* @author Charles BEAUVILLE
|
|
* @author Celia HOUSSIAUX
|
|
*
|
|
*/
|
|
public final class Score {
|
|
|
|
public static final Score INITIAL = new Score(PackedScore.INITIAL);
|
|
|
|
/**
|
|
* Check if the packed score is valid.
|
|
* @param a long packed the packed score of the team
|
|
* @throws IllegalArgumentException if packed is not valid.
|
|
* @return the score associated with packed.
|
|
*/
|
|
public static Score ofPacked(long packed) {
|
|
checkArgument(PackedScore.isValid(packed));
|
|
Score s = new Score(packed);
|
|
return s;
|
|
}
|
|
|
|
private final long packed;
|
|
|
|
private Score(long packed) {
|
|
this.packed = packed;
|
|
}
|
|
|
|
/**
|
|
* Gives the packed version of the Score.
|
|
* @return a long representing the packed version of the score.
|
|
*/
|
|
public long packed() {
|
|
return packed;
|
|
}
|
|
|
|
/**
|
|
* Gives the number of tricks made by a given team in the current turn.
|
|
* @param t the teamId for the wanted number of tricks.
|
|
* @return an int the number of tricks gained by the team during the receiver's current turn.
|
|
*/
|
|
public int turnTricks(TeamId t) {
|
|
return PackedScore.turnTricks(packed, t);
|
|
}
|
|
|
|
/**
|
|
* Gives the number of points made by a given team in the current turn.
|
|
* @param t the team.
|
|
* @return an int the number of points gained by the team during the receiver's current turn.
|
|
*/
|
|
public int turnPoints(TeamId t) {
|
|
return PackedScore.turnPoints(packed, t);
|
|
}
|
|
|
|
/**
|
|
* Gives the number of points made by a given team before the current turn.
|
|
* @param t the team.
|
|
* @return an int the number of points gained by the team during the receiver's previous turns (excluding the current one).
|
|
*/
|
|
public int gamePoints(TeamId t) {
|
|
return PackedScore.gamePoints(packed, t);
|
|
}
|
|
|
|
/**
|
|
* Gives the number of points made by a given team in the current turn and before.
|
|
* @param t the team.
|
|
* @return an int the total number of points gained by the team t during the receiver's current game.
|
|
*/
|
|
public int totalPoints(TeamId t) {
|
|
return PackedScore.totalPoints(packed, t);
|
|
}
|
|
|
|
/**
|
|
* Computes the {@link Score} of the team after a {@link Trick} has been played.
|
|
* @param winningTeam the teamId of the team that won the trick.
|
|
* @param trickPoints number of tricks gained by the team during the current turn.
|
|
* @throws IllegalArgumentException if trickPoints is negative.
|
|
* @return the updated scores.
|
|
*/
|
|
public Score withAdditionalTrick(TeamId winningTeam, int trickPoints) {
|
|
checkArgument(trickPoints>=0);
|
|
|
|
return new Score(PackedScore.withAdditionalTrick(packed, winningTeam, trickPoints));
|
|
}
|
|
|
|
/**
|
|
* Gives the {@link Score} at the beginning of the next turn.
|
|
* @return the updated scores for the next turn
|
|
*/
|
|
public Score nextTurn() {
|
|
return new Score(PackedScore.nextTurn(packed));
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object that0) {
|
|
return that0 != null
|
|
&& that0.getClass() == this.getClass()
|
|
&& this.packed() == ((Score)that0).packed();
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Long.hashCode(packed);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return PackedScore.toString(packed);
|
|
}
|
|
}
|