From 6c4251fddd4f8e616ec7c49d1695d85a635dfe5c Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 6 May 2013 15:00:29 +0000 Subject: [PATCH] CardCharacteristics.triggers: now using a thread-safe collection other members that were referenced as ArrayLists now are declared as lists, dependencies updated --- src/main/java/forge/Card.java | 13 +++++----- src/main/java/forge/StaticEffects.java | 10 +++----- .../java/forge/card/CardCharacteristics.java | 24 +++++++++---------- .../ability/effects/AnimateAllEffect.java | 4 ++-- .../card/ability/effects/AnimateEffect.java | 3 +-- .../forge/card/cardfactory/CardFactory.java | 8 +++---- .../StaticAbilityContinuous.java | 10 +++----- 7 files changed, 31 insertions(+), 41 deletions(-) diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 6dc6333d43f..2018a77cea1 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -31,6 +31,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.ConcurrentSkipListMap; +import java.util.concurrent.CopyOnWriteArrayList; import org.apache.commons.lang3.StringUtils; @@ -827,7 +828,7 @@ public class Card extends GameEntity implements Comparable { * a {@link java.util.ArrayList} object. */ public final void setTriggers(final List trigs) { - final ArrayList copyList = new ArrayList(); + final List copyList = new CopyOnWriteArrayList(); for (final Trigger t : trigs) { if (t.isIntrinsic()) { final Trigger newtrig = t.getCopy(); @@ -1624,7 +1625,7 @@ public class Card extends GameEntity implements Comparable { * * @return a {@link java.util.ArrayList} object. */ - public final ArrayList getColor() { + public final List getColor() { return this.getCharacteristics().getCardColor(); } @@ -4527,7 +4528,7 @@ public class Card extends GameEntity implements Comparable { * @param a * a {@link java.util.ArrayList} object. */ - public final void setStaticAbilityStrings(final ArrayList a) { + public final void setStaticAbilityStrings(final List a) { this.getCharacteristics().setStaticAbilityStrings(new ArrayList(a)); } @@ -4536,7 +4537,7 @@ public class Card extends GameEntity implements Comparable { * * @return the static ability strings */ - public final ArrayList getStaticAbilityStrings() { + public final List getStaticAbilityStrings() { return this.getCharacteristics().getStaticAbilityStrings(); } @@ -8065,7 +8066,7 @@ public class Card extends GameEntity implements Comparable { * * @return the replacement effects */ - public ArrayList getReplacementEffects() { + public List getReplacementEffects() { return this.getCharacteristics().getReplacementEffects(); } @@ -8075,7 +8076,7 @@ public class Card extends GameEntity implements Comparable { * @param res * the new replacement effects */ - public void setReplacementEffects(final ArrayList res) { + public void setReplacementEffects(final List res) { this.getCharacteristics().getReplacementEffects().clear(); for (final ReplacementEffect replacementEffect : res) { this.addReplacementEffect(replacementEffect); diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index 06607daf0a3..d1a563365f1 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -26,7 +26,6 @@ import java.util.List; import com.esotericsoftware.minlog.Log; import forge.card.TriggerReplacementBase; -import forge.card.replacement.ReplacementEffect; import forge.card.spellability.SpellAbility; import forge.card.staticability.StaticAbility; import forge.game.GameState; @@ -239,16 +238,13 @@ public class StaticEffects { // remove abilities if (params.containsKey("RemoveAllAbilities")) { - final ArrayList abilities = affectedCard.getSpellAbilities(); - for (final SpellAbility ab : abilities) { + for (final SpellAbility ab : affectedCard.getSpellAbilities()) { ab.setTemporarilySuppressed(false); } - final ArrayList staticAbilities = affectedCard.getStaticAbilities(); - for (final StaticAbility stA : staticAbilities) { + for (final StaticAbility stA : affectedCard.getStaticAbilities()) { stA.setTemporarilySuppressed(false); } - final ArrayList replacementEffects = affectedCard.getReplacementEffects(); - for (final TriggerReplacementBase rE : replacementEffects) { + for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) { rE.setTemporarilySuppressed(false); } } diff --git a/src/main/java/forge/card/CardCharacteristics.java b/src/main/java/forge/card/CardCharacteristics.java index 5d459d9c837..5e96c196fb2 100644 --- a/src/main/java/forge/card/CardCharacteristics.java +++ b/src/main/java/forge/card/CardCharacteristics.java @@ -40,17 +40,17 @@ public class CardCharacteristics { private String name = ""; private List type = new CopyOnWriteArrayList(); private ManaCost manaCost = ManaCost.NO_COST; - private ArrayList cardColor = new ArrayList(); + private List cardColor = new ArrayList(); private int baseAttack = 0; private int baseDefense = 0; - private ArrayList intrinsicKeyword = new ArrayList(); + private List intrinsicKeyword = new ArrayList(); private final List spellAbility = new ArrayList(); private final List manaAbility = new ArrayList(); private List unparsedAbilities = new ArrayList(); - private ArrayList triggers = new ArrayList(); - private ArrayList replacementEffects = new ArrayList(); - private ArrayList staticAbilities = new ArrayList(); - private ArrayList staticAbilityStrings = new ArrayList(); + private List triggers = new CopyOnWriteArrayList(); + private List replacementEffects = new ArrayList(); + private List staticAbilities = new ArrayList(); + private List staticAbilityStrings = new ArrayList(); private String imageKey = ""; private Map sVars = new TreeMap(); @@ -120,7 +120,7 @@ public class CardCharacteristics { * * @return the cardColor */ - public final ArrayList getCardColor() { + public final List getCardColor() { return this.cardColor; } @@ -186,7 +186,7 @@ public class CardCharacteristics { * * @return the intrinsicKeyword */ - public final ArrayList getIntrinsicKeyword() { + public final List getIntrinsicKeyword() { return this.intrinsicKeyword; } @@ -253,7 +253,7 @@ public class CardCharacteristics { * @param triggers0 * the triggers to set */ - public final void setTriggers(final ArrayList triggers0) { + public final void setTriggers(final List triggers0) { this.triggers = triggers0; } @@ -262,7 +262,7 @@ public class CardCharacteristics { * * @return the staticAbilities */ - public final ArrayList getStaticAbilities() { + public final List getStaticAbilities() { return this.staticAbilities; } @@ -300,7 +300,7 @@ public class CardCharacteristics { * * @return the staticAbilityStrings */ - public final ArrayList getStaticAbilityStrings() { + public final List getStaticAbilityStrings() { return this.staticAbilityStrings; } @@ -317,7 +317,7 @@ public class CardCharacteristics { /** * @return the replacementEffects */ - public ArrayList getReplacementEffects() { + public List getReplacementEffects() { return replacementEffects; } diff --git a/src/main/java/forge/card/ability/effects/AnimateAllEffect.java b/src/main/java/forge/card/ability/effects/AnimateAllEffect.java index 4593ee36e86..c004f5a0ea2 100644 --- a/src/main/java/forge/card/ability/effects/AnimateAllEffect.java +++ b/src/main/java/forge/card/ability/effects/AnimateAllEffect.java @@ -197,9 +197,9 @@ public class AnimateAllEffect extends AnimateEffectBase { } // suppress static abilities from the animated card - final ArrayList removedReplacements = new ArrayList(); + final List removedReplacements = new ArrayList(); if (sa.hasParam("OverwriteReplacements") || sa.hasParam("RemoveAllAbilities")) { - final ArrayList replacementsToRemove = c.getReplacementEffects(); + final List replacementsToRemove = c.getReplacementEffects(); for (final ReplacementEffect re : replacementsToRemove) { re.setTemporarilySuppressed(true); removedReplacements.add(re); diff --git a/src/main/java/forge/card/ability/effects/AnimateEffect.java b/src/main/java/forge/card/ability/effects/AnimateEffect.java index c733647973d..b2e5281eab0 100644 --- a/src/main/java/forge/card/ability/effects/AnimateEffect.java +++ b/src/main/java/forge/card/ability/effects/AnimateEffect.java @@ -222,8 +222,7 @@ public class AnimateEffect extends AnimateEffectBase { // suppress static abilities from the animated card final ArrayList removedReplacements = new ArrayList(); if (sa.hasParam("OverwriteReplacements") || removeAll) { - final ArrayList replacementsToRemove = c.getReplacementEffects(); - for (final ReplacementEffect re : replacementsToRemove) { + for (final ReplacementEffect re : c.getReplacementEffects()) { re.setTemporarilySuppressed(true); removedReplacements.add(re); } diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java index a996318dc5a..c643574fa9c 100644 --- a/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/src/main/java/forge/card/cardfactory/CardFactory.java @@ -282,13 +282,11 @@ public class CardFactory { } card.setState(state); CardFactoryUtil.addAbilityFactoryAbilities(card); - final ArrayList stAbs = card.getStaticAbilityStrings(); - if (stAbs.size() > 0) { - for (int i = 0; i < stAbs.size(); i++) { - card.addStaticAbility(stAbs.get(i)); - } + for (String stAb : card.getStaticAbilityStrings()) { + card.addStaticAbility(stAb); } + if ( state == CardCharacteristicName.LeftSplit || state == CardCharacteristicName.RightSplit ) { CardCharacteristics original = card.getState(CardCharacteristicName.Original); diff --git a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java index 103e2bc4bdd..e0b1eeceac1 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java +++ b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java @@ -34,7 +34,6 @@ import forge.card.TriggerReplacementBase; import forge.card.ability.AbilityFactory; import forge.card.ability.AbilityUtils; import forge.card.cardfactory.CardFactoryUtil; -import forge.card.replacement.ReplacementEffect; import forge.card.spellability.AbilityActivated; import forge.card.spellability.SpellAbility; import forge.card.trigger.Trigger; @@ -447,16 +446,13 @@ public class StaticAbilityContinuous { // remove activated and static abilities if (removeAllAbilities) { - final ArrayList abilities = affectedCard.getSpellAbilities(); - for (final SpellAbility ab : abilities) { + for (final SpellAbility ab : affectedCard.getSpellAbilities()) { ab.setTemporarilySuppressed(true); } - final ArrayList staticAbilities = affectedCard.getStaticAbilities(); - for (final StaticAbility stA : staticAbilities) { + for (final StaticAbility stA : affectedCard.getStaticAbilities()) { stA.setTemporarilySuppressed(true); } - final ArrayList replacementEffects = affectedCard.getReplacementEffects(); - for (final TriggerReplacementBase rE : replacementEffects) { + for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) { rE.setTemporarilySuppressed(true); } }