public static HardMediumSoftLongScore ofUninitialized(int initScore, long hardScore, long mediumScore, long softScore) { return new HardMediumSoftLongScore(initScore, hardScore, mediumScore, softScore); }
@Override public HardMediumSoftLongScore toInitializedScore() { return initScore == 0 ? this : new HardMediumSoftLongScore(0, hardScore, mediumScore, softScore); }
@Override public HardMediumSoftLongScore negate() { return new HardMediumSoftLongScore(-initScore, -hardScore, -mediumScore, -softScore); }
public static HardMediumSoftLongScore ofSoft(long softScore) { return new HardMediumSoftLongScore(0, 0, 0, softScore); }
public static HardMediumSoftLongScore ofHard(long hardScore) { return new HardMediumSoftLongScore(0, hardScore, 0, 0); }
public static HardMediumSoftLongScore of(long hardScore, long mediumScore, long softScore) { return new HardMediumSoftLongScore(0, hardScore, mediumScore, softScore); }
public static HardMediumSoftLongScore ofMedium(long mediumScore) { return new HardMediumSoftLongScore(0, 0, mediumScore, 0); }
/** * @deprecated in favor of {@link #ofUninitialized(int, long, long, long)} */ @Deprecated public static HardMediumSoftLongScore valueOfUninitialized(int initScore, long hardScore, long mediumScore, long softScore) { return new HardMediumSoftLongScore(initScore, hardScore, mediumScore, softScore); }
/** * @deprecated in favor of {@link #of(long, long, long)} */ @Deprecated public static HardMediumSoftLongScore valueOf(long hardScore, long mediumScore, long softScore) { return new HardMediumSoftLongScore(0, hardScore, mediumScore, softScore); }
@Override public HardMediumSoftLongScore divide(double divisor) { return new HardMediumSoftLongScore( (int) Math.floor(initScore / divisor), (long) Math.floor(hardScore / divisor), (long) Math.floor(mediumScore / divisor), (long) Math.floor(softScore / divisor)); }
@Override public HardMediumSoftLongScore multiply(double multiplicand) { return new HardMediumSoftLongScore( (int) Math.floor(initScore * multiplicand), (long) Math.floor(hardScore * multiplicand), (long) Math.floor(mediumScore * multiplicand), (long) Math.floor(softScore * multiplicand)); }
@Override public HardMediumSoftLongScore power(double exponent) { return new HardMediumSoftLongScore( (int) Math.floor(Math.pow(initScore, exponent)), (long) Math.floor(Math.pow(hardScore, exponent)), (long) Math.floor(Math.pow(mediumScore, exponent)), (long) Math.floor(Math.pow(softScore, exponent))); }
@Override public HardMediumSoftLongScore withInitScore(int newInitScore) { assertNoInitScore(); return new HardMediumSoftLongScore(newInitScore, hardScore, mediumScore, softScore); }
@Override public HardMediumSoftLongScore subtract(HardMediumSoftLongScore subtrahend) { return new HardMediumSoftLongScore( initScore - subtrahend.getInitScore(), hardScore - subtrahend.getHardScore(), mediumScore - subtrahend.getMediumScore(), softScore - subtrahend.getSoftScore()); }
@Override public HardMediumSoftLongScore add(HardMediumSoftLongScore augment) { return new HardMediumSoftLongScore( initScore + augment.getInitScore(), hardScore + augment.getHardScore(), mediumScore + augment.getMediumScore(), softScore + augment.getSoftScore()); }