package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicMappable;
import magic.model.MagicPermanent;
import magic.model.MagicCopyable;
import magic.model.MagicCopyMap;
public class MagicSourceManaActivationResult implements MagicMappable<MagicSourceManaActivationResult>, MagicCopyable {
private final MagicPermanent permanent;
private final MagicManaActivation activation;
public MagicSourceManaActivationResult(final MagicPermanent permanent,final MagicManaActivation activation) {
this.permanent=permanent;
this.activation=activation;
}
@Override
public MagicSourceManaActivationResult copy(final MagicCopyMap copyMap) {
return new MagicSourceManaActivationResult(copyMap.copy(permanent), activation);
}
@Override
public MagicSourceManaActivationResult map(final MagicGame game) {
return new MagicSourceManaActivationResult(permanent.map(game),activation);
}
public void doActivation(final MagicGame game) {
for (final MagicEvent costEvent : activation.getCostEvent(permanent)) {
// Mana activation cost events do not have choices.
game.executeEvent(costEvent,MagicEvent.NO_CHOICE_RESULTS);
}
}
@Override
public long getId() {
return permanent.getId() * 31 + activation.hashCode();
}
}