From ccf357479695139e49a775eecfbd5a4beee0e53b Mon Sep 17 00:00:00 2001 From: melvinzhang Date: Sun, 17 Jan 2016 11:12:06 +0800 Subject: [PATCH] reduce nesting by replacing annonymouse inner class with lambdas --- src/magic/model/action/MagicCardAction.java | 1 + .../model/action/MagicCardOnStackAction.java | 1 + .../model/action/MagicItemOnStackAction.java | 1 + .../model/action/MagicPermanentAction.java | 1 + src/magic/model/action/MagicPlayerAction.java | 1 + src/magic/model/action/MagicTargetAction.java | 1 + src/magic/model/condition/MagicCondition.java | 8 +- .../event/MagicAddCounterChosenEvent.java | 21 ++-- .../model/event/MagicAddCounterEvent.java | 15 +-- src/magic/model/event/MagicAwakenEvent.java | 27 ++--- .../model/event/MagicBestowActivation.java | 69 ++++++----- src/magic/model/event/MagicBolsterEvent.java | 23 ++-- .../MagicBounceChosenPermanentEvent.java | 19 ++- .../event/MagicBouncePermanentEvent.java | 7 +- .../event/MagicCardAbilityActivation.java | 15 +-- src/magic/model/event/MagicCipherEvent.java | 29 ++--- src/magic/model/event/MagicClashEvent.java | 15 +-- src/magic/model/event/MagicCoinFlipEvent.java | 43 ++++--- .../model/event/MagicCounterUnlessEvent.java | 15 +-- .../model/event/MagicCyclingActivation.java | 31 +++-- .../event/MagicDeclareAttackersEvent.java | 13 +-- .../event/MagicDeclareBlockersEvent.java | 13 +-- .../model/event/MagicDiscardChosenEvent.java | 18 ++- src/magic/model/event/MagicDiscardEvent.java | 14 +-- .../model/event/MagicDiscardHandEvent.java | 13 +-- .../model/event/MagicDiscardSelfEvent.java | 7 +- src/magic/model/event/MagicDrawEvent.java | 8 +- .../model/event/MagicEquipActivation.java | 6 +- src/magic/model/event/MagicEventAction.java | 7 +- .../model/event/MagicEventActionFactory.java | 23 ++-- src/magic/model/event/MagicEvokeEvent.java | 7 +- src/magic/model/event/MagicExcludeEvent.java | 7 +- .../model/event/MagicExileCardEvent.java | 22 ++-- .../event/MagicExileCardPayManaCostEvent.java | 23 ++-- src/magic/model/event/MagicExileEvent.java | 7 +- .../model/event/MagicExileSelfEvent.java | 19 ++- .../event/MagicExileTopLibraryEvent.java | 11 +- src/magic/model/event/MagicGainLifeEvent.java | 14 +-- .../event/MagicGainProtectionFromEvent.java | 13 +-- .../model/event/MagicHandCastActivation.java | 44 +++---- src/magic/model/event/MagicMillEvent.java | 11 +- .../model/event/MagicMorphCastActivation.java | 11 +- src/magic/model/event/MagicMulliganEvent.java | 17 ++- src/magic/model/event/MagicPayLifeEvent.java | 13 +-- .../model/event/MagicPermanentActivation.java | 21 ++-- .../model/event/MagicPlayAbilityEvent.java | 8 +- src/magic/model/event/MagicPlayAuraEvent.java | 6 +- src/magic/model/event/MagicPopulateEvent.java | 15 +-- src/magic/model/event/MagicPriorityEvent.java | 108 +++++++++--------- .../model/event/MagicPutCardOnStackEvent.java | 33 +++--- .../model/event/MagicPutCounterEvent.java | 36 +++--- .../event/MagicPutOntoBattlefieldEvent.java | 25 ++-- .../model/event/MagicRedirectDamageEvent.java | 29 ++--- .../event/MagicRemoveCounterChosenEvent.java | 21 ++-- .../model/event/MagicRemoveCounterEvent.java | 15 +-- .../model/event/MagicRepeatedCardsEvent.java | 13 +-- .../event/MagicRepeatedPermanentsEvent.java | 13 +-- .../model/event/MagicReturnCardEvent.java | 21 ++-- .../model/event/MagicRuleEventAction.java | 46 +++----- .../model/event/MagicSacrificeEvent.java | 7 +- .../event/MagicSacrificePermanentEvent.java | 13 +-- .../model/event/MagicScavengeActivation.java | 14 +-- src/magic/model/event/MagicScryEvent.java | 25 ++-- src/magic/model/event/MagicScryXEvent.java | 73 +++++------- .../MagicSearchOntoBattlefieldEvent.java | 55 ++++----- .../event/MagicSearchToLocationEvent.java | 65 +++++------ src/magic/model/event/MagicSoulbondEvent.java | 23 ++-- .../model/event/MagicSpellCastEvent.java | 31 +++-- .../event/MagicStackChangeTargetsEvent.java | 9 +- .../event/MagicStackGetChoicesEvent.java | 17 ++- .../model/event/MagicSuspendActivation.java | 11 +- src/magic/model/event/MagicTapEvent.java | 7 +- .../model/event/MagicTapOrUntapEvent.java | 17 ++- .../model/event/MagicTapPermanentEvent.java | 13 +-- src/magic/model/event/MagicTuckCardEvent.java | 21 ++-- .../model/event/MagicUniquenessEvent.java | 33 +++--- src/magic/model/event/MagicUntapEvent.java | 7 +- .../model/event/MagicUntapPermanentEvent.java | 13 +-- .../model/trigger/AtYourUpkeepTrigger.java | 15 +-- src/magic/model/trigger/CascadeTrigger.java | 56 ++++----- src/magic/model/trigger/ChampionTrigger.java | 10 +- src/magic/model/trigger/DevourTrigger.java | 28 +++-- .../trigger/EntersBattlefieldTrigger.java | 15 +-- .../trigger/FadeVanishCounterTrigger.java | 93 +++++++-------- .../model/trigger/LivingWeaponTrigger.java | 15 +-- src/magic/model/trigger/MadnessTrigger.java | 27 ++--- src/magic/model/trigger/ModularTrigger.java | 14 +-- src/magic/model/trigger/SoulshiftTrigger.java | 14 +-- src/magic/model/trigger/TributeTrigger.java | 25 ++-- 89 files changed, 765 insertions(+), 1095 deletions(-) diff --git a/src/magic/model/action/MagicCardAction.java b/src/magic/model/action/MagicCardAction.java index 8d18eebc54..e764a8cacf 100644 --- a/src/magic/model/action/MagicCardAction.java +++ b/src/magic/model/action/MagicCardAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.MagicCard; +@FunctionalInterface public interface MagicCardAction { void doAction(final MagicCard card); } diff --git a/src/magic/model/action/MagicCardOnStackAction.java b/src/magic/model/action/MagicCardOnStackAction.java index c4373cdbbb..3b43390eeb 100644 --- a/src/magic/model/action/MagicCardOnStackAction.java +++ b/src/magic/model/action/MagicCardOnStackAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.stack.MagicCardOnStack; +@FunctionalInterface public interface MagicCardOnStackAction { void doAction(final MagicCardOnStack card); } diff --git a/src/magic/model/action/MagicItemOnStackAction.java b/src/magic/model/action/MagicItemOnStackAction.java index bf23cd1948..5cd2b739ec 100644 --- a/src/magic/model/action/MagicItemOnStackAction.java +++ b/src/magic/model/action/MagicItemOnStackAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.stack.MagicItemOnStack; +@FunctionalInterface public interface MagicItemOnStackAction { void doAction(final MagicItemOnStack item); } diff --git a/src/magic/model/action/MagicPermanentAction.java b/src/magic/model/action/MagicPermanentAction.java index 42cbe9697d..f1f2fdb220 100644 --- a/src/magic/model/action/MagicPermanentAction.java +++ b/src/magic/model/action/MagicPermanentAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.MagicPermanent; +@FunctionalInterface public interface MagicPermanentAction { void doAction(final MagicPermanent perm); } diff --git a/src/magic/model/action/MagicPlayerAction.java b/src/magic/model/action/MagicPlayerAction.java index 7944834bfc..37f8388844 100644 --- a/src/magic/model/action/MagicPlayerAction.java +++ b/src/magic/model/action/MagicPlayerAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.MagicPlayer; +@FunctionalInterface public interface MagicPlayerAction { void doAction(final MagicPlayer player); } diff --git a/src/magic/model/action/MagicTargetAction.java b/src/magic/model/action/MagicTargetAction.java index 4c567e796f..84df9e9952 100644 --- a/src/magic/model/action/MagicTargetAction.java +++ b/src/magic/model/action/MagicTargetAction.java @@ -2,6 +2,7 @@ package magic.model.action; import magic.model.target.MagicTarget; +@FunctionalInterface public interface MagicTargetAction { void doAction(final MagicTarget perm); } diff --git a/src/magic/model/condition/MagicCondition.java b/src/magic/model/condition/MagicCondition.java index e17a0370eb..81693906de 100644 --- a/src/magic/model/condition/MagicCondition.java +++ b/src/magic/model/condition/MagicCondition.java @@ -29,12 +29,8 @@ import java.util.LinkedList; public abstract class MagicCondition implements MagicMatchedCostEvent { - private static final MagicEventAction PLAY_ABILITY_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new PlayAbilityAction(event.getPermanent())); - } - }; + private static final MagicEventAction PLAY_ABILITY_ACTION = (final MagicGame game, final MagicEvent event) -> + game.doAction(new PlayAbilityAction(event.getPermanent())); public static List build(final String costs) { final List matched = new LinkedList(); diff --git a/src/magic/model/event/MagicAddCounterChosenEvent.java b/src/magic/model/event/MagicAddCounterChosenEvent.java index 836ff4ab42..b46a753e0f 100644 --- a/src/magic/model/event/MagicAddCounterChosenEvent.java +++ b/src/magic/model/event/MagicAddCounterChosenEvent.java @@ -16,19 +16,14 @@ public class MagicAddCounterChosenEvent extends MagicEvent { super( source, MagicTargetChoice.A_CREATURE_YOU_CONTROL, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent perm) { - game.doAction(new ChangeCountersAction( - perm, - counterType, - 1 - )); - } - }); - } + (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent perm) -> { + game.doAction(new ChangeCountersAction( + perm, + counterType, + 1 + )); + }); }, "Put a " + counterType.getName() + " counter on a creature$ you control." ); diff --git a/src/magic/model/event/MagicAddCounterEvent.java b/src/magic/model/event/MagicAddCounterEvent.java index 30bec1d7b6..d0eda8a68f 100644 --- a/src/magic/model/event/MagicAddCounterEvent.java +++ b/src/magic/model/event/MagicAddCounterEvent.java @@ -10,15 +10,12 @@ public class MagicAddCounterEvent extends MagicEvent { public MagicAddCounterEvent(final MagicPermanent permanent,final MagicCounterType counterType,final int amount) { super( permanent, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - counterType, - amount - )); - } + (final MagicGame game, final MagicEvent event) -> { + game.doAction(new ChangeCountersAction( + event.getPermanent(), + counterType, + amount + )); }, genDescription(permanent,counterType,amount) ); diff --git a/src/magic/model/event/MagicAwakenEvent.java b/src/magic/model/event/MagicAwakenEvent.java index ea825c7460..7d4dd13130 100644 --- a/src/magic/model/event/MagicAwakenEvent.java +++ b/src/magic/model/event/MagicAwakenEvent.java @@ -50,21 +50,16 @@ public class MagicAwakenEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent it) { - game.doAction(new ChangeCountersAction( - it, - MagicCounterType.PlusOne, - event.getRefInt() - )); - game.doAction(new AddStaticAction(it, PT)); - game.doAction(new AddStaticAction(it, Type)); - game.doAction(new GainAbilityAction(it, MagicAbility.Haste, MagicStatic.Forever)); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent it) -> { + game.doAction(new ChangeCountersAction( + it, + MagicCounterType.PlusOne, + event.getRefInt() + )); + game.doAction(new AddStaticAction(it, PT)); + game.doAction(new AddStaticAction(it, Type)); + game.doAction(new GainAbilityAction(it, MagicAbility.Haste, MagicStatic.Forever)); + }); }; } diff --git a/src/magic/model/event/MagicBestowActivation.java b/src/magic/model/event/MagicBestowActivation.java index 04a405db52..7aced7de5d 100644 --- a/src/magic/model/event/MagicBestowActivation.java +++ b/src/magic/model/event/MagicBestowActivation.java @@ -30,14 +30,12 @@ public class MagicBestowActivation extends MagicHandCastActivation { ) { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { - final boolean valid = event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new PlayCardFromStackAction( - event.getCardOnStack(), - creature, - MagicPlayMod.BESTOWED - )); - } + final boolean valid = event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new PlayCardFromStackAction( + event.getCardOnStack(), + creature, + MagicPlayMod.BESTOWED + )); }); if (!valid) { game.doAction(new PlayCardFromStackAction(event.getCardOnStack())); @@ -68,39 +66,36 @@ public class MagicBestowActivation extends MagicHandCastActivation { ); } - private final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - game.doAction(new RemoveCardAction(card,MagicLocationType.OwnersHand)); + private final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + game.doAction(new RemoveCardAction(card,MagicLocationType.OwnersHand)); - final MagicCardOnStack cardOnStack=new MagicCardOnStack( - card, - BestowEvent, - game.getPayedCost() - ) { - @Override - public boolean hasType(final MagicType type) { - if (type == MagicType.Creature) { - return false; - } else { - return super.hasType(type); - } + final MagicCardOnStack cardOnStack=new MagicCardOnStack( + card, + BestowEvent, + game.getPayedCost() + ) { + @Override + public boolean hasType(final MagicType type) { + if (type == MagicType.Creature) { + return false; + } else { + return super.hasType(type); } + } - @Override - public boolean hasSubType(final MagicSubType subType) { - if (subType == MagicSubType.Aura) { - return true; - } else if (MagicSubType.ALL_CREATURES.contains(subType)) { - return false; - } else { - return super.hasSubType(subType); - } + @Override + public boolean hasSubType(final MagicSubType subType) { + if (subType == MagicSubType.Aura) { + return true; + } else if (MagicSubType.ALL_CREATURES.contains(subType)) { + return false; + } else { + return super.hasSubType(subType); } - }; + } + }; - game.doAction(new PutItemOnStackAction(cardOnStack)); - } + game.doAction(new PutItemOnStackAction(cardOnStack)); }; } diff --git a/src/magic/model/event/MagicBolsterEvent.java b/src/magic/model/event/MagicBolsterEvent.java index e935ca1b5f..3f94250961 100644 --- a/src/magic/model/event/MagicBolsterEvent.java +++ b/src/magic/model/event/MagicBolsterEvent.java @@ -14,19 +14,14 @@ import magic.model.target.Operator; public class MagicBolsterEvent extends MagicEvent { - public static final MagicEventAction ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new ChangeCountersAction( - creature, - MagicCounterType.PlusOne, - event.getRefInt() - )); - } - }); - } + public static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new ChangeCountersAction( + creature, + MagicCounterType.PlusOne, + event.getRefInt() + )); + }); }; public MagicBolsterEvent(final MagicSource source, final MagicPlayer player, final int amount, final int minToughness) { @@ -44,7 +39,7 @@ public class MagicBolsterEvent extends MagicEvent { "a creature with least toughness among creatures you control" ), amount, - ACTION, + EVENT_ACTION, "PN puts RN +1/+1 counters on creature$ with least toughness among creatures he or she control." ); } diff --git a/src/magic/model/event/MagicBounceChosenPermanentEvent.java b/src/magic/model/event/MagicBounceChosenPermanentEvent.java index 5da08fa4cc..89d7a0b79c 100644 --- a/src/magic/model/event/MagicBounceChosenPermanentEvent.java +++ b/src/magic/model/event/MagicBounceChosenPermanentEvent.java @@ -29,17 +29,12 @@ public class MagicBounceChosenPermanentEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent permanent) { - game.doAction(new RemoveFromPlayAction( - permanent, - MagicLocationType.OwnersHand - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + game.doAction(new RemoveFromPlayAction( + permanent, + MagicLocationType.OwnersHand + )); + }); }; } diff --git a/src/magic/model/event/MagicBouncePermanentEvent.java b/src/magic/model/event/MagicBouncePermanentEvent.java index 38109b7d29..3c1f17f3fe 100644 --- a/src/magic/model/event/MagicBouncePermanentEvent.java +++ b/src/magic/model/event/MagicBouncePermanentEvent.java @@ -17,10 +17,7 @@ public class MagicBouncePermanentEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new RemoveFromPlayAction(event.getRefPermanent(),MagicLocationType.OwnersHand)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new RemoveFromPlayAction(event.getRefPermanent(),MagicLocationType.OwnersHand)); }; } diff --git a/src/magic/model/event/MagicCardAbilityActivation.java b/src/magic/model/event/MagicCardAbilityActivation.java index 824cb3d6d4..8742fa1aff 100644 --- a/src/magic/model/event/MagicCardAbilityActivation.java +++ b/src/magic/model/event/MagicCardAbilityActivation.java @@ -38,15 +38,12 @@ public abstract class MagicCardAbilityActivation extends MagicHandCastActivation public MagicEvent getEvent(final MagicSource source) { return new MagicEvent( source, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicAbilityOnStack abilityOnStack = new MagicAbilityOnStack( - MagicCardAbilityActivation.this, - getCardEvent(event.getCard(), game.getPayedCost()) - ); - game.doAction(new PutItemOnStackAction(abilityOnStack)); - } + (final MagicGame game, final MagicEvent event) -> { + final MagicAbilityOnStack abilityOnStack = new MagicAbilityOnStack( + MagicCardAbilityActivation.this, + getCardEvent(event.getCard(), game.getPayedCost()) + ); + game.doAction(new PutItemOnStackAction(abilityOnStack)); }, "Play activated ability of SN." ); diff --git a/src/magic/model/event/MagicCipherEvent.java b/src/magic/model/event/MagicCipherEvent.java index d25948386f..17f56551ec 100644 --- a/src/magic/model/event/MagicCipherEvent.java +++ b/src/magic/model/event/MagicCipherEvent.java @@ -28,23 +28,18 @@ public class MagicCipherEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.isYes()) { - game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Exile)); - event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent creatureToEncode) { - game.doAction(new AddTriggerAction( - creatureToEncode, - DamageIsDealtTrigger.Cipher(event.getCardOnStack().getCardDefinition()) - )); - } - }); - } else { - game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Graveyard)); - } - game.doAction(new MoveCardAction(event.getCardOnStack())); + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + if (event.isYes()) { + game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Exile)); + event.processTargetPermanent(game, (final MagicPermanent creatureToEncode) -> { + game.doAction(new AddTriggerAction( + creatureToEncode, + DamageIsDealtTrigger.Cipher(event.getCardOnStack().getCardDefinition()) + )); + }); + } else { + game.doAction(new ChangeCardDestinationAction(event.getCardOnStack(), MagicLocationType.Graveyard)); } + game.doAction(new MoveCardAction(event.getCardOnStack())); }; } diff --git a/src/magic/model/event/MagicClashEvent.java b/src/magic/model/event/MagicClashEvent.java index 9dc8d18667..e891c2b9a4 100644 --- a/src/magic/model/event/MagicClashEvent.java +++ b/src/magic/model/event/MagicClashEvent.java @@ -24,15 +24,12 @@ public class MagicClashEvent extends MagicEvent { } public static final MagicEventAction EventAction(final MagicEventAction clashAction) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer winner = executeClash(game, event); - if (winner == event.getPlayer()) { - clashAction.executeEvent(game, event); - }; - game.executeTrigger(MagicTriggerType.WhenClash, winner); - } + return (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer winner = executeClash(game, event); + if (winner == event.getPlayer()) { + clashAction.executeEvent(game, event); + }; + game.executeTrigger(MagicTriggerType.WhenClash, winner); }; } diff --git a/src/magic/model/event/MagicCoinFlipEvent.java b/src/magic/model/event/MagicCoinFlipEvent.java index 44991f337f..0f7916a825 100644 --- a/src/magic/model/event/MagicCoinFlipEvent.java +++ b/src/magic/model/event/MagicCoinFlipEvent.java @@ -34,29 +34,26 @@ public class MagicCoinFlipEvent extends MagicEvent { } public static final MagicEventAction EventAction(final MagicEventAction winAction, final MagicEventAction loseAction) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - //True = Heads - final MagicPlayer player = event.getPlayer(); - boolean coinFace = (player.getStateId() & 1) == 0; - boolean playerFace = event.isMode(1); - if (coinFace) { - game.logAppendMessage(player, "Coin landed heads."); - //Heads trigger - } else { - game.logAppendMessage(player, "Coin landed tails."); - //Tails trigger - } - if (playerFace == coinFace) { - game.logAppendMessage(player, player.getName() + " wins."); - winAction.executeEvent(game, event); - //Win trigger - } else { - game.logAppendMessage(player, player.getName() + " loses."); - loseAction.executeEvent(game, event); - //Lose trigger - } + return (final MagicGame game, final MagicEvent event) -> { + //True = Heads + final MagicPlayer player = event.getPlayer(); + boolean coinFace = (player.getStateId() & 1) == 0; + boolean playerFace = event.isMode(1); + if (coinFace) { + game.logAppendMessage(player, "Coin landed heads."); + //Heads trigger + } else { + game.logAppendMessage(player, "Coin landed tails."); + //Tails trigger + } + if (playerFace == coinFace) { + game.logAppendMessage(player, player.getName() + " wins."); + winAction.executeEvent(game, event); + //Win trigger + } else { + game.logAppendMessage(player, player.getName() + " loses."); + loseAction.executeEvent(game, event); + //Lose trigger } }; } diff --git a/src/magic/model/event/MagicCounterUnlessEvent.java b/src/magic/model/event/MagicCounterUnlessEvent.java index 4eeaba9b64..1eb2da506f 100644 --- a/src/magic/model/event/MagicCounterUnlessEvent.java +++ b/src/magic/model/event/MagicCounterUnlessEvent.java @@ -25,15 +25,12 @@ public class MagicCounterUnlessEvent extends MagicEvent { new MagicPayManaCostChoice(cost) ), itemOnStack, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.isNo()) { - game.doAction(new CounterItemOnStackAction( - event.getRefItemOnStack(), - toLocation - )); - } + (final MagicGame game, final MagicEvent event) -> { + if (event.isNo()) { + game.doAction(new CounterItemOnStackAction( + event.getRefItemOnStack(), + toLocation + )); } }, String.format("You may$ pay %s$. If you don't, counter %s.", diff --git a/src/magic/model/event/MagicCyclingActivation.java b/src/magic/model/event/MagicCyclingActivation.java index 0f1e58ead7..f71230f136 100644 --- a/src/magic/model/event/MagicCyclingActivation.java +++ b/src/magic/model/event/MagicCyclingActivation.java @@ -46,24 +46,21 @@ public class MagicCyclingActivation extends MagicCardAbilityActivation { public MagicEvent getEvent(final MagicSource source) { return new MagicEvent( source, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - final MagicAbilityOnStack abilityOnStack = new MagicAbilityOnStack( - MagicCyclingActivation.this, - getCardEvent(card, game.getPayedCost()) + (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + final MagicAbilityOnStack abilityOnStack = new MagicAbilityOnStack( + MagicCyclingActivation.this, + getCardEvent(card, game.getPayedCost()) + ); + game.doAction(new PutItemOnStackAction(abilityOnStack)); + game.executeTrigger(MagicTriggerType.WhenOtherCycle, card); + for (final MagicTrigger trigger : card.getCardDefinition().getCycleTriggers()) { + game.executeTrigger( + trigger, + MagicPermanent.NONE, + card, + card ); - game.doAction(new PutItemOnStackAction(abilityOnStack)); - game.executeTrigger(MagicTriggerType.WhenOtherCycle, card); - for (final MagicTrigger trigger : card.getCardDefinition().getCycleTriggers()) { - game.executeTrigger( - trigger, - MagicPermanent.NONE, - card, - card - ); - } } }, name + " SN." diff --git a/src/magic/model/event/MagicDeclareAttackersEvent.java b/src/magic/model/event/MagicDeclareAttackersEvent.java index 63da9a8e4b..3134460af8 100644 --- a/src/magic/model/event/MagicDeclareAttackersEvent.java +++ b/src/magic/model/event/MagicDeclareAttackersEvent.java @@ -19,13 +19,10 @@ public class MagicDeclareAttackersEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer player = event.getPlayer(); - final MagicDeclareAttackersResult result = event.getAttackers(); - game.doAction(new DeclareAttackersAction(player,result)); - game.logAttackers(player,result); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer player = event.getPlayer(); + final MagicDeclareAttackersResult result = event.getAttackers(); + game.doAction(new DeclareAttackersAction(player,result)); + game.logAttackers(player,result); }; } diff --git a/src/magic/model/event/MagicDeclareBlockersEvent.java b/src/magic/model/event/MagicDeclareBlockersEvent.java index ed04946e13..7b9e064ef6 100644 --- a/src/magic/model/event/MagicDeclareBlockersEvent.java +++ b/src/magic/model/event/MagicDeclareBlockersEvent.java @@ -19,13 +19,10 @@ public class MagicDeclareBlockersEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer player = event.getPlayer(); - final MagicDeclareBlockersResult result = event.getBlockers(); - game.doAction(new DeclareBlockersAction(player,result)); - game.logBlockers(player,result); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer player = event.getPlayer(); + final MagicDeclareBlockersResult result = event.getBlockers(); + game.doAction(new DeclareBlockersAction(player,result)); + game.logBlockers(player,result); }; } diff --git a/src/magic/model/event/MagicDiscardChosenEvent.java b/src/magic/model/event/MagicDiscardChosenEvent.java index b409ad0df5..676568b16b 100644 --- a/src/magic/model/event/MagicDiscardChosenEvent.java +++ b/src/magic/model/event/MagicDiscardChosenEvent.java @@ -24,16 +24,12 @@ public class MagicDiscardChosenEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new DiscardCardAction( - event.getPlayer(), - card - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new DiscardCardAction( + event.getPlayer(), + card + )); + }); }; } diff --git a/src/magic/model/event/MagicDiscardEvent.java b/src/magic/model/event/MagicDiscardEvent.java index 14a85062e0..d484aef42e 100644 --- a/src/magic/model/event/MagicDiscardEvent.java +++ b/src/magic/model/event/MagicDiscardEvent.java @@ -60,16 +60,10 @@ public class MagicDiscardEvent extends MagicEvent { cond = MagicConditionFactory.HandAtLeast(minHandSize); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processChosenCards(game, new MagicCardAction() { - @Override - public void doAction(final MagicCard card) { - game.doAction(new DiscardCardAction(event.getPlayer(), card)); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processChosenCards(game, (final MagicCard card) -> { + game.doAction(new DiscardCardAction(event.getPlayer(), card)); + }); }; @Override diff --git a/src/magic/model/event/MagicDiscardHandEvent.java b/src/magic/model/event/MagicDiscardHandEvent.java index dfd3318be4..9d8c0069c1 100644 --- a/src/magic/model/event/MagicDiscardHandEvent.java +++ b/src/magic/model/event/MagicDiscardHandEvent.java @@ -22,14 +22,11 @@ public class MagicDiscardHandEvent extends MagicEvent { this(source, source.getController()); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer player = event.getPlayer(); - final MagicCardList hand = new MagicCardList(player.getHand()); - for (final MagicCard card : hand) { - game.doAction(new DiscardCardAction(player,card)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer player = event.getPlayer(); + final MagicCardList hand = new MagicCardList(player.getHand()); + for (final MagicCard card : hand) { + game.doAction(new DiscardCardAction(player,card)); } }; } diff --git a/src/magic/model/event/MagicDiscardSelfEvent.java b/src/magic/model/event/MagicDiscardSelfEvent.java index 11bbede7d7..98e3167624 100644 --- a/src/magic/model/event/MagicDiscardSelfEvent.java +++ b/src/magic/model/event/MagicDiscardSelfEvent.java @@ -14,10 +14,7 @@ public class MagicDiscardSelfEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new DiscardCardAction(event.getPlayer(), event.getCard())); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new DiscardCardAction(event.getPlayer(), event.getCard())); }; } diff --git a/src/magic/model/event/MagicDrawEvent.java b/src/magic/model/event/MagicDrawEvent.java index 6addec192e..00faafeb97 100644 --- a/src/magic/model/event/MagicDrawEvent.java +++ b/src/magic/model/event/MagicDrawEvent.java @@ -16,12 +16,8 @@ public class MagicDrawEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new DrawAction(event.getPlayer(), event.getRefInt())); - } - }; + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> + game.doAction(new DrawAction(event.getPlayer(), event.getRefInt())); private static final String genDescription(final int amount) { if (amount != 1) { diff --git a/src/magic/model/event/MagicEquipActivation.java b/src/magic/model/event/MagicEquipActivation.java index 13be2bff6a..b1e8d899e6 100644 --- a/src/magic/model/event/MagicEquipActivation.java +++ b/src/magic/model/event/MagicEquipActivation.java @@ -70,10 +70,8 @@ public class MagicEquipActivation extends MagicPermanentActivation { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new AttachAction(event.getPermanent(),creature)); - } + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new AttachAction(event.getPermanent(),creature)); }); } } diff --git a/src/magic/model/event/MagicEventAction.java b/src/magic/model/event/MagicEventAction.java index f995c81961..43dae1debe 100644 --- a/src/magic/model/event/MagicEventAction.java +++ b/src/magic/model/event/MagicEventAction.java @@ -2,12 +2,11 @@ package magic.model.event; import magic.model.MagicGame; +@FunctionalInterface public interface MagicEventAction { void executeEvent(final MagicGame game, final MagicEvent event); - public static final MagicEventAction NONE = new MagicEventAction() { - public void executeEvent(final MagicGame game, final MagicEvent event) { - //do nothing - } + public static final MagicEventAction NONE = (final MagicGame game, final MagicEvent event) -> { + //do nothing }; } diff --git a/src/magic/model/event/MagicEventActionFactory.java b/src/magic/model/event/MagicEventActionFactory.java index 57db8fe7bb..3c9f5c3333 100644 --- a/src/magic/model/event/MagicEventActionFactory.java +++ b/src/magic/model/event/MagicEventActionFactory.java @@ -4,20 +4,17 @@ import magic.model.MagicGame; public class MagicEventActionFactory { static MagicEventAction compose(final MagicEventAction... acts) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.getTargetChoice().isValid() && - event.getTargetChoice().isTargeted() && - event.hasLegalTarget(game) == false) { - //countered on resolution due to illegal target - return; - } + return (final MagicGame game, final MagicEvent event) -> { + if (event.getTargetChoice().isValid() && + event.getTargetChoice().isTargeted() && + event.hasLegalTarget(game) == false) { + //countered on resolution due to illegal target + return; + } - // has legal target - for (final MagicEventAction act : acts) { - act.executeEvent(game, event); - } + // has legal target + for (final MagicEventAction act : acts) { + act.executeEvent(game, event); } }; } diff --git a/src/magic/model/event/MagicEvokeEvent.java b/src/magic/model/event/MagicEvokeEvent.java index 1e1157e55e..af4131b962 100644 --- a/src/magic/model/event/MagicEvokeEvent.java +++ b/src/magic/model/event/MagicEvokeEvent.java @@ -14,10 +14,7 @@ public class MagicEvokeEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new SetKickerAction(1)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new SetKickerAction(1)); }; } diff --git a/src/magic/model/event/MagicExcludeEvent.java b/src/magic/model/event/MagicExcludeEvent.java index f651898f8c..b71a3c404e 100644 --- a/src/magic/model/event/MagicExcludeEvent.java +++ b/src/magic/model/event/MagicExcludeEvent.java @@ -17,10 +17,7 @@ public class MagicExcludeEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.getExclude().exclude(game); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.getExclude().exclude(game); }; } diff --git a/src/magic/model/event/MagicExileCardEvent.java b/src/magic/model/event/MagicExileCardEvent.java index 3ed16345ff..25f66013cb 100644 --- a/src/magic/model/event/MagicExileCardEvent.java +++ b/src/magic/model/event/MagicExileCardEvent.java @@ -27,18 +27,14 @@ public class MagicExileCardEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - final MagicLocationType fromLocation=card.getLocation(); - game.doAction(new ShiftCardAction( - card, - fromLocation, - MagicLocationType.Exile - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetCard(game, (final MagicCard card) -> { + final MagicLocationType fromLocation=card.getLocation(); + game.doAction(new ShiftCardAction( + card, + fromLocation, + MagicLocationType.Exile + )); + }); }; } diff --git a/src/magic/model/event/MagicExileCardPayManaCostEvent.java b/src/magic/model/event/MagicExileCardPayManaCostEvent.java index 72a4726e19..b62ab20222 100644 --- a/src/magic/model/event/MagicExileCardPayManaCostEvent.java +++ b/src/magic/model/event/MagicExileCardPayManaCostEvent.java @@ -27,19 +27,14 @@ public class MagicExileCardPayManaCostEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new ShiftCardAction( - card, - MagicLocationType.Graveyard, - MagicLocationType.Exile - )); - game.addFirstEvent(new MagicPayManaCostEvent(event.getSource(), card.getCost())); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new ShiftCardAction( + card, + MagicLocationType.Graveyard, + MagicLocationType.Exile + )); + game.addFirstEvent(new MagicPayManaCostEvent(event.getSource(), card.getCost())); + }); }; } diff --git a/src/magic/model/event/MagicExileEvent.java b/src/magic/model/event/MagicExileEvent.java index 2e3c7bb11b..cdc4963fe8 100644 --- a/src/magic/model/event/MagicExileEvent.java +++ b/src/magic/model/event/MagicExileEvent.java @@ -15,10 +15,7 @@ public class MagicExileEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new RemoveFromPlayAction(event.getPermanent(),MagicLocationType.Exile)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new RemoveFromPlayAction(event.getPermanent(),MagicLocationType.Exile)); }; } diff --git a/src/magic/model/event/MagicExileSelfEvent.java b/src/magic/model/event/MagicExileSelfEvent.java index aaf1d721e4..4341d36236 100644 --- a/src/magic/model/event/MagicExileSelfEvent.java +++ b/src/magic/model/event/MagicExileSelfEvent.java @@ -16,16 +16,13 @@ public class MagicExileSelfEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - final MagicLocationType fromLocation = MagicLocationType.values()[event.getRefInt()]; - game.doAction(new ShiftCardAction( - card, - fromLocation, - MagicLocationType.Exile - )); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + final MagicLocationType fromLocation = MagicLocationType.values()[event.getRefInt()]; + game.doAction(new ShiftCardAction( + card, + fromLocation, + MagicLocationType.Exile + )); }; } diff --git a/src/magic/model/event/MagicExileTopLibraryEvent.java b/src/magic/model/event/MagicExileTopLibraryEvent.java index d5b259c1e1..b4aa31e879 100644 --- a/src/magic/model/event/MagicExileTopLibraryEvent.java +++ b/src/magic/model/event/MagicExileTopLibraryEvent.java @@ -29,13 +29,10 @@ public class MagicExileTopLibraryEvent extends MagicEvent{ cond = MagicConditionFactory.LibraryAtLeast(amount); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardList exile = new MagicCardList(event.getPlayer().getLibrary().getCardsFromTop(event.getRefInt())); - for (final MagicCard card : exile) { - game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary,MagicLocationType.Exile)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCardList exile = new MagicCardList(event.getPlayer().getLibrary().getCardsFromTop(event.getRefInt())); + for (final MagicCard card : exile) { + game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary,MagicLocationType.Exile)); } }; diff --git a/src/magic/model/event/MagicGainLifeEvent.java b/src/magic/model/event/MagicGainLifeEvent.java index 1198c3ff9c..3505b54b0f 100644 --- a/src/magic/model/event/MagicGainLifeEvent.java +++ b/src/magic/model/event/MagicGainLifeEvent.java @@ -20,13 +20,9 @@ public class MagicGainLifeEvent extends MagicEvent { this(permanent, permanent.getController(), amt); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeLifeAction( - event.getPlayer(), - event.getRefInt() - )); - } - }; + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> + game.doAction(new ChangeLifeAction( + event.getPlayer(), + event.getRefInt() + )); } diff --git a/src/magic/model/event/MagicGainProtectionFromEvent.java b/src/magic/model/event/MagicGainProtectionFromEvent.java index 809633bdaa..a0f01af275 100644 --- a/src/magic/model/event/MagicGainProtectionFromEvent.java +++ b/src/magic/model/event/MagicGainProtectionFromEvent.java @@ -20,13 +20,10 @@ public class MagicGainProtectionFromEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new GainAbilityAction( - event.getRefPermanent(), - event.getChosenColor().getProtectionAbility() - )); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new GainAbilityAction( + event.getRefPermanent(), + event.getChosenColor().getProtectionAbility() + )); }; } diff --git a/src/magic/model/event/MagicHandCastActivation.java b/src/magic/model/event/MagicHandCastActivation.java index ac43a092cb..fe7f1b5a04 100644 --- a/src/magic/model/event/MagicHandCastActivation.java +++ b/src/magic/model/event/MagicHandCastActivation.java @@ -70,27 +70,24 @@ public class MagicHandCastActivation extends MagicActivation implemen private final MagicEventAction EVENT_ACTION = genPlayEventAction(MagicLocationType.OwnersHand); protected MagicEventAction genPlayEventAction(final MagicLocationType fromLocation) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - if (card.getCardDefinition().isLand()) { - game.incLandsPlayed(); - } + return (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + if (card.getCardDefinition().isLand()) { + game.incLandsPlayed(); + } - game.doAction(new RemoveCardAction(card, fromLocation)); + game.doAction(new RemoveCardAction(card, fromLocation)); - if (usesStack) { - final MagicCardOnStack cardOnStack=new MagicCardOnStack( - card, - MagicHandCastActivation.this, - game.getPayedCost() - ); - cardOnStack.setFromLocation(fromLocation); - game.doAction(new PutItemOnStackAction(cardOnStack)); - } else { - game.doAction(new PlayCardAction(card,card.getController())); - } + if (usesStack) { + final MagicCardOnStack cardOnStack=new MagicCardOnStack( + card, + MagicHandCastActivation.this, + game.getPayedCost() + ); + cardOnStack.setFromLocation(fromLocation); + game.doAction(new PutItemOnStackAction(cardOnStack)); + } else { + game.doAction(new PlayCardAction(card,card.getController())); } }; } @@ -170,12 +167,9 @@ public class MagicHandCastActivation extends MagicActivation implemen final MagicEvent ev = cardDef.getCardEvent().getEvent(cardOnStack, payedCost); final MagicEventAction effect = ev.getEventAction(); - final MagicEventAction awaken = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - ev.getEventAction().executeEvent(game, event); - game.addEvent(new MagicAwakenEvent(event.getSource(), event.getPlayer(), n)); - } + final MagicEventAction awaken = (final MagicGame game, final MagicEvent event) -> { + ev.getEventAction().executeEvent(game, event); + game.addEvent(new MagicAwakenEvent(event.getSource(), event.getPlayer(), n)); }; return new MagicEvent( ev.getSource(), diff --git a/src/magic/model/event/MagicMillEvent.java b/src/magic/model/event/MagicMillEvent.java index 2a69c0a7bc..61bf640065 100644 --- a/src/magic/model/event/MagicMillEvent.java +++ b/src/magic/model/event/MagicMillEvent.java @@ -29,13 +29,10 @@ public class MagicMillEvent extends MagicEvent{ cond = MagicConditionFactory.LibraryAtLeast(amount); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardList exile = new MagicCardList(event.getPlayer().getLibrary().getCardsFromTop(event.getRefInt())); - for (final MagicCard card : exile) { - game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary,MagicLocationType.Graveyard)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCardList exile = new MagicCardList(event.getPlayer().getLibrary().getCardsFromTop(event.getRefInt())); + for (final MagicCard card : exile) { + game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary,MagicLocationType.Graveyard)); } }; diff --git a/src/magic/model/event/MagicMorphCastActivation.java b/src/magic/model/event/MagicMorphCastActivation.java index b449eb210f..f5a8e8050e 100644 --- a/src/magic/model/event/MagicMorphCastActivation.java +++ b/src/magic/model/event/MagicMorphCastActivation.java @@ -107,13 +107,10 @@ public class MagicMorphCastActivation extends MagicHandCastActivation { }; } - private final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - game.doAction(new RemoveCardAction(card,MagicLocationType.OwnersHand)); - game.doAction(new PutItemOnStackAction(genMorphSpell(card))); - } + private final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + game.doAction(new RemoveCardAction(card,MagicLocationType.OwnersHand)); + game.doAction(new PutItemOnStackAction(genMorphSpell(card))); }; @Override diff --git a/src/magic/model/event/MagicMulliganEvent.java b/src/magic/model/event/MagicMulliganEvent.java index 73758cf913..84faabfd31 100644 --- a/src/magic/model/event/MagicMulliganEvent.java +++ b/src/magic/model/event/MagicMulliganEvent.java @@ -21,16 +21,13 @@ public class MagicMulliganEvent extends MagicEvent { "PN may$ take a mulligan." ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer player = event.getPlayer(); - if (event.isYes()) { - final MagicCardList hand = new MagicCardList(player.getHand()); - game.doAction(new ShuffleCardsIntoLibraryAction(hand, MagicLocationType.OwnersHand)); - game.doAction(new DrawAction(player, hand.size() - 1)); - game.addEvent(new MagicMulliganEvent(player)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer player = event.getPlayer(); + if (event.isYes()) { + final MagicCardList hand = new MagicCardList(player.getHand()); + game.doAction(new ShuffleCardsIntoLibraryAction(hand, MagicLocationType.OwnersHand)); + game.doAction(new DrawAction(player, hand.size() - 1)); + game.addEvent(new MagicMulliganEvent(player)); } }; } diff --git a/src/magic/model/event/MagicPayLifeEvent.java b/src/magic/model/event/MagicPayLifeEvent.java index e4483fb07b..b1a98ffe3b 100644 --- a/src/magic/model/event/MagicPayLifeEvent.java +++ b/src/magic/model/event/MagicPayLifeEvent.java @@ -11,6 +11,9 @@ public class MagicPayLifeEvent extends MagicEvent { private final MagicCondition cond; + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> + game.doAction(new ChangeLifeAction(event.getPlayer(), -event.getRefInt())); + public MagicPayLifeEvent(final MagicSource source,final int amount) { this(source, source.getController(), amount); } @@ -19,13 +22,9 @@ public class MagicPayLifeEvent extends MagicEvent { super( source, player, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeLifeAction(event.getPlayer(),-amount)); - } - }, - "Pay "+amount+" life." + amount, + EVENT_ACTION, + "Pay RN life." ); cond = MagicConditionFactory.YouLifeAtLeast(amount); } diff --git a/src/magic/model/event/MagicPermanentActivation.java b/src/magic/model/event/MagicPermanentActivation.java index f226ef15b5..67999d77a6 100644 --- a/src/magic/model/event/MagicPermanentActivation.java +++ b/src/magic/model/event/MagicPermanentActivation.java @@ -76,18 +76,15 @@ public abstract class MagicPermanentActivation extends MagicActivation { + final MagicPermanentActivation permanentActivation = event.getRefPermanentActivation(); + final MagicPermanent permanent = event.getPermanent(); + final MagicAbilityOnStack abilityOnStack = new MagicAbilityOnStack( + permanentActivation, + permanent, + game.getPayedCost() + ); + game.doAction(new PutItemOnStackAction(abilityOnStack)); }; @Override diff --git a/src/magic/model/event/MagicPlayAbilityEvent.java b/src/magic/model/event/MagicPlayAbilityEvent.java index 897e7d2b2a..9b6641e851 100644 --- a/src/magic/model/event/MagicPlayAbilityEvent.java +++ b/src/magic/model/event/MagicPlayAbilityEvent.java @@ -21,11 +21,9 @@ public class MagicPlayAbilityEvent extends MagicEvent { ); cond = condition; } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new PlayAbilityAction(event.getPermanent())); - } + + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new PlayAbilityAction(event.getPermanent())); }; @Override diff --git a/src/magic/model/event/MagicPlayAuraEvent.java b/src/magic/model/event/MagicPlayAuraEvent.java index 1a70b3cb1b..cc08faef09 100644 --- a/src/magic/model/event/MagicPlayAuraEvent.java +++ b/src/magic/model/event/MagicPlayAuraEvent.java @@ -44,10 +44,8 @@ public class MagicPlayAuraEvent extends MagicSpellCardEvent { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new PlayCardFromStackAction(event.getCardOnStack(),creature)); - } + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new PlayCardFromStackAction(event.getCardOnStack(),creature)); }); } diff --git a/src/magic/model/event/MagicPopulateEvent.java b/src/magic/model/event/MagicPopulateEvent.java index 4723335620..c7eb325db8 100644 --- a/src/magic/model/event/MagicPopulateEvent.java +++ b/src/magic/model/event/MagicPopulateEvent.java @@ -15,19 +15,14 @@ public class MagicPopulateEvent extends MagicEvent { source, MagicTargetChoice.CREATURE_TOKEN_YOU_CONTROL, MagicCopyPermanentPicker.create(), - EA, + EVENT_ACTION, "Put a token onto the battlefield that's a copy of a creature token$ you control." ); } - private static final MagicEventAction EA = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new PlayTokenAction(event.getPlayer(), creature.getCardDefinition())); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new PlayTokenAction(event.getPlayer(), creature.getCardDefinition())); + }); }; } diff --git a/src/magic/model/event/MagicPriorityEvent.java b/src/magic/model/event/MagicPriorityEvent.java index aa4dbd3d88..99d210dcf5 100644 --- a/src/magic/model/event/MagicPriorityEvent.java +++ b/src/magic/model/event/MagicPriorityEvent.java @@ -9,64 +9,60 @@ import magic.model.phase.MagicStep; public class MagicPriorityEvent extends MagicEvent { - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - - final MagicPlayChoiceResult playChoiceResult = event.getPlayChoice(); - if (playChoiceResult==MagicPlayChoiceResult.PASS || - playChoiceResult==MagicPlayChoiceResult.SKIP) { - game.incrementPriorityPassedCount(); - // when passing, the last played activation can no longer be played. - if (playChoiceResult==MagicPlayChoiceResult.PASS) { - game.getPriorityPlayer().getActivationPriority().incActivationId(); - } - if (game.getPriorityPassed()) { - game.setPriorityPassed(false); - game.resolve(); - } else { - game.setPriorityPassed(true); - switch (game.getStep()) { - case ActivePlayer: - game.setStep(MagicStep.OtherPlayer); - break; - case OtherPlayer: - game.setStep(MagicStep.ActivePlayer); - break; - default: - throw new IllegalStateException("Can not pass in "+game.getStep()); - } - } - } else { - // Clear priority passed only when stack is used. - final MagicSourceActivation sourceActivation = playChoiceResult.sourceActivation; - if (sourceActivation.usesStack()) { - game.setPriorityPassed(false); - } - - // set activation/priority of controller - sourceActivation.changeActivationPriority(); - - // reset payed costs - game.resetPayedCost(); - - // pay costs without choices first, eg {T} - for (final MagicEvent costEvent : sourceActivation.getCostEvent()) { - if (costEvent.hasChoice() == false) { - game.executeEvent(costEvent, MagicEvent.NO_CHOICE_RESULTS); - } - } - - // then pay costs with choices. eg mana cost - for (final MagicEvent costEvent : sourceActivation.getCostEvent()) { - if (costEvent.hasChoice() == true) { - game.addEvent(costEvent); - } - } - - game.addEvent(sourceActivation.getEvent()); + final MagicPlayChoiceResult playChoiceResult = event.getPlayChoice(); + if (playChoiceResult==MagicPlayChoiceResult.PASS || + playChoiceResult==MagicPlayChoiceResult.SKIP) { + game.incrementPriorityPassedCount(); + // when passing, the last played activation can no longer be played. + if (playChoiceResult==MagicPlayChoiceResult.PASS) { + game.getPriorityPlayer().getActivationPriority().incActivationId(); } + if (game.getPriorityPassed()) { + game.setPriorityPassed(false); + game.resolve(); + } else { + game.setPriorityPassed(true); + switch (game.getStep()) { + case ActivePlayer: + game.setStep(MagicStep.OtherPlayer); + break; + case OtherPlayer: + game.setStep(MagicStep.ActivePlayer); + break; + default: + throw new IllegalStateException("Can not pass in "+game.getStep()); + } + } + } else { + // Clear priority passed only when stack is used. + final MagicSourceActivation sourceActivation = playChoiceResult.sourceActivation; + if (sourceActivation.usesStack()) { + game.setPriorityPassed(false); + } + + // set activation/priority of controller + sourceActivation.changeActivationPriority(); + + // reset payed costs + game.resetPayedCost(); + + // pay costs without choices first, eg {T} + for (final MagicEvent costEvent : sourceActivation.getCostEvent()) { + if (costEvent.hasChoice() == false) { + game.executeEvent(costEvent, MagicEvent.NO_CHOICE_RESULTS); + } + } + + // then pay costs with choices. eg mana cost + for (final MagicEvent costEvent : sourceActivation.getCostEvent()) { + if (costEvent.hasChoice() == true) { + game.addEvent(costEvent); + } + } + + game.addEvent(sourceActivation.getEvent()); } }; diff --git a/src/magic/model/event/MagicPutCardOnStackEvent.java b/src/magic/model/event/MagicPutCardOnStackEvent.java index 43d0197b4e..dcfccc59c8 100644 --- a/src/magic/model/event/MagicPutCardOnStackEvent.java +++ b/src/magic/model/event/MagicPutCardOnStackEvent.java @@ -19,24 +19,21 @@ public class MagicPutCardOnStackEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardOnStack cardOnStack = new MagicCardOnStack( - event.getCard(), - event.getPlayer(), - game.getPayedCost() - ); - final int locations = event.getRefInt(); - final MagicLocationType from = MagicLocationType.values()[locations / 10]; - final MagicLocationType to = MagicLocationType.values()[locations % 10]; - cardOnStack.setFromLocation(from); - cardOnStack.setMoveLocation(to); - final MagicCard card = event.getCard(); - if (card.isToken() == false) { - game.doAction(new RemoveCardAction(card, from)); - } - game.doAction(new PutItemOnStackAction(cardOnStack)); + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCardOnStack cardOnStack = new MagicCardOnStack( + event.getCard(), + event.getPlayer(), + game.getPayedCost() + ); + final int locations = event.getRefInt(); + final MagicLocationType from = MagicLocationType.values()[locations / 10]; + final MagicLocationType to = MagicLocationType.values()[locations % 10]; + cardOnStack.setFromLocation(from); + cardOnStack.setMoveLocation(to); + final MagicCard card = event.getCard(); + if (card.isToken() == false) { + game.doAction(new RemoveCardAction(card, from)); } + game.doAction(new PutItemOnStackAction(cardOnStack)); }; } diff --git a/src/magic/model/event/MagicPutCounterEvent.java b/src/magic/model/event/MagicPutCounterEvent.java index f49e1a3f98..290d03d1d7 100644 --- a/src/magic/model/event/MagicPutCounterEvent.java +++ b/src/magic/model/event/MagicPutCounterEvent.java @@ -27,19 +27,14 @@ public class MagicPutCounterEvent extends MagicEvent { } private static final MagicEventAction EventActionTarget(final MagicCounterType type) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new ChangeCountersAction( - creature, - type, - event.getRefInt() - )); - } - }); - } + return (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new ChangeCountersAction( + creature, + type, + event.getRefInt() + )); + }); }; } @@ -53,15 +48,12 @@ public class MagicPutCounterEvent extends MagicEvent { } private static final MagicEventAction EventAction(final MagicCounterType type) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - type, - event.getRefInt() - )); - } + return (final MagicGame game, final MagicEvent event) -> { + game.doAction(new ChangeCountersAction( + event.getPermanent(), + type, + event.getRefInt() + )); }; } } diff --git a/src/magic/model/event/MagicPutOntoBattlefieldEvent.java b/src/magic/model/event/MagicPutOntoBattlefieldEvent.java index 4070e4c05e..c574c703cf 100644 --- a/src/magic/model/event/MagicPutOntoBattlefieldEvent.java +++ b/src/magic/model/event/MagicPutOntoBattlefieldEvent.java @@ -37,21 +37,16 @@ public class MagicPutOntoBattlefieldEvent extends MagicEvent { } private static final MagicEventAction EventAction(final List mods) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - // choice could be MagicMayChoice or MagicTargetChoice, the condition below takes care of both cases - if (event.isNo() == false) { - event.processTargetCard(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - game.logAppendMessage( - event.getPlayer(), - String.format("Chosen (%s).", MagicMessage.getCardToken(card)) - ); - game.doAction(new ReturnCardAction(MagicLocationType.OwnersHand,card,event.getPlayer(),mods)); - } - }); - } + return (final MagicGame game, final MagicEvent event) -> { + // choice could be MagicMayChoice or MagicTargetChoice, the condition below takes care of both cases + if (event.isNo() == false) { + event.processTargetCard(game, (final MagicCard card) -> { + game.logAppendMessage( + event.getPlayer(), + String.format("Chosen (%s).", MagicMessage.getCardToken(card)) + ); + game.doAction(new ReturnCardAction(MagicLocationType.OwnersHand,card,event.getPlayer(),mods)); + }); } }; } diff --git a/src/magic/model/event/MagicRedirectDamageEvent.java b/src/magic/model/event/MagicRedirectDamageEvent.java index ffc3ee3a68..79e84073b9 100644 --- a/src/magic/model/event/MagicRedirectDamageEvent.java +++ b/src/magic/model/event/MagicRedirectDamageEvent.java @@ -25,24 +25,19 @@ public class MagicRedirectDamageEvent extends MagicEvent { } private static final MagicEventAction EventAction(final int amount, final boolean isCombat) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.isYes()) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent planeswalker) { - final MagicDamage damage = isCombat ? - MagicDamage.Combat(event.getSource(), planeswalker, amount) : - new MagicDamage(event.getSource(), planeswalker, amount); - game.doAction(new DealDamageAction(damage)); - } - }); - } else { + return (final MagicGame game, final MagicEvent event) -> { + if (event.isYes()) { + event.processTargetPermanent(game, (final MagicPermanent planeswalker) -> { final MagicDamage damage = isCombat ? - MagicDamage.Combat(event.getSource(), event.getRefPlayer(), amount) : - new MagicDamage(event.getSource(), event.getRefPlayer(), amount); - game.doAction(DealDamageAction.NoRedirect(damage)); - } + MagicDamage.Combat(event.getSource(), planeswalker, amount) : + new MagicDamage(event.getSource(), planeswalker, amount); + game.doAction(new DealDamageAction(damage)); + }); + } else { + final MagicDamage damage = isCombat ? + MagicDamage.Combat(event.getSource(), event.getRefPlayer(), amount) : + new MagicDamage(event.getSource(), event.getRefPlayer(), amount); + game.doAction(DealDamageAction.NoRedirect(damage)); } }; } diff --git a/src/magic/model/event/MagicRemoveCounterChosenEvent.java b/src/magic/model/event/MagicRemoveCounterChosenEvent.java index 7daea374d9..004aa934de 100644 --- a/src/magic/model/event/MagicRemoveCounterChosenEvent.java +++ b/src/magic/model/event/MagicRemoveCounterChosenEvent.java @@ -21,19 +21,14 @@ public class MagicRemoveCounterChosenEvent extends MagicEvent { MagicTargetFilterFactory.creature(counterType, Control.You), "a creature you control with a " + counterType.getName() + " counter on it" ), - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent perm) { - game.doAction(new ChangeCountersAction( - perm, - counterType, - -1 - )); - } - }); - } + (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent perm) -> { + game.doAction(new ChangeCountersAction( + perm, + counterType, + -1 + )); + }); }, "Remove a " + counterType.getName() + " counter from a creature$ you control." ); diff --git a/src/magic/model/event/MagicRemoveCounterEvent.java b/src/magic/model/event/MagicRemoveCounterEvent.java index aa2dc8c748..7cdb93c569 100644 --- a/src/magic/model/event/MagicRemoveCounterEvent.java +++ b/src/magic/model/event/MagicRemoveCounterEvent.java @@ -14,15 +14,12 @@ public class MagicRemoveCounterEvent extends MagicEvent { public MagicRemoveCounterEvent(final MagicPermanent permanent,final MagicCounterType counterType,final int amount) { super( permanent, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - counterType, - -amount - )); - } + (final MagicGame game, final MagicEvent event) -> { + game.doAction(new ChangeCountersAction( + event.getPermanent(), + counterType, + -amount + )); }, genDescription(permanent,counterType,amount) ); diff --git a/src/magic/model/event/MagicRepeatedCardsEvent.java b/src/magic/model/event/MagicRepeatedCardsEvent.java index 632ed4d646..b3a687c37d 100644 --- a/src/magic/model/event/MagicRepeatedCardsEvent.java +++ b/src/magic/model/event/MagicRepeatedCardsEvent.java @@ -15,14 +15,11 @@ public class MagicRepeatedCardsEvent extends MagicEvent { source, targetChoice, amt - 1, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicEvent ev = factory.getEvent(event); - ev.executeEvent(game, event.getChosen()); - for (int i = 0; i < event.getRefInt(); i++) { - game.addFirstEvent(ev); - } + (final MagicGame game, final MagicEvent event) -> { + final MagicEvent ev = factory.getEvent(event); + ev.executeEvent(game, event.getChosen()); + for (int i = 0; i < event.getRefInt(); i++) { + game.addFirstEvent(ev); } }, factory.getEvent(source, targetChoice).getDescription() diff --git a/src/magic/model/event/MagicRepeatedPermanentsEvent.java b/src/magic/model/event/MagicRepeatedPermanentsEvent.java index b50a40532a..a50fbf03ad 100644 --- a/src/magic/model/event/MagicRepeatedPermanentsEvent.java +++ b/src/magic/model/event/MagicRepeatedPermanentsEvent.java @@ -15,14 +15,11 @@ public class MagicRepeatedPermanentsEvent extends MagicEvent { source, targetChoice, amt - 1, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicEvent ev = factory.getEvent(event); - ev.executeEvent(game, event.getChosen()); - for (int i = 0; i < event.getRefInt(); i++) { - game.addFirstEvent(ev); - } + (final MagicGame game, final MagicEvent event) -> { + final MagicEvent ev = factory.getEvent(event); + ev.executeEvent(game, event.getChosen()); + for (int i = 0; i < event.getRefInt(); i++) { + game.addFirstEvent(ev); } }, factory.getEvent(source, targetChoice).getDescription() diff --git a/src/magic/model/event/MagicReturnCardEvent.java b/src/magic/model/event/MagicReturnCardEvent.java index 25747ae9e8..36a2e81b72 100644 --- a/src/magic/model/event/MagicReturnCardEvent.java +++ b/src/magic/model/event/MagicReturnCardEvent.java @@ -21,18 +21,13 @@ public class MagicReturnCardEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new DiscardCardAction( - event.getPlayer(), - card, - MagicLocationType.TopOfOwnersLibrary - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new DiscardCardAction( + event.getPlayer(), + card, + MagicLocationType.TopOfOwnersLibrary + )); + }); }; } diff --git a/src/magic/model/event/MagicRuleEventAction.java b/src/magic/model/event/MagicRuleEventAction.java index bbfa299724..784417a200 100644 --- a/src/magic/model/event/MagicRuleEventAction.java +++ b/src/magic/model/event/MagicRuleEventAction.java @@ -1489,14 +1489,12 @@ public enum MagicRuleEventAction { @Override public MagicEventAction getAction(final Matcher matcher) { final List mods = ARG.mods(matcher); - return (game, event) -> event.processTargetCard(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new ReanimateAction( - card, - event.getPlayer(), - mods - )); - } + return (game, event) -> event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new ReanimateAction( + card, + event.getPlayer(), + mods + )); }); } }, @@ -1793,11 +1791,8 @@ public enum MagicRuleEventAction { @Override public MagicEventAction getAction(final Matcher matcher) { final int amount = Integer.parseInt(matcher.group("amount")); - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.addEvent(new MagicScryXEvent(event.getSource(),event.getPlayer(),amount)); - } + return (final MagicGame game, final MagicEvent event) -> { + game.addEvent(new MagicScryXEvent(event.getSource(),event.getPlayer(),amount)); }; } }, @@ -1809,15 +1804,10 @@ public enum MagicRuleEventAction { ) { @Override public MagicEventAction getAction(final Matcher matcher) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPlayer(game,new MagicPlayerAction() { - public void doAction(final MagicPlayer player) { - game.doAction(new MagicRevealAction(player.getHand())); - } - }); - } + return (final MagicGame game, final MagicEvent event) -> { + event.processTargetPlayer(game, (final MagicPlayer player) -> { + game.doAction(new MagicRevealAction(player.getHand())); + }); }; } }, @@ -1950,20 +1940,16 @@ public enum MagicRuleEventAction { new MagicNoCombatTargetPicker(true, true, false), MagicTiming.FirstMain, "Detain", - (game, event) -> event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new DetainAction(event.getPlayer(), creature)); - } + (game, event) -> event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new DetainAction(event.getPlayer(), creature)); }) ), CopySpell( "copy " + ARG.CHOICE + "\\. You may choose new targets for (the|that) copy(\\.|,)?", MagicTiming.Spell, "Copy", - (game, event) -> event.processTargetCardOnStack(game, new MagicCardOnStackAction() { - public void doAction(final MagicCardOnStack item) { - game.doAction(new CopyCardOnStackAction(event.getPlayer(), item)); - } + (game, event) -> event.processTargetCardOnStack(game, (final MagicCardOnStack item) -> { + game.doAction(new CopyCardOnStackAction(event.getPlayer(), item)); }) ), Monstrosity( diff --git a/src/magic/model/event/MagicSacrificeEvent.java b/src/magic/model/event/MagicSacrificeEvent.java index f6e3281722..7c3822c160 100644 --- a/src/magic/model/event/MagicSacrificeEvent.java +++ b/src/magic/model/event/MagicSacrificeEvent.java @@ -14,10 +14,7 @@ public class MagicSacrificeEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new SacrificeAction(event.getPermanent())); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new SacrificeAction(event.getPermanent())); }; } diff --git a/src/magic/model/event/MagicSacrificePermanentEvent.java b/src/magic/model/event/MagicSacrificePermanentEvent.java index 3c57acd605..889c0ab194 100644 --- a/src/magic/model/event/MagicSacrificePermanentEvent.java +++ b/src/magic/model/event/MagicSacrificePermanentEvent.java @@ -32,14 +32,9 @@ public class MagicSacrificePermanentEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent permanent) { - game.doAction(new SacrificeAction(permanent)); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + game.doAction(new SacrificeAction(permanent)); + }); }; } diff --git a/src/magic/model/event/MagicScavengeActivation.java b/src/magic/model/event/MagicScavengeActivation.java index 4d5e882463..41ebfeb725 100644 --- a/src/magic/model/event/MagicScavengeActivation.java +++ b/src/magic/model/event/MagicScavengeActivation.java @@ -63,14 +63,12 @@ public class MagicScavengeActivation extends MagicCardAbilityActivation { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game, new MagicPermanentAction() { - public void doAction(final MagicPermanent perm) { - game.doAction(new ChangeCountersAction( - perm, - MagicCounterType.PlusOne, - event.getRefInt() - )); - } + event.processTargetPermanent(game, (final MagicPermanent perm) -> { + game.doAction(new ChangeCountersAction( + perm, + MagicCounterType.PlusOne, + event.getRefInt() + )); }); } } diff --git a/src/magic/model/event/MagicScryEvent.java b/src/magic/model/event/MagicScryEvent.java index cd538abada..a3696b11e2 100644 --- a/src/magic/model/event/MagicScryEvent.java +++ b/src/magic/model/event/MagicScryEvent.java @@ -36,20 +36,17 @@ public class MagicScryEvent extends MagicEvent { } private static final MagicEventAction EventAction(final boolean trigger) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPlayer p = event.getPlayer(); - if (event.isYes()) { - game.logAppendMessage(p, p + " looks at the top card of his or her library and moves it to the bottom."); - game.doAction(new ScryAction(p)); - } else { - game.logAppendMessage(p, p + " looks at the top card of his or her library and puts it back on top."); - } - //Scry triggers even if the card is not moved. Only once regardless of amount of cards scryed - if (trigger) { - game.executeTrigger(MagicTriggerType.WhenScry,p); - } + return (final MagicGame game, final MagicEvent event) -> { + final MagicPlayer p = event.getPlayer(); + if (event.isYes()) { + game.logAppendMessage(p, p + " looks at the top card of his or her library and moves it to the bottom."); + game.doAction(new ScryAction(p)); + } else { + game.logAppendMessage(p, p + " looks at the top card of his or her library and puts it back on top."); + } + //Scry triggers even if the card is not moved. Only once regardless of amount of cards scryed + if (trigger) { + game.executeTrigger(MagicTriggerType.WhenScry,p); } }; }; diff --git a/src/magic/model/event/MagicScryXEvent.java b/src/magic/model/event/MagicScryXEvent.java index e2c1c7960c..722c507ef5 100644 --- a/src/magic/model/event/MagicScryXEvent.java +++ b/src/magic/model/event/MagicScryXEvent.java @@ -22,56 +22,43 @@ public class MagicScryXEvent extends MagicEvent { ); } - private static final MagicEventAction StartScrying = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final int X = event.getRefInt(); - final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); + private static final MagicEventAction TopAction = (final MagicGame game, final MagicEvent event) -> { + event.processChosenCards(game, (final MagicCard card) -> { + game.doAction(new ScryComplAction(event.getPlayer(), card, false)); + game.logAppendMessage(event.getPlayer(), event.getPlayer() + " puts back a card to the top of his or her library."); + }); + }; + + private static final MagicEventAction BottomAction = (final MagicGame game, final MagicEvent event) -> { + final MagicCardList processedCards = new MagicCardList(); + event.processChosenCards(game, (final MagicCard card) -> { + processedCards.add(card); + game.doAction(new ScryComplAction(event.getPlayer(), card, true)); + game.logAppendMessage(event.getPlayer(), event.getPlayer() + " moves a card from top of his or her library to the bottom."); + }); + final int X = event.getRefInt() - processedCards.size(); + final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); + if (choiceList.size() > 1) { game.addFirstEvent(new MagicEvent( event.getSource(), event.getPlayer(), - new MagicFromCardListChoice(choiceList, choiceList.size(), true, "to be put on the bottom of your library"), - choiceList.size(), - BottomAction, + new MagicFromCardListChoice(choiceList, choiceList.size(), "to be put on the top of your library"), + TopAction, "" )); } }; - private static final MagicEventAction BottomAction = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardList processedCards = new MagicCardList(); - event.processChosenCards(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - processedCards.add(card); - game.doAction(new ScryComplAction(event.getPlayer(), card, true)); - game.logAppendMessage(event.getPlayer(), event.getPlayer() + " moves a card from top of his or her library to the bottom."); - } - }); - final int X = event.getRefInt() - processedCards.size(); - final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); - if (choiceList.size() > 1) { - game.addFirstEvent(new MagicEvent( - event.getSource(), - event.getPlayer(), - new MagicFromCardListChoice(choiceList, choiceList.size(), "to be put on the top of your library"), - TopAction, - "" - )); - } - } - }; - - private static final MagicEventAction TopAction = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processChosenCards(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new ScryComplAction(event.getPlayer(), card, false)); - game.logAppendMessage(event.getPlayer(), event.getPlayer() + " puts back a card to the top of his or her library."); - } - }); - } + private static final MagicEventAction StartScrying = (final MagicGame game, final MagicEvent event) -> { + final int X = event.getRefInt(); + final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); + game.addFirstEvent(new MagicEvent( + event.getSource(), + event.getPlayer(), + new MagicFromCardListChoice(choiceList, choiceList.size(), true, "to be put on the bottom of your library"), + choiceList.size(), + BottomAction, + "" + )); }; } diff --git a/src/magic/model/event/MagicSearchOntoBattlefieldEvent.java b/src/magic/model/event/MagicSearchOntoBattlefieldEvent.java index d8e13a9469..a3a0d325e7 100644 --- a/src/magic/model/event/MagicSearchOntoBattlefieldEvent.java +++ b/src/magic/model/event/MagicSearchOntoBattlefieldEvent.java @@ -43,37 +43,30 @@ public class MagicSearchOntoBattlefieldEvent extends MagicEvent { } private static final MagicEventAction EventAction(final List mods) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - // choice could be MagicMayChoice or MagicTargetChoice or MagicFromCardListChoice - if (event.isNo()) { - // do nothing - } else if (event.getChosen()[0] instanceof MagicCardChoiceResult) { - event.processChosenCards(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - game.logAppendMessage( - event.getPlayer(), - String.format("Found (%s).", MagicMessage.getCardToken(card)) - ); - game.doAction(new AIRevealAction(card)); - game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary,card,event.getPlayer(),mods)); - } - }); - game.doAction(new ShuffleLibraryAction(event.getPlayer())); - } else { - event.processTargetCard(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - game.logAppendMessage( - event.getPlayer(), - String.format("Found (%s).", MagicMessage.getCardToken(card)) - ); - game.doAction(new AIRevealAction(card)); - game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary,card,event.getPlayer(),mods)); - } - }); - game.doAction(new ShuffleLibraryAction(event.getPlayer())); - } + return (final MagicGame game, final MagicEvent event) -> { + // choice could be MagicMayChoice or MagicTargetChoice or MagicFromCardListChoice + if (event.isNo()) { + // do nothing + } else if (event.getChosen()[0] instanceof MagicCardChoiceResult) { + event.processChosenCards(game, (final MagicCard card) -> { + game.logAppendMessage( + event.getPlayer(), + String.format("Found (%s).", MagicMessage.getCardToken(card)) + ); + game.doAction(new AIRevealAction(card)); + game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary,card,event.getPlayer(),mods)); + }); + game.doAction(new ShuffleLibraryAction(event.getPlayer())); + } else { + event.processTargetCard(game, (final MagicCard card) -> { + game.logAppendMessage( + event.getPlayer(), + String.format("Found (%s).", MagicMessage.getCardToken(card)) + ); + game.doAction(new AIRevealAction(card)); + game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary,card,event.getPlayer(),mods)); + }); + game.doAction(new ShuffleLibraryAction(event.getPlayer())); } }; } diff --git a/src/magic/model/event/MagicSearchToLocationEvent.java b/src/magic/model/event/MagicSearchToLocationEvent.java index 14aeb6d210..f766041040 100644 --- a/src/magic/model/event/MagicSearchToLocationEvent.java +++ b/src/magic/model/event/MagicSearchToLocationEvent.java @@ -44,43 +44,36 @@ public class MagicSearchToLocationEvent extends MagicEvent { private static final MagicEventAction ACTION_WITHOUT_REVEAL = genEventAction(false); private static final MagicEventAction genEventAction(final boolean revealed) { - return new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicLocationType toLocation = MagicLocationType.values()[event.getRefInt()]; + return (final MagicGame game, final MagicEvent event) -> { + final MagicLocationType toLocation = MagicLocationType.values()[event.getRefInt()]; - // choice could be MagicMayChoice or MagicTargetChoice or MagicFromCardListChoice - if (event.isNo()) { - // do nothing - } else if (event.getChosen()[0] instanceof MagicCardChoiceResult) { - game.doAction(new ShuffleLibraryAction(event.getPlayer())); - event.processChosenCards(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - if (revealed) { - game.logAppendMessage( - event.getPlayer(), - String.format("Found (%s).", MagicMessage.getCardToken(card)) - ); - game.doAction(new AIRevealAction(card)); - } - game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary, toLocation)); - } - }); - } else { - game.doAction(new ShuffleLibraryAction(event.getPlayer())); - event.processTargetCard(game, new MagicCardAction() { - public void doAction(final MagicCard card) { - if (revealed) { - game.logAppendMessage( - event.getPlayer(), - String.format("Found (%s).", MagicMessage.getCardToken(card)) - ); - game.doAction(new AIRevealAction(card)); - } - game.doAction(new ShiftCardAction(card, MagicLocationType.OwnersLibrary, toLocation)); - } - }); - } + // choice could be MagicMayChoice or MagicTargetChoice or MagicFromCardListChoice + if (event.isNo()) { + // do nothing + } else if (event.getChosen()[0] instanceof MagicCardChoiceResult) { + game.doAction(new ShuffleLibraryAction(event.getPlayer())); + event.processChosenCards(game, (final MagicCard card) -> { + if (revealed) { + game.logAppendMessage( + event.getPlayer(), + String.format("Found (%s).", MagicMessage.getCardToken(card)) + ); + game.doAction(new AIRevealAction(card)); + } + game.doAction(new ShiftCardAction(card,MagicLocationType.OwnersLibrary, toLocation)); + }); + } else { + game.doAction(new ShuffleLibraryAction(event.getPlayer())); + event.processTargetCard(game, (final MagicCard card) -> { + if (revealed) { + game.logAppendMessage( + event.getPlayer(), + String.format("Found (%s).", MagicMessage.getCardToken(card)) + ); + game.doAction(new AIRevealAction(card)); + } + game.doAction(new ShiftCardAction(card, MagicLocationType.OwnersLibrary, toLocation)); + }); } }; } diff --git a/src/magic/model/event/MagicSoulbondEvent.java b/src/magic/model/event/MagicSoulbondEvent.java index bd584a030e..453b5d70a2 100644 --- a/src/magic/model/event/MagicSoulbondEvent.java +++ b/src/magic/model/event/MagicSoulbondEvent.java @@ -37,20 +37,15 @@ public class MagicSoulbondEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.isYes()) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new SoulbondAction( - event.getPermanent(), - creature, - true - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + if (event.isYes()) { + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new SoulbondAction( + event.getPermanent(), + creature, + true + )); + }); } }; } diff --git a/src/magic/model/event/MagicSpellCastEvent.java b/src/magic/model/event/MagicSpellCastEvent.java index 1c91928bd9..07d2c0d2d2 100644 --- a/src/magic/model/event/MagicSpellCastEvent.java +++ b/src/magic/model/event/MagicSpellCastEvent.java @@ -17,24 +17,21 @@ public class MagicSpellCastEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); - // execute spell is cast triggers - for (final ThisSpellIsCastTrigger trigger : itemOnStack.getCardDefinition().getSpellIsCastTriggers()) { - game.executeTrigger( - trigger, - MagicPermanent.NONE, - itemOnStack.getSource(), - (MagicCardOnStack)itemOnStack - ); - } - - // execute other spell is cast triggers - game.executeTrigger(MagicTriggerType.WhenOtherSpellIsCast,itemOnStack); - itemOnStack.getController().incSpellsCast(); + // execute spell is cast triggers + for (final ThisSpellIsCastTrigger trigger : itemOnStack.getCardDefinition().getSpellIsCastTriggers()) { + game.executeTrigger( + trigger, + MagicPermanent.NONE, + itemOnStack.getSource(), + (MagicCardOnStack)itemOnStack + ); } + + // execute other spell is cast triggers + game.executeTrigger(MagicTriggerType.WhenOtherSpellIsCast,itemOnStack); + itemOnStack.getController().incSpellsCast(); }; } diff --git a/src/magic/model/event/MagicStackChangeTargetsEvent.java b/src/magic/model/event/MagicStackChangeTargetsEvent.java index 8fe2d52042..6c218cfc43 100644 --- a/src/magic/model/event/MagicStackChangeTargetsEvent.java +++ b/src/magic/model/event/MagicStackChangeTargetsEvent.java @@ -17,11 +17,8 @@ public class MagicStackChangeTargetsEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); - event.setTargetChoice(itemOnStack.getChoiceResults()); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); + event.setTargetChoice(itemOnStack.getChoiceResults()); }; } diff --git a/src/magic/model/event/MagicStackGetChoicesEvent.java b/src/magic/model/event/MagicStackGetChoicesEvent.java index 1269c1d0b1..d06f64ff63 100644 --- a/src/magic/model/event/MagicStackGetChoicesEvent.java +++ b/src/magic/model/event/MagicStackGetChoicesEvent.java @@ -18,17 +18,14 @@ public class MagicStackGetChoicesEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); - itemOnStack.setChoiceResults(event.getChosen()); + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicItemOnStack itemOnStack = event.getRefItemOnStack(); + itemOnStack.setChoiceResults(event.getChosen()); - // trigger WhenTargeted - final MagicTargetChoice tchoice = event.getChoice().getTargetChoice(); - if (tchoice != null && tchoice.isTargeted()) { - game.executeTrigger(MagicTriggerType.WhenTargeted,itemOnStack); - } + // trigger WhenTargeted + final MagicTargetChoice tchoice = event.getChoice().getTargetChoice(); + if (tchoice != null && tchoice.isTargeted()) { + game.executeTrigger(MagicTriggerType.WhenTargeted,itemOnStack); } }; } diff --git a/src/magic/model/event/MagicSuspendActivation.java b/src/magic/model/event/MagicSuspendActivation.java index a02027e9dc..01e3b2a48d 100644 --- a/src/magic/model/event/MagicSuspendActivation.java +++ b/src/magic/model/event/MagicSuspendActivation.java @@ -59,13 +59,10 @@ public class MagicSuspendActivation extends MagicCardAbilityActivation { public MagicEvent getEvent(final MagicSource source) { return new MagicEvent( source, - new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - game.doAction(new ShiftCardAction(card, MagicLocationType.OwnersHand, MagicLocationType.Exile)); - game.doAction(new ChangeCountersAction(card, MagicCounterType.Time, amount)); - } + (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + game.doAction(new ShiftCardAction(card, MagicLocationType.OwnersHand, MagicLocationType.Exile)); + game.doAction(new ChangeCountersAction(card, MagicCounterType.Time, amount)); }, "PN suspends SN. PN exiles SN, with "+amount+" time counters on it." ); diff --git a/src/magic/model/event/MagicTapEvent.java b/src/magic/model/event/MagicTapEvent.java index e049ff7f55..851b985960 100644 --- a/src/magic/model/event/MagicTapEvent.java +++ b/src/magic/model/event/MagicTapEvent.java @@ -17,11 +17,8 @@ public class MagicTapEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new TapAction(event.getPermanent())); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new TapAction(event.getPermanent())); }; @Override diff --git a/src/magic/model/event/MagicTapOrUntapEvent.java b/src/magic/model/event/MagicTapOrUntapEvent.java index 3b4ee3ef33..9323abfb07 100644 --- a/src/magic/model/event/MagicTapOrUntapEvent.java +++ b/src/magic/model/event/MagicTapOrUntapEvent.java @@ -19,16 +19,13 @@ public class MagicTapOrUntapEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPermanent permanent = event.getRefPermanent(); - if (event.isYes()) { - if (permanent.isTapped()) { - game.doAction(new UntapAction(permanent)); - } else { - game.doAction(new TapAction(permanent)); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPermanent permanent = event.getRefPermanent(); + if (event.isYes()) { + if (permanent.isTapped()) { + game.doAction(new UntapAction(permanent)); + } else { + game.doAction(new TapAction(permanent)); } } }; diff --git a/src/magic/model/event/MagicTapPermanentEvent.java b/src/magic/model/event/MagicTapPermanentEvent.java index 2203502fe6..799a3c512c 100644 --- a/src/magic/model/event/MagicTapPermanentEvent.java +++ b/src/magic/model/event/MagicTapPermanentEvent.java @@ -26,14 +26,9 @@ public class MagicTapPermanentEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent permanent) { - game.doAction(new TapAction(permanent)); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + game.doAction(new TapAction(permanent)); + }); }; } diff --git a/src/magic/model/event/MagicTuckCardEvent.java b/src/magic/model/event/MagicTuckCardEvent.java index 77355b7ce8..53b6eb6048 100644 --- a/src/magic/model/event/MagicTuckCardEvent.java +++ b/src/magic/model/event/MagicTuckCardEvent.java @@ -31,18 +31,13 @@ public class MagicTuckCardEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new DiscardCardAction( - event.getPlayer(), - card, - MagicLocationType.BottomOfOwnersLibrary - )); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new DiscardCardAction( + event.getPlayer(), + card, + MagicLocationType.BottomOfOwnersLibrary + )); + }); }; } diff --git a/src/magic/model/event/MagicUniquenessEvent.java b/src/magic/model/event/MagicUniquenessEvent.java index bc14d68060..b234c73a88 100644 --- a/src/magic/model/event/MagicUniquenessEvent.java +++ b/src/magic/model/event/MagicUniquenessEvent.java @@ -28,25 +28,20 @@ public class MagicUniquenessEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent permanent) { - final Collection targets = event.getTargetChoice().getPermanentFilter().filter(event); - for (final MagicPermanent target : targets) { - if (target != permanent) { - game.logAppendMessage( - event.getPlayer(), - String.format("Put %s into its owner's graveyard (Uniqueness rule).", - MagicMessage.getCardToken(target) - ) - ); - game.doAction(new RemoveFromPlayAction(target,MagicLocationType.Graveyard)); - } - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + final Collection targets = event.getTargetChoice().getPermanentFilter().filter(event); + for (final MagicPermanent target : targets) { + if (target != permanent) { + game.logAppendMessage( + event.getPlayer(), + String.format("Put %s into its owner's graveyard (Uniqueness rule).", + MagicMessage.getCardToken(target) + ) + ); + game.doAction(new RemoveFromPlayAction(target,MagicLocationType.Graveyard)); } - }); - } + } + }); }; } diff --git a/src/magic/model/event/MagicUntapEvent.java b/src/magic/model/event/MagicUntapEvent.java index 06fa04f305..7bcabc661d 100644 --- a/src/magic/model/event/MagicUntapEvent.java +++ b/src/magic/model/event/MagicUntapEvent.java @@ -17,11 +17,8 @@ public class MagicUntapEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new UntapAction(event.getPermanent())); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new UntapAction(event.getPermanent())); }; @Override diff --git a/src/magic/model/event/MagicUntapPermanentEvent.java b/src/magic/model/event/MagicUntapPermanentEvent.java index aed9851574..93bce29f11 100644 --- a/src/magic/model/event/MagicUntapPermanentEvent.java +++ b/src/magic/model/event/MagicUntapPermanentEvent.java @@ -28,14 +28,9 @@ public class MagicUntapPermanentEvent extends MagicEvent { ); } - private static final MagicEventAction EVENT_ACTION=new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent permanent) { - game.doAction(new UntapAction(permanent)); - } - }); - } + private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + game.doAction(new UntapAction(permanent)); + }); }; } diff --git a/src/magic/model/trigger/AtYourUpkeepTrigger.java b/src/magic/model/trigger/AtYourUpkeepTrigger.java index db6c0f3f00..4a7b630fb8 100644 --- a/src/magic/model/trigger/AtYourUpkeepTrigger.java +++ b/src/magic/model/trigger/AtYourUpkeepTrigger.java @@ -35,14 +35,11 @@ public abstract class AtYourUpkeepTrigger extends AtUpkeepTrigger { public static AtYourUpkeepTrigger kinship(final String effect, final MagicEventAction action) { return new AtYourUpkeepTrigger() { - final MagicEventAction ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - if (event.isYes()) { - final MagicCard card = event.getRefCard(); - game.doAction(new RevealAction(event.getRefCard())); - action.executeEvent(game, event); - } + final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + if (event.isYes()) { + final MagicCard card = event.getRefCard(); + game.doAction(new RevealAction(event.getRefCard())); + action.executeEvent(game, event); } }; @@ -65,7 +62,7 @@ public abstract class AtYourUpkeepTrigger extends AtUpkeepTrigger { event.getSource(), new MagicMayChoice("Reveal the top card of your library?"), card, - ACTION, + EVENT_ACTION, "" )); break; diff --git a/src/magic/model/trigger/CascadeTrigger.java b/src/magic/model/trigger/CascadeTrigger.java index cc1046633c..951aa35a6f 100644 --- a/src/magic/model/trigger/CascadeTrigger.java +++ b/src/magic/model/trigger/CascadeTrigger.java @@ -75,41 +75,35 @@ public class CascadeTrigger extends ThisSpellIsCastTrigger { } } - private final MagicEventAction CAST_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardList exiled = new MagicCardList(event.getRefCardList()); - if (event.isYes()) { - final MagicCard card = exiled.removeCardAtTop(); - game.doAction(CastCardAction.WithoutManaCost( - event.getPlayer(), - card, - MagicLocationType.Exile, - MagicLocationType.Graveyard - )); - } - game.addEvent(new MagicEvent( - event.getSource(), - event.getPlayer(), - exiled, - RESTORE_CARDS, - "" + private final MagicEventAction RESTORE_CARDS = (final MagicGame game, final MagicEvent event) -> { + final MagicCardList cards = event.getRefCardList(); + cards.shuffle(); + for (final MagicCard card : cards) { + game.doAction(new ShiftCardAction( + card, + MagicLocationType.Exile, + MagicLocationType.BottomOfOwnersLibrary )); } }; - private final MagicEventAction RESTORE_CARDS = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCardList cards = event.getRefCardList(); - cards.shuffle(); - for (final MagicCard card : cards) { - game.doAction(new ShiftCardAction( - card, - MagicLocationType.Exile, - MagicLocationType.BottomOfOwnersLibrary - )); - } + private final MagicEventAction CAST_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCardList exiled = new MagicCardList(event.getRefCardList()); + if (event.isYes()) { + final MagicCard card = exiled.removeCardAtTop(); + game.doAction(CastCardAction.WithoutManaCost( + event.getPlayer(), + card, + MagicLocationType.Exile, + MagicLocationType.Graveyard + )); } + game.addEvent(new MagicEvent( + event.getSource(), + event.getPlayer(), + exiled, + RESTORE_CARDS, + "" + )); }; } diff --git a/src/magic/model/trigger/ChampionTrigger.java b/src/magic/model/trigger/ChampionTrigger.java index d1998aa7a4..d84745eb14 100644 --- a/src/magic/model/trigger/ChampionTrigger.java +++ b/src/magic/model/trigger/ChampionTrigger.java @@ -72,12 +72,10 @@ public class ChampionTrigger extends EntersBattlefieldTrigger { public void executeEvent(final MagicGame game, final MagicEvent event) { final MagicPermanent permanent = event.getPermanent(); if (event.isYes()) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - final ExileLinkAction act = new ExileLinkAction(permanent,creature); - game.doAction(act); - game.executeTrigger(MagicTriggerType.WhenChampioned, act); - } + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + final ExileLinkAction act = new ExileLinkAction(permanent,creature); + game.doAction(act); + game.executeTrigger(MagicTriggerType.WhenChampioned, act); }); } else { game.doAction(new SacrificeAction(permanent)); diff --git a/src/magic/model/trigger/DevourTrigger.java b/src/magic/model/trigger/DevourTrigger.java index 68c368b158..33fe5c141c 100644 --- a/src/magic/model/trigger/DevourTrigger.java +++ b/src/magic/model/trigger/DevourTrigger.java @@ -38,21 +38,19 @@ public class DevourTrigger extends EntersBattlefieldTrigger { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { if (event.isYes()) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - final MagicPermanent permanent = event.getPermanent(); - game.doAction(new SacrificeAction(creature)); - game.doAction(new ChangeCountersAction( - permanent, - MagicCounterType.PlusOne, - amount - )); - game.addEvent(executeTrigger( - game, - permanent, - MagicPayedCost.NO_COST - )); - } + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + final MagicPermanent permanent = event.getPermanent(); + game.doAction(new SacrificeAction(creature)); + game.doAction(new ChangeCountersAction( + permanent, + MagicCounterType.PlusOne, + amount + )); + game.addEvent(executeTrigger( + game, + permanent, + MagicPayedCost.NO_COST + )); }); } } diff --git a/src/magic/model/trigger/EntersBattlefieldTrigger.java b/src/magic/model/trigger/EntersBattlefieldTrigger.java index 439768ff18..2d2e9ea7d7 100644 --- a/src/magic/model/trigger/EntersBattlefieldTrigger.java +++ b/src/magic/model/trigger/EntersBattlefieldTrigger.java @@ -81,16 +81,11 @@ public abstract class EntersBattlefieldTrigger extends MagicTrigger { + event.processTargetPermanent(game, (final MagicPermanent permanent) -> { + game.doAction(ChangeStateAction.Set(event.getPermanent(), MagicPermanentState.Exploit)); + game.doAction(new SacrificeAction(permanent)); + }); }; @Override diff --git a/src/magic/model/trigger/FadeVanishCounterTrigger.java b/src/magic/model/trigger/FadeVanishCounterTrigger.java index 82839a6408..4ba4d9d5f1 100644 --- a/src/magic/model/trigger/FadeVanishCounterTrigger.java +++ b/src/magic/model/trigger/FadeVanishCounterTrigger.java @@ -33,70 +33,55 @@ public class FadeVanishCounterTrigger extends AtUpkeepTrigger { sacrifice = amount == 0; return sacrifice ? new MagicEvent( - permanent, - SAC_PERM, - "PN sacrifices SN." - ): + permanent, + SAC_PERM, + "PN sacrifices SN." + ): new MagicEvent( - permanent, - REMOVE_FADE_COUNTER, - "PN removes a fade counter from SN." - ); + permanent, + REMOVE_FADE_COUNTER, + "PN removes a fade counter from SN." + ); } else if (counterType == MagicCounterType.Time){ sacrifice = amount == 1; return sacrifice ? new MagicEvent( - permanent, - REMOVE_AND_SAC, - "PN removes a time counter from SN. PN sacrifices SN." - ): + permanent, + REMOVE_AND_SAC, + "PN removes a time counter from SN. PN sacrifices SN." + ): new MagicEvent( - permanent, - REMOVE_TIME_COUNTER, - "PN removes a time counter from SN." - ); + permanent, + REMOVE_TIME_COUNTER, + "PN removes a time counter from SN." + ); } return MagicEvent.NONE; } - private static final MagicEventAction SAC_PERM = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new SacrificeAction(event.getPermanent())); - } + private static final MagicEventAction SAC_PERM = (final MagicGame game, final MagicEvent event) -> + game.doAction(new SacrificeAction(event.getPermanent())); + + private static final MagicEventAction REMOVE_TIME_COUNTER = (final MagicGame game, final MagicEvent event) -> + game.doAction(new ChangeCountersAction( + event.getPermanent(), + MagicCounterType.Time, + -1 + )); + + private static final MagicEventAction REMOVE_AND_SAC = (final MagicGame game, final MagicEvent event) -> { + game.doAction(new ChangeCountersAction( + event.getPermanent(), + MagicCounterType.Time, + -1 + )); + game.doAction(new SacrificeAction(event.getPermanent())); }; - private static final MagicEventAction REMOVE_TIME_COUNTER = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - MagicCounterType.Time, - -1 - )); - } - }; - - private static final MagicEventAction REMOVE_AND_SAC = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - MagicCounterType.Time, - -1 - )); - game.doAction(new SacrificeAction(event.getPermanent())); - } - }; - - private static final MagicEventAction REMOVE_FADE_COUNTER = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new ChangeCountersAction( - event.getPermanent(), - MagicCounterType.Fade, - -1 - )); - } - }; + private static final MagicEventAction REMOVE_FADE_COUNTER = (final MagicGame game, final MagicEvent event) -> + game.doAction(new ChangeCountersAction( + event.getPermanent(), + MagicCounterType.Fade, + -1 + )); } diff --git a/src/magic/model/trigger/LivingWeaponTrigger.java b/src/magic/model/trigger/LivingWeaponTrigger.java index 12b9cc3a65..8095467261 100644 --- a/src/magic/model/trigger/LivingWeaponTrigger.java +++ b/src/magic/model/trigger/LivingWeaponTrigger.java @@ -37,15 +37,12 @@ public class LivingWeaponTrigger extends EntersBattlefieldTrigger { game.doAction(new PlayTokenAction( event.getPlayer(), CardDefinitions.getToken("0/0 black Germ creature token"), - new MagicPermanentAction() { - @Override - public void doAction(final MagicPermanent perm) { - final MagicGame G = perm.getGame(); - G.doAction(new AttachAction( - sn.map(G), - perm - )); - } + (final MagicPermanent perm) -> { + final MagicGame G = perm.getGame(); + G.doAction(new AttachAction( + sn.map(G), + perm + )); } )); } diff --git a/src/magic/model/trigger/MadnessTrigger.java b/src/magic/model/trigger/MadnessTrigger.java index a40e1049fb..f45de6a388 100644 --- a/src/magic/model/trigger/MadnessTrigger.java +++ b/src/magic/model/trigger/MadnessTrigger.java @@ -67,21 +67,18 @@ public class MadnessTrigger extends ThisPutIntoGraveyardTrigger { } } - private MagicEventAction EVENT_ACTION = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicCard card = event.getCard(); - if (card.isInExile()) { - if (event.isYes()) { - game.doAction(CastCardAction.WithoutManaCost( - event.getPlayer(), - card, - MagicLocationType.Exile, - MagicLocationType.Graveyard - )); - } else { - game.doAction(new ShiftCardAction(event.getCard(),MagicLocationType.Exile,MagicLocationType.Graveyard)); - } + private MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicCard card = event.getCard(); + if (card.isInExile()) { + if (event.isYes()) { + game.doAction(CastCardAction.WithoutManaCost( + event.getPlayer(), + card, + MagicLocationType.Exile, + MagicLocationType.Graveyard + )); + } else { + game.doAction(new ShiftCardAction(event.getCard(),MagicLocationType.Exile,MagicLocationType.Graveyard)); } } }; diff --git a/src/magic/model/trigger/ModularTrigger.java b/src/magic/model/trigger/ModularTrigger.java index d72b308f5c..d9e9a47bb2 100644 --- a/src/magic/model/trigger/ModularTrigger.java +++ b/src/magic/model/trigger/ModularTrigger.java @@ -38,14 +38,12 @@ public class ModularTrigger extends ThisDiesTrigger { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { if (event.isYes()) { - event.processTargetPermanent(game,new MagicPermanentAction() { - public void doAction(final MagicPermanent creature) { - game.doAction(new ChangeCountersAction( - creature, - MagicCounterType.PlusOne, - event.getRefInt() - )); - } + event.processTargetPermanent(game, (final MagicPermanent creature) -> { + game.doAction(new ChangeCountersAction( + creature, + MagicCounterType.PlusOne, + event.getRefInt() + )); }); } } diff --git a/src/magic/model/trigger/SoulshiftTrigger.java b/src/magic/model/trigger/SoulshiftTrigger.java index 9b947d9a0d..0fa3c356da 100644 --- a/src/magic/model/trigger/SoulshiftTrigger.java +++ b/src/magic/model/trigger/SoulshiftTrigger.java @@ -51,14 +51,12 @@ public class SoulshiftTrigger extends ThisDiesTrigger { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { if (event.isYes()) { - event.processTargetCard(game,new MagicCardAction() { - public void doAction(final MagicCard card) { - game.doAction(new ShiftCardAction( - card, - MagicLocationType.Graveyard, - MagicLocationType.OwnersHand - )); - } + event.processTargetCard(game, (final MagicCard card) -> { + game.doAction(new ShiftCardAction( + card, + MagicLocationType.Graveyard, + MagicLocationType.OwnersHand + )); }); } } diff --git a/src/magic/model/trigger/TributeTrigger.java b/src/magic/model/trigger/TributeTrigger.java index 28846175b8..0ab7e08bbc 100644 --- a/src/magic/model/trigger/TributeTrigger.java +++ b/src/magic/model/trigger/TributeTrigger.java @@ -16,19 +16,16 @@ public abstract class TributeTrigger extends EntersBattlefieldTrigger { private final int amt; - private final MagicEventAction action = new MagicEventAction() { - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - final MagicPermanent permanent = event.getPermanent(); - if (event.isYes()) { - game.doAction(new ChangeCountersAction( - permanent, - MagicCounterType.PlusOne, - event.getRefInt() - )); - } else { - game.doAction(new PutItemOnStackAction(new MagicTriggerOnStack(getEvent(permanent)))); - } + private final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> { + final MagicPermanent permanent = event.getPermanent(); + if (event.isYes()) { + game.doAction(new ChangeCountersAction( + permanent, + MagicCounterType.PlusOne, + event.getRefInt() + )); + } else { + game.doAction(new PutItemOnStackAction(new MagicTriggerOnStack(getEvent(permanent)))); } }; @@ -53,7 +50,7 @@ public abstract class TributeTrigger extends EntersBattlefieldTrigger { perm.getOpponent(), new MagicMayChoice(), amt, - action, + EVENT_ACTION, "PN may$ put RN +1/+1 counters on SN." ); }