diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index aaca6ed70c3..a25749a8a34 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -8115,7 +8115,7 @@ public class Card extends GameEntity implements Comparable { for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { for (final ReplacementEffect re : ca.getReplacementEffects()) { - HashMap params = re.getMapParams(); + Map params = re.getMapParams(); if (!"DamageDone".equals(params.get("Event")) || !params.containsKey("PreventionEffect")) { continue; } @@ -9173,7 +9173,7 @@ public class Card extends GameEntity implements Comparable { */ public boolean hasETBReplacement() { for (final ReplacementEffect re : getReplacementEffects()) { - final HashMap params = re.getMapParams(); + final Map params = re.getMapParams(); if (!(re instanceof ReplaceMoved)) { continue; } diff --git a/src/main/java/forge/card/replacement/ReplaceDamage.java b/src/main/java/forge/card/replacement/ReplaceDamage.java index f95376c65a3..29507e9fda1 100644 --- a/src/main/java/forge/card/replacement/ReplaceDamage.java +++ b/src/main/java/forge/card/replacement/ReplaceDamage.java @@ -17,7 +17,7 @@ */ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; import forge.card.cardfactory.CardFactoryUtil; @@ -36,7 +36,7 @@ public class ReplaceDamage extends ReplacementEffect { * @param map the map * @param host the host */ - public ReplaceDamage(HashMap map, Card host) { + public ReplaceDamage(Map map, Card host) { super(map, host); } @@ -44,7 +44,7 @@ public class ReplaceDamage extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("DamageDone")) { return false; } @@ -110,7 +110,7 @@ public class ReplaceDamage extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) */ @Override - public void setReplacingObjects(HashMap runParams, SpellAbility sa) { + public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("DamageAmount", runParams.get("DamageAmount")); sa.setReplacingObject("Target", runParams.get("Affected")); sa.setReplacingObject("Source", runParams.get("DamageSource")); diff --git a/src/main/java/forge/card/replacement/ReplaceDiscard.java b/src/main/java/forge/card/replacement/ReplaceDiscard.java index 3b9fe37a0b3..4821e4ef89e 100644 --- a/src/main/java/forge/card/replacement/ReplaceDiscard.java +++ b/src/main/java/forge/card/replacement/ReplaceDiscard.java @@ -17,7 +17,7 @@ */ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; import forge.card.spellability.SpellAbility; @@ -34,7 +34,7 @@ public class ReplaceDiscard extends ReplacementEffect { * @param params the params * @param host the host */ - public ReplaceDiscard(final HashMap params, final Card host) { + public ReplaceDiscard(final Map params, final Card host) { super(params, host); } @@ -42,7 +42,7 @@ public class ReplaceDiscard extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("Discard")) { return false; } @@ -86,7 +86,7 @@ public class ReplaceDiscard extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) */ @Override - public void setReplacingObjects(HashMap runParams, SpellAbility sa) { + public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("Card", runParams.get("Card")); sa.setReplacingObject("Player", runParams.get("Affected")); } diff --git a/src/main/java/forge/card/replacement/ReplaceDraw.java b/src/main/java/forge/card/replacement/ReplaceDraw.java index 5b326e53d33..eedfcb9d44c 100644 --- a/src/main/java/forge/card/replacement/ReplaceDraw.java +++ b/src/main/java/forge/card/replacement/ReplaceDraw.java @@ -17,7 +17,7 @@ */ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; @@ -33,7 +33,7 @@ public class ReplaceDraw extends ReplacementEffect { * @param params the params * @param host the host */ - public ReplaceDraw(final HashMap params, final Card host) { + public ReplaceDraw(final Map params, final Card host) { super(params, host); } @@ -41,7 +41,7 @@ public class ReplaceDraw extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("Draw")) { return false; } diff --git a/src/main/java/forge/card/replacement/ReplaceGainLife.java b/src/main/java/forge/card/replacement/ReplaceGainLife.java index 0de246e5061..d5dd570c472 100644 --- a/src/main/java/forge/card/replacement/ReplaceGainLife.java +++ b/src/main/java/forge/card/replacement/ReplaceGainLife.java @@ -17,7 +17,7 @@ */ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; import forge.card.spellability.SpellAbility; @@ -34,7 +34,7 @@ public class ReplaceGainLife extends ReplacementEffect { * @param map the map * @param host the host */ - public ReplaceGainLife(HashMap map, Card host) { + public ReplaceGainLife(Map map, Card host) { super(map, host); } @@ -42,7 +42,7 @@ public class ReplaceGainLife extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("GainLife")) { return false; } @@ -71,7 +71,7 @@ public class ReplaceGainLife extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) */ @Override - public void setReplacingObjects(HashMap runParams, SpellAbility sa) { + public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("LifeGained", runParams.get("LifeGained")); } diff --git a/src/main/java/forge/card/replacement/ReplaceGameLoss.java b/src/main/java/forge/card/replacement/ReplaceGameLoss.java index 50ee58f7f97..fc98590dce3 100644 --- a/src/main/java/forge/card/replacement/ReplaceGameLoss.java +++ b/src/main/java/forge/card/replacement/ReplaceGameLoss.java @@ -1,6 +1,6 @@ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; @@ -16,7 +16,7 @@ public class ReplaceGameLoss extends ReplacementEffect { * @param map the map * @param host the host */ - public ReplaceGameLoss(HashMap map, Card host) { + public ReplaceGameLoss(Map map, Card host) { super(map, host); } @@ -24,7 +24,7 @@ public class ReplaceGameLoss extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("GameLoss")) { return false; } diff --git a/src/main/java/forge/card/replacement/ReplaceMoved.java b/src/main/java/forge/card/replacement/ReplaceMoved.java index d12af072cc9..c8b26d8dda5 100644 --- a/src/main/java/forge/card/replacement/ReplaceMoved.java +++ b/src/main/java/forge/card/replacement/ReplaceMoved.java @@ -1,6 +1,6 @@ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; import forge.card.spellability.SpellAbility; @@ -18,7 +18,7 @@ public class ReplaceMoved extends ReplacementEffect { * @param mapParams   HashMap * @param host   Card */ - public ReplaceMoved(final HashMap mapParams, final Card host) { + public ReplaceMoved(final Map mapParams, final Card host) { super(mapParams, host); } @@ -26,7 +26,7 @@ public class ReplaceMoved extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("Moved")) { return false; } @@ -66,7 +66,7 @@ public class ReplaceMoved extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) */ @Override - public void setReplacingObjects(HashMap runParams, SpellAbility sa) { + public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("Card", runParams.get("Affected")); } diff --git a/src/main/java/forge/card/replacement/ReplaceSetInMotion.java b/src/main/java/forge/card/replacement/ReplaceSetInMotion.java index 19ac3f4f57f..e382f40b743 100644 --- a/src/main/java/forge/card/replacement/ReplaceSetInMotion.java +++ b/src/main/java/forge/card/replacement/ReplaceSetInMotion.java @@ -17,7 +17,7 @@ */ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; @@ -33,7 +33,7 @@ public class ReplaceSetInMotion extends ReplacementEffect { * @param params the params * @param host the host */ - public ReplaceSetInMotion(final HashMap params, final Card host) { + public ReplaceSetInMotion(final Map params, final Card host) { super(params, host); } @@ -41,7 +41,7 @@ public class ReplaceSetInMotion extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("SetInMotion")) { return false; } diff --git a/src/main/java/forge/card/replacement/ReplaceTurnFaceUp.java b/src/main/java/forge/card/replacement/ReplaceTurnFaceUp.java index 5bbd31008c5..4f3ddc414ff 100644 --- a/src/main/java/forge/card/replacement/ReplaceTurnFaceUp.java +++ b/src/main/java/forge/card/replacement/ReplaceTurnFaceUp.java @@ -1,6 +1,6 @@ package forge.card.replacement; -import java.util.HashMap; +import java.util.Map; import forge.Card; import forge.card.spellability.SpellAbility; @@ -17,7 +17,7 @@ public class ReplaceTurnFaceUp extends ReplacementEffect { * @param mapParams   HashMap * @param host   Card */ - public ReplaceTurnFaceUp(final HashMap mapParams, final Card host) { + public ReplaceTurnFaceUp(final Map mapParams, final Card host) { super(mapParams, host); } @@ -25,7 +25,7 @@ public class ReplaceTurnFaceUp extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) */ @Override - public boolean canReplace(HashMap runParams) { + public boolean canReplace(Map runParams) { if (!runParams.get("Event").equals("TurnFaceUp")) { return false; } @@ -53,7 +53,7 @@ public class ReplaceTurnFaceUp extends ReplacementEffect { * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) */ @Override - public void setReplacingObjects(HashMap runParams, SpellAbility sa) { + public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("Card", runParams.get("Affected")); } diff --git a/src/main/java/forge/card/replacement/ReplacementEffect.java b/src/main/java/forge/card/replacement/ReplacementEffect.java index 6e35ad5008f..0ee9b0699d0 100644 --- a/src/main/java/forge/card/replacement/ReplacementEffect.java +++ b/src/main/java/forge/card/replacement/ReplacementEffect.java @@ -118,7 +118,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { } /** The map params, denoting what to replace. */ - private HashMap mapParams = new HashMap(); + private Map mapParams = new HashMap(); /** *

@@ -127,7 +127,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { * * @return a {@link java.util.HashMap} object. */ - public final HashMap getMapParams() { + public final Map getMapParams() { return this.mapParams; } @@ -137,7 +137,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { * @param mapParams * the mapParams to set */ - public final void setMapParams(final HashMap mapParams) { + public final void setMapParams(final Map mapParams) { this.mapParams = mapParams; } @@ -148,7 +148,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { * the run params * @return true, if successful */ - public abstract boolean canReplace(final HashMap runParams); + public abstract boolean canReplace(final Map runParams); /** * To string. @@ -219,7 +219,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { * @param spellAbility * the SpellAbility */ - public void setReplacingObjects(final HashMap runParams, final SpellAbility spellAbility) { + public void setReplacingObjects(final Map runParams, final SpellAbility spellAbility) { // Should be overridden by replacers that need it. } @@ -231,7 +231,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { * @param host * the host */ - public ReplacementEffect(final HashMap map, final Card host) { + public ReplacementEffect(final Map map, final Card host) { this.setMapParams(map); this.setHostCard(host); } diff --git a/src/main/java/forge/card/replacement/ReplacementHandler.java b/src/main/java/forge/card/replacement/ReplacementHandler.java index d85a5ea77b8..3fc979f6080 100644 --- a/src/main/java/forge/card/replacement/ReplacementHandler.java +++ b/src/main/java/forge/card/replacement/ReplacementHandler.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.HashMap; import java.util.List; +import java.util.Map; import forge.Card; import forge.Singletons; @@ -34,6 +35,7 @@ import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.gui.GuiDialog; +import forge.util.FileSection; /** * TODO: Write javadoc for this type. @@ -174,9 +176,9 @@ public class ReplacementHandler { * @param replacementEffect * the replacement effect to run */ - private ReplacementResult executeReplacement(final HashMap runParams, + private ReplacementResult executeReplacement(final Map runParams, final ReplacementEffect replacementEffect, final Player decider, final GameState game) { - final HashMap mapParams = replacementEffect.getMapParams(); + final Map mapParams = replacementEffect.getMapParams(); SpellAbility effectSA = null; @@ -257,7 +259,7 @@ public class ReplacementHandler { * @return A finished instance */ public static ReplacementEffect parseReplacement(final String repParse, final Card host) { - final HashMap mapParams = ReplacementHandler.parseParams(repParse); + final Map mapParams = FileSection.parseToMap(repParse, "$", "|"); return ReplacementHandler.parseReplacement(mapParams, host); } @@ -272,7 +274,7 @@ public class ReplacementHandler { * The card that hosts the replacement effect * @return The finished instance */ - public static ReplacementEffect parseReplacement(final HashMap mapParams, final Card host) { + public static ReplacementEffect parseReplacement(final Map mapParams, final Card host) { ReplacementEffect ret = null; final String eventToReplace = mapParams.get("Event"); @@ -301,45 +303,4 @@ public class ReplacementHandler { return ret; } - - /** - *

- * parseParams. - *

- * - * @param repParse - * a {@link java.lang.String} object. - * @return a {@link java.util.HashMap} object. - */ - private static HashMap parseParams(final String repParse) { - final HashMap mapParams = new HashMap(); - - if (repParse.length() == 0) { - throw new RuntimeException("ReplacementFactory : registerTrigger -- trigParse too short"); - } - - final String[] params = repParse.split("\\|"); - - for (int i = 0; i < params.length; i++) { - params[i] = params[i].trim(); - } - - for (final String param : params) { - final String[] splitParam = param.split("\\$"); - for (int i = 0; i < splitParam.length; i++) { - splitParam[i] = splitParam[i].trim(); - } - - if (splitParam.length != 2) { - final StringBuilder sb = new StringBuilder(); - sb.append("ReplacementFactory Parsing Error in registerTrigger() : Split length of "); - sb.append(param).append(" is not 2."); - throw new RuntimeException(sb.toString()); - } - - mapParams.put(splitParam[0], splitParam[1]); - } - - return mapParams; - } } diff --git a/src/main/java/forge/card/spellability/SpellPermanent.java b/src/main/java/forge/card/spellability/SpellPermanent.java index 38422672d12..9a2d11a541e 100644 --- a/src/main/java/forge/card/spellability/SpellPermanent.java +++ b/src/main/java/forge/card/spellability/SpellPermanent.java @@ -20,6 +20,7 @@ package forge.card.spellability; import java.security.InvalidParameterException; import java.util.HashMap; import java.util.List; +import java.util.Map; import com.google.common.base.Supplier; import com.google.common.collect.Iterables; @@ -499,7 +500,7 @@ public class SpellPermanent extends Spell { for (final ReplacementEffect re : card.getReplacementEffects()) { // These Replacements all care for ETB effects - final HashMap params = re.getMapParams(); + final Map params = re.getMapParams(); if (!(re instanceof ReplaceMoved)) { continue; } diff --git a/src/main/java/forge/game/ai/ComputerUtilCombat.java b/src/main/java/forge/game/ai/ComputerUtilCombat.java index 788eec485d1..1bda899a2aa 100644 --- a/src/main/java/forge/game/ai/ComputerUtilCombat.java +++ b/src/main/java/forge/game/ai/ComputerUtilCombat.java @@ -1829,7 +1829,7 @@ public class ComputerUtilCombat { // Predict replacement effects for (final Card ca : game.getCardsIn(ZoneType.Battlefield)) { for (final ReplacementEffect re : ca.getReplacementEffects()) { - HashMap params = re.getMapParams(); + Map params = re.getMapParams(); if (!"DamageDone".equals(params.get("Event")) || !params.containsKey("PreventionEffect")) { continue; }