package magic.model.action;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
public class SetBlockerAction extends MagicAction {
private final MagicPermanent attacker;
private final MagicPermanent blocker;
public SetBlockerAction(final MagicPermanent attacker,final MagicPermanent blocker) {
this.attacker=attacker;
this.blocker=blocker;
}
@Override
public void doAction(final MagicGame game) {
attacker.addBlockingCreature(blocker);
blocker.setBlockedCreature(attacker);
blocker.setState(MagicPermanentState.Blocking);
if (attacker.hasState(MagicPermanentState.Blocked) == false) {
game.doAction(ChangeStateAction.Set(attacker, MagicPermanentState.Blocked));
}
}
@Override
public void undoAction(final MagicGame game) {
attacker.removeBlockingCreature(blocker);
blocker.setBlockedCreature(MagicPermanent.NONE);
blocker.clearState(MagicPermanentState.Blocking);
}
}