/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mage.abilities.dynamicvalue.common;
import java.io.ObjectStreamException;
import mage.MageObject;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.stack.Spell;
/**
*
* @author LevelX2
*/
public class ColorsOfManaSpentToCastCount implements DynamicValue {
private static final ColorsOfManaSpentToCastCount instance = new ColorsOfManaSpentToCastCount();
private Object readResolve() throws ObjectStreamException {
return instance;
}
public static ColorsOfManaSpentToCastCount getInstance() {
return instance;
}
@Override
public int calculate(Game game, Ability source, Effect effect) {
int count = 0;
Spell spell = game.getStack().getSpell(source.getSourceId());
if (spell == null) {
MageObject mageObject = game.getLastKnownInformation(source.getSourceId(), Zone.STACK);
if (mageObject instanceof Spell) {
spell = (Spell) mageObject;
}
}
if (spell != null) {
// NOT the cmc of the spell on the stack
Mana mana = spell.getSpellAbility().getManaCostsToPay().getPayment();
if (mana.getBlack() > 0) {
count++;
}
if (mana.getBlue() > 0) {
count++;
}
if (mana.getGreen() > 0) {
count++;
}
if (mana.getRed() > 0) {
count++;
}
if (mana.getWhite() > 0) {
count++;
}
}
return count;
}
@Override
public ColorsOfManaSpentToCastCount copy() {
return new ColorsOfManaSpentToCastCount();
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "the number of colors of mana spent to cast {this}";
}
}