package magic.model.phase; import magic.model.MagicGame; import magic.model.MagicPlayer; import magic.model.MagicSource; import magic.model.event.MagicMulliganEvent; import magic.model.event.MagicScryEvent; public class MagicMulliganPhase extends MagicPhase { private static final MagicPhase INSTANCE = new MagicMulliganPhase(); private MagicMulliganPhase() { super(MagicPhaseType.Mulligan); } public static MagicPhase getInstance() { return INSTANCE; } @Override public void executeBeginStep(final MagicGame game) { for (final MagicPlayer player : game.getPlayers()) { game.addEvent(new MagicMulliganEvent(player)); } game.setStep(MagicStep.NextPhase); } @Override void executeEndOfPhase(final MagicGame game) { for (final MagicPlayer player : game.getPlayers()) { if (player.getHandSize() < player.getStartingHandSize()) { game.addEvent(new MagicScryEvent(MagicSource.NONE, player)); } } } }