forked from External/mage
59 lines
1.4 KiB
Java
59 lines
1.4 KiB
Java
|
|
package mage.abilities.dynamicvalue.common;
|
|
|
|
import mage.abilities.Ability;
|
|
import mage.abilities.dynamicvalue.DynamicValue;
|
|
import mage.abilities.effects.Effect;
|
|
import mage.game.Game;
|
|
|
|
/**
|
|
*
|
|
* @author Quercitron
|
|
*/
|
|
public class HalfValue implements DynamicValue {
|
|
|
|
private final DynamicValue value;
|
|
private final boolean roundedUp;
|
|
|
|
public HalfValue(final DynamicValue value, final boolean roundedUp) {
|
|
this.value = value.copy();
|
|
this.roundedUp = roundedUp;
|
|
}
|
|
|
|
public HalfValue(final HalfValue halfValue) {
|
|
this.value = halfValue.value.copy();
|
|
this.roundedUp = halfValue.roundedUp;
|
|
}
|
|
|
|
@Override
|
|
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
|
return (value.calculate(game, sourceAbility, effect) + (roundedUp ? 1 : 0)) / 2;
|
|
}
|
|
|
|
@Override
|
|
public HalfValue copy() {
|
|
return new HalfValue(this);
|
|
}
|
|
|
|
@Override
|
|
public String getMessage() {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("half ").append(value.getMessage());
|
|
if (roundedUp) {
|
|
sb.append(", rounded up");
|
|
} else {
|
|
sb.append(", rounded down");
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
@Override
|
|
public int getSign() {
|
|
return value.getSign();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "half ";
|
|
}
|
|
}
|