package magic.model.choice;
import magic.model.MagicGame;
import magic.model.MagicManaCost;
import magic.model.MagicPlayer;
import magic.model.MagicCopyMap;
import magic.model.action.PayDelayedCostAction;
/**
* Delayed mana costs can give wrong scores when a mana source:
* - taps to produces mana and then attacks or blocks : not possible
* - produced mana and then leaves play : reduces the available mana incorrectly
*/
public class MagicDelayedPayManaCostResult implements MagicPayManaCostResult {
private final MagicManaCost cost;
private final int x;
MagicDelayedPayManaCostResult(final MagicManaCost cost,final int x) {
this.cost=cost;
this.x=x;
}
public MagicManaCost getCost() {
return cost;
}
public String toString() {
return cost.getText() + x;
}
@Override
public int getX() {
return x;
}
@Override
public int getConverted() {
return cost.getConvertedCost(x);
}
@Override
public void doAction(final MagicGame game,final MagicPlayer player) {
game.doAction(new PayDelayedCostAction(player,this));
}
@Override
public MagicDelayedPayManaCostResult copy(final MagicCopyMap copyMap) {
return this;
}
@Override
public MagicDelayedPayManaCostResult map(final MagicGame game) {
return this;
}
@Override
public long getId() {
return hashCode();
}
}