85 lines
2.0 KiB
Java
85 lines
2.0 KiB
Java
package magic.model;
|
|
|
|
import magic.model.choice.MagicPayManaCostResult;
|
|
import magic.model.target.MagicTarget;
|
|
import magic.model.target.MagicTargetNone;
|
|
|
|
public class MagicPayedCost implements MagicCopyable {
|
|
|
|
public static final MagicPayedCost NO_COST = new MagicPayedCost();
|
|
public static final MagicPayedCost NOT_SPELL = new MagicPayedCost();
|
|
|
|
private MagicTarget target;
|
|
private int x;
|
|
private int kicker;
|
|
|
|
public MagicPayedCost() {
|
|
target = MagicTargetNone.getInstance();
|
|
x = 0;
|
|
kicker = 0;
|
|
}
|
|
|
|
public MagicPayedCost(final MagicPayedCost payedCost) {
|
|
target = payedCost.target;
|
|
x = payedCost.x;
|
|
kicker = payedCost.kicker;
|
|
}
|
|
|
|
public MagicPayedCost(final MagicCopyMap copyMap,final MagicPayedCost payedCost) {
|
|
target = copyMap.copy(payedCost.target);
|
|
x = payedCost.x;
|
|
kicker = payedCost.kicker;
|
|
}
|
|
|
|
@Override
|
|
public MagicCopyable copy(final MagicCopyMap copyMap) {
|
|
return new MagicPayedCost(copyMap, this);
|
|
}
|
|
|
|
private void setTarget(final MagicTarget aTarget) {
|
|
target = aTarget;
|
|
}
|
|
|
|
public MagicTarget getTarget() {
|
|
return target;
|
|
}
|
|
|
|
private void setX(final int newX) {
|
|
if (newX != 0) {
|
|
x = newX;
|
|
}
|
|
}
|
|
|
|
public int getX() {
|
|
return x;
|
|
}
|
|
|
|
void set(final Object choiceResult) {
|
|
if (choiceResult instanceof MagicTarget) {
|
|
setTarget((MagicTarget)choiceResult);
|
|
} else if (choiceResult instanceof MagicPayManaCostResult) {
|
|
setX(((MagicPayManaCostResult)choiceResult).getX());
|
|
}
|
|
}
|
|
|
|
public void setKicker(final int aKicker) {
|
|
kicker = aKicker;
|
|
}
|
|
|
|
public int getKicker() {
|
|
return kicker;
|
|
}
|
|
|
|
public boolean isKicked() {
|
|
return kicker > 0;
|
|
}
|
|
|
|
public long getStateId() {
|
|
return MurmurHash3.hash(new long[] {
|
|
MagicObjectImpl.getStateId(target),
|
|
x,
|
|
kicker
|
|
});
|
|
}
|
|
}
|