package magic.model.action; import magic.model.MagicGame; import magic.model.MagicPermanent; public class SoulbondAction extends MagicAction { private final MagicPermanent permanent; private final MagicPermanent pairedCreature; private final boolean set; private boolean valid; public SoulbondAction(final MagicPermanent permanent,final MagicPermanent pairedCreature,final boolean set) { this.permanent = permanent; this.pairedCreature = pairedCreature; this.set = set; } @Override public void doAction(final MagicGame game) { valid = permanent.isValid() && pairedCreature.isValid(); if (!valid) { return; } if (set) { permanent.setPairedCreature(pairedCreature); pairedCreature.setPairedCreature(permanent); } else { permanent.setPairedCreature(MagicPermanent.NONE); pairedCreature.setPairedCreature(MagicPermanent.NONE); } } @Override public void undoAction(final MagicGame game) { if (!valid) { return; } if (set) { permanent.setPairedCreature(MagicPermanent.NONE); pairedCreature.setPairedCreature(MagicPermanent.NONE); } else { permanent.setPairedCreature(pairedCreature); pairedCreature.setPairedCreature(permanent); } } }