From e3d0e6ebfe395f84121f43d487f0da2c73e39f61 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sun, 9 Oct 2016 17:23:06 +0000 Subject: [PATCH] ComputerUtilCard: add evaluateCreatureListByName --- .../main/java/forge/ai/ComputerUtilCard.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 2d1a5fb543d..a89d9c97df6 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -3,7 +3,6 @@ package forge.ai; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -16,6 +15,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; import forge.card.CardType; import forge.card.ColorSet; @@ -405,6 +405,21 @@ public class ComputerUtilCard { public static int evaluateCreatureList(final CardCollectionView list) { return Aggregates.sum(list, creatureEvaluator); } + + public static Map evaluateCreatureListByName(final CardCollectionView list) { + // Compute value for each possible target + Map values = Maps.newHashMap(); + for (Card c : list) { + String name = c.getName(); + int val = evaluateCreature(c); + if (values.containsKey(name)) { + values.put(name, values.get(name) + val); + } else { + values.put(name, val); + } + } + return values; + } public static boolean doesCreatureAttackAI(final Player ai, final Card card) { AiAttackController aiAtk = new AiAttackController(ai); @@ -547,7 +562,7 @@ public class ComputerUtilCard { return ""; } - final Map map = new HashMap(); + final Map map = Maps.newHashMap(); for (final Card c : list) { final String name = c.getName(); @@ -591,7 +606,7 @@ public class ComputerUtilCard { return ""; } - final Map map = new HashMap(); + final Map map = Maps.newHashMap(); for (final Card c : list) { for (final String var : c.getType()) {