CardCharacteristics.triggers: now using a thread-safe collection

other members that were referenced as ArrayLists now are declared as lists, dependencies updated
This commit is contained in:
Maxmtg
2013-05-06 15:00:29 +00:00
parent 84bfe3ebae
commit 6c4251fddd
7 changed files with 31 additions and 41 deletions

View File

@@ -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<Card> {
* a {@link java.util.ArrayList} object.
*/
public final void setTriggers(final List<Trigger> trigs) {
final ArrayList<Trigger> copyList = new ArrayList<Trigger>();
final List<Trigger> copyList = new CopyOnWriteArrayList<Trigger>();
for (final Trigger t : trigs) {
if (t.isIntrinsic()) {
final Trigger newtrig = t.getCopy();
@@ -1624,7 +1625,7 @@ public class Card extends GameEntity implements Comparable<Card> {
*
* @return a {@link java.util.ArrayList} object.
*/
public final ArrayList<CardColor> getColor() {
public final List<CardColor> getColor() {
return this.getCharacteristics().getCardColor();
}
@@ -4527,7 +4528,7 @@ public class Card extends GameEntity implements Comparable<Card> {
* @param a
* a {@link java.util.ArrayList} object.
*/
public final void setStaticAbilityStrings(final ArrayList<String> a) {
public final void setStaticAbilityStrings(final List<String> a) {
this.getCharacteristics().setStaticAbilityStrings(new ArrayList<String>(a));
}
@@ -4536,7 +4537,7 @@ public class Card extends GameEntity implements Comparable<Card> {
*
* @return the static ability strings
*/
public final ArrayList<String> getStaticAbilityStrings() {
public final List<String> getStaticAbilityStrings() {
return this.getCharacteristics().getStaticAbilityStrings();
}
@@ -8065,7 +8066,7 @@ public class Card extends GameEntity implements Comparable<Card> {
*
* @return the replacement effects
*/
public ArrayList<ReplacementEffect> getReplacementEffects() {
public List<ReplacementEffect> getReplacementEffects() {
return this.getCharacteristics().getReplacementEffects();
}
@@ -8075,7 +8076,7 @@ public class Card extends GameEntity implements Comparable<Card> {
* @param res
* the new replacement effects
*/
public void setReplacementEffects(final ArrayList<ReplacementEffect> res) {
public void setReplacementEffects(final List<ReplacementEffect> res) {
this.getCharacteristics().getReplacementEffects().clear();
for (final ReplacementEffect replacementEffect : res) {
this.addReplacementEffect(replacementEffect);

View File

@@ -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<SpellAbility> abilities = affectedCard.getSpellAbilities();
for (final SpellAbility ab : abilities) {
for (final SpellAbility ab : affectedCard.getSpellAbilities()) {
ab.setTemporarilySuppressed(false);
}
final ArrayList<StaticAbility> staticAbilities = affectedCard.getStaticAbilities();
for (final StaticAbility stA : staticAbilities) {
for (final StaticAbility stA : affectedCard.getStaticAbilities()) {
stA.setTemporarilySuppressed(false);
}
final ArrayList<ReplacementEffect> replacementEffects = affectedCard.getReplacementEffects();
for (final TriggerReplacementBase rE : replacementEffects) {
for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) {
rE.setTemporarilySuppressed(false);
}
}

View File

@@ -40,17 +40,17 @@ public class CardCharacteristics {
private String name = "";
private List<String> type = new CopyOnWriteArrayList<String>();
private ManaCost manaCost = ManaCost.NO_COST;
private ArrayList<CardColor> cardColor = new ArrayList<CardColor>();
private List<CardColor> cardColor = new ArrayList<CardColor>();
private int baseAttack = 0;
private int baseDefense = 0;
private ArrayList<String> intrinsicKeyword = new ArrayList<String>();
private List<String> intrinsicKeyword = new ArrayList<String>();
private final List<SpellAbility> spellAbility = new ArrayList<SpellAbility>();
private final List<SpellAbility> manaAbility = new ArrayList<SpellAbility>();
private List<String> unparsedAbilities = new ArrayList<String>();
private ArrayList<Trigger> triggers = new ArrayList<Trigger>();
private ArrayList<ReplacementEffect> replacementEffects = new ArrayList<ReplacementEffect>();
private ArrayList<StaticAbility> staticAbilities = new ArrayList<StaticAbility>();
private ArrayList<String> staticAbilityStrings = new ArrayList<String>();
private List<Trigger> triggers = new CopyOnWriteArrayList<Trigger>();
private List<ReplacementEffect> replacementEffects = new ArrayList<ReplacementEffect>();
private List<StaticAbility> staticAbilities = new ArrayList<StaticAbility>();
private List<String> staticAbilityStrings = new ArrayList<String>();
private String imageKey = "";
private Map<String, String> sVars = new TreeMap<String, String>();
@@ -120,7 +120,7 @@ public class CardCharacteristics {
*
* @return the cardColor
*/
public final ArrayList<CardColor> getCardColor() {
public final List<CardColor> getCardColor() {
return this.cardColor;
}
@@ -186,7 +186,7 @@ public class CardCharacteristics {
*
* @return the intrinsicKeyword
*/
public final ArrayList<String> getIntrinsicKeyword() {
public final List<String> getIntrinsicKeyword() {
return this.intrinsicKeyword;
}
@@ -253,7 +253,7 @@ public class CardCharacteristics {
* @param triggers0
* the triggers to set
*/
public final void setTriggers(final ArrayList<Trigger> triggers0) {
public final void setTriggers(final List<Trigger> triggers0) {
this.triggers = triggers0;
}
@@ -262,7 +262,7 @@ public class CardCharacteristics {
*
* @return the staticAbilities
*/
public final ArrayList<StaticAbility> getStaticAbilities() {
public final List<StaticAbility> getStaticAbilities() {
return this.staticAbilities;
}
@@ -300,7 +300,7 @@ public class CardCharacteristics {
*
* @return the staticAbilityStrings
*/
public final ArrayList<String> getStaticAbilityStrings() {
public final List<String> getStaticAbilityStrings() {
return this.staticAbilityStrings;
}
@@ -317,7 +317,7 @@ public class CardCharacteristics {
/**
* @return the replacementEffects
*/
public ArrayList<ReplacementEffect> getReplacementEffects() {
public List<ReplacementEffect> getReplacementEffects() {
return replacementEffects;
}

View File

@@ -197,9 +197,9 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
// suppress static abilities from the animated card
final ArrayList<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
final List<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
if (sa.hasParam("OverwriteReplacements") || sa.hasParam("RemoveAllAbilities")) {
final ArrayList<ReplacementEffect> replacementsToRemove = c.getReplacementEffects();
final List<ReplacementEffect> replacementsToRemove = c.getReplacementEffects();
for (final ReplacementEffect re : replacementsToRemove) {
re.setTemporarilySuppressed(true);
removedReplacements.add(re);

View File

@@ -222,8 +222,7 @@ public class AnimateEffect extends AnimateEffectBase {
// suppress static abilities from the animated card
final ArrayList<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
if (sa.hasParam("OverwriteReplacements") || removeAll) {
final ArrayList<ReplacementEffect> replacementsToRemove = c.getReplacementEffects();
for (final ReplacementEffect re : replacementsToRemove) {
for (final ReplacementEffect re : c.getReplacementEffects()) {
re.setTemporarilySuppressed(true);
removedReplacements.add(re);
}

View File

@@ -282,13 +282,11 @@ public class CardFactory {
}
card.setState(state);
CardFactoryUtil.addAbilityFactoryAbilities(card);
final ArrayList<String> 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);

View File

@@ -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<SpellAbility> abilities = affectedCard.getSpellAbilities();
for (final SpellAbility ab : abilities) {
for (final SpellAbility ab : affectedCard.getSpellAbilities()) {
ab.setTemporarilySuppressed(true);
}
final ArrayList<StaticAbility> staticAbilities = affectedCard.getStaticAbilities();
for (final StaticAbility stA : staticAbilities) {
for (final StaticAbility stA : affectedCard.getStaticAbilities()) {
stA.setTemporarilySuppressed(true);
}
final ArrayList<ReplacementEffect> replacementEffects = affectedCard.getReplacementEffects();
for (final TriggerReplacementBase rE : replacementEffects) {
for (final TriggerReplacementBase rE : affectedCard.getReplacementEffects()) {
rE.setTemporarilySuppressed(true);
}
}