package magic.model.action; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; import magic.model.MagicPlayerState; public class CleanupPlayerAction extends MagicAction { private final MagicPlayer player; private int oldPreventDamage; private int oldDrawnCards; private int oldLifeLost; private int oldLifeGained; private int oldCreaturesAttacked; private int oldStateFlags; public CleanupPlayerAction(final MagicPlayer player) { this.player=player; } @Override public void doAction(final MagicGame game) { oldPreventDamage=player.getPreventDamage(); player.setPreventDamage(0); oldDrawnCards=player.getDrawnCards(); player.setDrawnCards(0); oldLifeLost=player.getLifeLossThisTurn(); player.setLifeLossThisTurn(0); oldLifeGained=player.getLifeGainThisTurn(); player.setLifeGainThisTurn(0); oldCreaturesAttacked=player.getCreaturesAttackedThisTurn(); player.setCreaturesAttackedThisTurn(0); oldStateFlags=player.getStateFlags(); player.setStateFlags(oldStateFlags & MagicPlayerState.CLEANUP_MASK); for (final MagicPermanent permanent : player.getPermanents()) { game.doAction(new CleanupPermanentAction(permanent)); } game.setStateCheckRequired(); } @Override public void undoAction(final MagicGame game) { player.setPreventDamage(oldPreventDamage); player.setDrawnCards(oldDrawnCards); player.setLifeGainThisTurn(oldLifeGained); player.setLifeLossThisTurn(oldLifeLost); player.setCreaturesAttackedThisTurn(oldCreaturesAttacked); player.setStateFlags(oldStateFlags); } }