From e0a599fcbeb2ff9aa320b34f3e4588deb44eb3af Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Thu, 7 Feb 2013 09:15:09 +0000 Subject: [PATCH] getAvailableMana and mapManaSources accept any player as parameter, since AI wants to evaluate player's mana he might use to pump creatures --- .../java/forge/game/ai/ComputerUtilMana.java | 33 +++++-------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/main/java/forge/game/ai/ComputerUtilMana.java b/src/main/java/forge/game/ai/ComputerUtilMana.java index d33276df543..6340e9d47aa 100644 --- a/src/main/java/forge/game/ai/ComputerUtilMana.java +++ b/src/main/java/forge/game/ai/ComputerUtilMana.java @@ -67,7 +67,7 @@ public class ComputerUtilMana { } // get map of mana abilities - final Map> manaAbilityMap = ComputerUtilMana.mapManaSources((AIPlayer) ai, checkPlayable); + final Map> manaAbilityMap = ComputerUtilMana.mapManaSources(ai, checkPlayable); // initialize ArrayList list for mana needed final List> partSources = new ArrayList>(); final List partPriority = new ArrayList(); @@ -446,17 +446,8 @@ public class ComputerUtilMana { return cost; } - /** - *

- * getAvailableMana. - *

- * - * @param ai - * a {@link forge.game.player.Player} object. - * @param checkPlayable - * @return a {@link forge.CardList} object. - */ - private static List getAvailableMana(final AIPlayer ai, final boolean checkPlayable) { + //This method is currently used by AI to estimate human's available mana + private static List getAvailableMana(final Player ai, final boolean checkPlayable) { final GameState game = Singletons.getModel().getGame(); final List list = ai.getCardsIn(ZoneType.Battlefield); final List manaSources = CardLists.filter(list, new Predicate() { @@ -528,7 +519,7 @@ public class ComputerUtilMana { // don't use abilities with dangerous drawbacks if (m.getSubAbility() != null && !card.getName().equals("Pristine Talisman")) { - if (!m.getSubAbility().chkAIDrawback(ai)) { + if (ai instanceof AIPlayer && !m.getSubAbility().chkAIDrawback((AIPlayer)ai)) { continue; } needsLimitedResources = true; // TODO: check for good @@ -572,17 +563,9 @@ public class ComputerUtilMana { return sortedManaSources; } // getAvailableMana() - /** - *

- * mapManaSources. - *

- * - * @param ai - * a {@link forge.game.player.Player} object. - * @param checkPlayable TODO - * @return HashMap> - */ - private static Map> mapManaSources(final AIPlayer ai, boolean checkPlayable) { + + //This method is currently used by AI to estimate mana available to human + private static Map> mapManaSources(final Player ai, boolean checkPlayable) { final Map> manaMap = new HashMap>(); final List whiteSources = new ArrayList(); @@ -610,7 +593,7 @@ public class ComputerUtilMana { // don't use abilities with dangerous drawbacks if (m.getSubAbility() != null) { - if (!m.getSubAbility().chkAIDrawback(ai)) { + if (ai instanceof AIPlayer && !m.getSubAbility().chkAIDrawback((AIPlayer)ai)) { continue; } }