magarena/src/magic/model/MagicPayedCost.java

85 lines
2.0 KiB
Java
Raw Normal View History

2013-04-12 19:32:25 -07:00
package magic.model;
import magic.model.choice.MagicPayManaCostResult;
import magic.model.target.MagicTarget;
import magic.model.target.MagicTargetNone;
public class MagicPayedCost implements MagicCopyable {
2013-04-12 19:32:25 -07:00
public static final MagicPayedCost NO_COST = new MagicPayedCost();
public static final MagicPayedCost NOT_SPELL = new MagicPayedCost();
2013-06-23 18:33:35 -07:00
2013-04-12 19:32:25 -07:00
private MagicTarget target;
private int x;
private int kicker;
2013-06-23 18:33:35 -07:00
2013-04-12 19:32:25 -07:00
public MagicPayedCost() {
target = MagicTargetNone.getInstance();
x = 0;
kicker = 0;
2013-04-12 19:32:25 -07:00
}
2013-06-23 18:33:35 -07:00
public MagicPayedCost(final MagicPayedCost payedCost) {
target = payedCost.target;
x = payedCost.x;
kicker = payedCost.kicker;
}
2013-06-23 18:33:35 -07:00
public MagicPayedCost(final MagicCopyMap copyMap,final MagicPayedCost payedCost) {
2013-04-12 19:32:25 -07:00
target = copyMap.copy(payedCost.target);
x = payedCost.x;
kicker = payedCost.kicker;
2013-04-12 19:32:25 -07:00
}
2013-06-23 18:33:35 -07:00
@Override
public MagicCopyable copy(final MagicCopyMap copyMap) {
return new MagicPayedCost(copyMap, this);
}
2013-06-23 18:33:35 -07:00
private void setTarget(final MagicTarget aTarget) {
target = aTarget;
2013-04-12 19:32:25 -07:00
}
2013-06-23 18:33:35 -07:00
2013-04-12 19:32:25 -07:00
public MagicTarget getTarget() {
return target;
}
2013-06-23 18:33:35 -07:00
private void setX(final int newX) {
if (newX != 0) {
x = newX;
}
2013-04-12 19:32:25 -07:00
}
2013-06-23 18:33:35 -07:00
2013-04-12 19:32:25 -07:00
public int getX() {
return x;
2013-06-23 18:33:35 -07:00
}
2013-04-12 19:32:25 -07:00
void set(final Object choiceResult) {
if (choiceResult instanceof MagicTarget) {
setTarget((MagicTarget)choiceResult);
} else if (choiceResult instanceof MagicPayManaCostResult) {
setX(((MagicPayManaCostResult)choiceResult).getX());
}
}
2013-06-23 18:33:35 -07:00
public void setKicker(final int aKicker) {
kicker = aKicker;
}
public int getKicker() {
return kicker;
}
2013-06-23 18:33:35 -07:00
public boolean isKicked() {
return kicker > 0;
}
public long getStateId() {
2017-01-28 07:08:10 -08:00
return MurmurHash3.hash(new long[] {
MagicObjectImpl.getStateId(target),
x,
kicker
});
}
2013-04-12 19:32:25 -07:00
}