use boolean to track whether trigger/static was added by action

master
melvinzhang 2017-08-08 11:36:41 +08:00
parent 98c28b1f85
commit 42191ad01c
3 changed files with 12 additions and 7 deletions

View File

@ -9,6 +9,7 @@ public class AddStaticAction extends MagicAction {
private final MagicPermanent permanent;
private final MagicStatic mstatic;
private final boolean force;
private boolean done;
private AddStaticAction(final MagicPermanent aPermanent, final MagicStatic aStatic, final boolean aForce) {
permanent = aPermanent;
@ -31,6 +32,7 @@ public class AddStaticAction extends MagicAction {
@Override
public void doAction(final MagicGame game) {
if (permanent == MagicPermanent.NONE || permanent.isValid() || force) {
done = true;
game.addStatic(permanent, mstatic);
game.setStateCheckRequired();
}
@ -38,7 +40,7 @@ public class AddStaticAction extends MagicAction {
@Override
public void undoAction(final MagicGame game) {
if (permanent == MagicPermanent.NONE || permanent.isValid() || force) {
if (done) {
game.removeStatic(permanent, mstatic);
}
}

View File

@ -10,6 +10,7 @@ public class AddTriggerAction extends MagicAction {
private final MagicPermanent permanent;
private final MagicTrigger<?> trigger;
private final boolean force;
private boolean done;
private AddTriggerAction(final MagicPermanent aPermanent,final MagicTrigger<?> aTrigger,final boolean aForce) {
permanent = aPermanent;
@ -32,13 +33,14 @@ public class AddTriggerAction extends MagicAction {
@Override
public void doAction(final MagicGame game) {
if (permanent == MagicPermanent.NONE || permanent.isValid() || force) {
game.addTrigger(permanent,trigger);
done = true;
game.addTrigger(permanent, trigger);
}
}
@Override
public void undoAction(final MagicGame game) {
if (permanent == MagicPermanent.NONE || permanent.isValid() || force) {
if (done) {
game.removeTrigger(permanent, trigger);
}
}

View File

@ -9,7 +9,7 @@ public class AddTurnTriggerAction extends MagicAction {
private final MagicPermanent permanent;
private final MagicTrigger<?> trigger;
private MagicPermanentTrigger permanentTrigger;
private boolean done;
public AddTurnTriggerAction(final MagicPermanent aPermanent,final MagicTrigger<?> aTrigger) {
permanent = aPermanent;
@ -23,14 +23,15 @@ public class AddTurnTriggerAction extends MagicAction {
@Override
public void doAction(final MagicGame game) {
if (permanent == MagicPermanent.NONE || permanent.isValid()) {
permanentTrigger=game.addTurnTrigger(permanent,trigger);
done = true;
game.addTurnTrigger(permanent, trigger);
}
}
@Override
public void undoAction(final MagicGame game) {
if (permanentTrigger != null) {
game.removeTrigger(permanentTrigger);
if (done) {
game.removeTrigger(permanent, trigger);
}
}
}