From b3791f6a2d30f49facb19db99a2664aa7b6105fc Mon Sep 17 00:00:00 2001 From: Hanmac Date: Wed, 26 Apr 2017 20:15:08 +0000 Subject: [PATCH] StaticAbility: refactor a bit using hasParam and getParam Fix with EffectZone when Card does not have a Zone yet --- .../game/staticability/StaticAbility.java | 159 +++++++++--------- 1 file changed, 81 insertions(+), 78 deletions(-) diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java index 822dc967093..42ad5d84a23 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java @@ -27,18 +27,20 @@ import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; import forge.game.cost.Cost; +import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; +import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.util.Expressions; -import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Set; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; /** @@ -48,7 +50,7 @@ public class StaticAbility extends CardTraitBase implements Comparable layers; private CardCollectionView ignoreEffectCards = new CardCollection(); - private final List ignoreEffectPlayers = new ArrayList(); + private final List ignoreEffectPlayers = Lists.newArrayList(); /** *

@@ -106,61 +108,60 @@ public class StaticAbility extends CardTraitBase implements Comparable generateLayer() { - if (!this.mapParams.get("Mode").equals("Continuous")) { + if (!getParam("Mode").equals("Continuous")) { return EnumSet.noneOf(StaticAbilityLayer.class); } final Set layers = EnumSet.noneOf(StaticAbilityLayer.class); - if (this.mapParams.containsKey("GainControl")) { + if (hasParam("GainControl")) { layers.add(StaticAbilityLayer.CONTROL); } - if (this.mapParams.containsKey("ChangeColorWordsTo")) { + if (hasParam("ChangeColorWordsTo")) { layers.add(StaticAbilityLayer.TEXT); } - if (this.mapParams.containsKey("AddType") || this.mapParams.containsKey("RemoveType") - || this.mapParams.containsKey("RemoveCardTypes") || this.mapParams.containsKey("RemoveSubTypes") - || this.mapParams.containsKey("RemoveSuperTypes") || this.mapParams.containsKey("RemoveCreatureTypes")) { + if (hasParam("AddType") || hasParam("RemoveType") + || hasParam("RemoveCardTypes") || hasParam("RemoveSubTypes") + || hasParam("RemoveSuperTypes") || hasParam("RemoveCreatureTypes")) { layers.add(StaticAbilityLayer.TYPE); } - if (this.mapParams.containsKey("AddColor") || this.mapParams.containsKey("RemoveColor") - || this.mapParams.containsKey("SetColor")) { + if (hasParam("AddColor") || hasParam("RemoveColor") || hasParam("SetColor")) { layers.add(StaticAbilityLayer.COLOR); } - if (this.mapParams.containsKey("RemoveAllAbilities") || this.mapParams.containsKey("GainsAbilitiesOf")) { + if (hasParam("RemoveAllAbilities") || hasParam("GainsAbilitiesOf")) { layers.add(StaticAbilityLayer.ABILITIES1); } - if (this.mapParams.containsKey("AddKeyword") || this.mapParams.containsKey("AddAbility") - || this.mapParams.containsKey("AddTrigger") || this.mapParams.containsKey("RemoveTriggers") - || this.mapParams.containsKey("RemoveKeyword") || this.mapParams.containsKey("AddReplacementEffects") - || this.mapParams.containsKey("AddStaticAbility") || this.mapParams.containsKey("AddSVar")) { + if (hasParam("AddKeyword") || hasParam("AddAbility") + || hasParam("AddTrigger") || hasParam("RemoveTriggers") + || hasParam("RemoveKeyword") || hasParam("AddReplacementEffects") + || hasParam("AddStaticAbility") || hasParam("AddSVar")) { layers.add(StaticAbilityLayer.ABILITIES2); } - if (this.mapParams.containsKey("CharacteristicDefining")) { + if (hasParam("CharacteristicDefining")) { layers.add(StaticAbilityLayer.CHARACTERISTIC); } - if (this.mapParams.containsKey("SetPower") || this.mapParams.containsKey("SetToughness")) { + if (hasParam("SetPower") || hasParam("SetToughness")) { layers.add(StaticAbilityLayer.SETPT); } - if (this.mapParams.containsKey("AddPower") || this.mapParams.containsKey("AddToughness")) { + if (hasParam("AddPower") || hasParam("AddToughness")) { layers.add(StaticAbilityLayer.MODIFYPT); } - if (this.mapParams.containsKey("AddHiddenKeyword")) { - // special rule for can't have or gain - if (this.mapParams.get("AddHiddenKeyword").contains("can't have or gain")) { + if (hasParam("AddHiddenKeyword")) { + // special rule for can't have or gain + if (getParam("AddHiddenKeyword").contains("can't have or gain")) { layers.add(StaticAbilityLayer.ABILITIES1); } layers.add(StaticAbilityLayer.RULES); } - if (this.mapParams.containsKey("IgnoreEffectCost")) { + if (hasParam("IgnoreEffectCost")) { layers.add(StaticAbilityLayer.RULES); } @@ -180,8 +181,8 @@ public class StaticAbility extends CardTraitBase implements Comparable phases = PhaseType.parseRange(this.mapParams.get("Phases")); - if (!phases.contains(game.getPhaseHandler().getPhase())) { + if (hasParam("Phases")) { + List phases = PhaseType.parseRange(getParam("Phases")); + if (!phases.contains(ph.getPhase())) { return false; } } - if (this.mapParams.containsKey("PlayerTurn")) { - List players = AbilityUtils.getDefinedPlayers(hostCard, this.mapParams.get("PlayerTurn"), null); - if (!players.contains(game.getPhaseHandler().getPlayerTurn())) { + if (hasParam("PlayerTurn")) { + List players = AbilityUtils.getDefinedPlayers(hostCard, getParam("PlayerTurn"), null); + if (!players.contains(ph.getPlayerTurn())) { return false; } } - if (this.mapParams.containsKey("TopCardOfLibraryIs")) { + if (hasParam("TopCardOfLibraryIs")) { if (controller.getCardsIn(ZoneType.Library).isEmpty()) { return false; } final Card topCard = controller.getCardsIn(ZoneType.Library).get(0); - if (!topCard.isValid(this.mapParams.get("TopCardOfLibraryIs").split(","), controller, this.hostCard, null)) { + if (!topCard.isValid(getParam("TopCardOfLibraryIs").split(","), controller, this.hostCard, null)) { return false; } } - if (this.mapParams.containsKey("IsPresent")) { - final ZoneType zone = mapParams.containsKey("PresentZone") ? ZoneType.valueOf(mapParams.get("PresentZone")) : ZoneType.Battlefield; - final String compare = mapParams.containsKey("PresentCompare") ? mapParams.get("PresentCompare") : "GE1"; + if (hasParam("IsPresent")) { + final ZoneType zone = hasParam("PresentZone") ? ZoneType.valueOf(getParam("PresentZone")) : ZoneType.Battlefield; + final String compare = hasParam("PresentCompare") ? getParam("PresentCompare") : "GE1"; CardCollectionView list = game.getCardsIn(zone); - final String present = mapParams.get("IsPresent"); + final String present = getParam("IsPresent"); list = CardLists.getValidCards(list, present.split(","), controller, hostCard, null); @@ -554,11 +557,11 @@ public class StaticAbility extends CardTraitBase implements Comparable