From ca3ce5f4fa717b8e8f8e8d0892232a18a2561870 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 31 Aug 2011 10:47:46 +0000 Subject: [PATCH] - Moved AI_discardNumType to ComputerUtil. --- src/main/java/forge/ComputerUtil.java | 42 +++++++++++++++++++ src/main/java/forge/GameAction.java | 28 ------------- .../java/forge/card/cost/CostDiscard.java | 3 +- src/main/java/forge/card/cost/CostReveal.java | 3 +- 4 files changed, 46 insertions(+), 30 deletions(-) diff --git a/src/main/java/forge/ComputerUtil.java b/src/main/java/forge/ComputerUtil.java index 96a2648d474..0d73385716c 100644 --- a/src/main/java/forge/ComputerUtil.java +++ b/src/main/java/forge/ComputerUtil.java @@ -922,6 +922,48 @@ public class ComputerUtil { for (int i = count; i < amount; i++) sacList.add(typeList.get(i)); return sacList; } + + + + /** + *

AI_discardNumType.

+ * + * @param numDiscard a int. + * @param uTypes an array of {@link java.lang.String} objects. + * @param sa a {@link forge.card.spellability.SpellAbility} object. + * @return a CardList of discarded cards. + */ + static public CardList AI_discardNumType(int numDiscard, String[] uTypes, SpellAbility sa) { + CardList hand = AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer()); + hand = hand.getValidCards(uTypes, sa.getActivatingPlayer(), sa.getSourceCard()); + + if (hand.size() < numDiscard){ + return null; + } + + CardList discardList = new CardList(); + int count = 0; + + while (count < numDiscard) { + Card prefCard = getCardPreference(sa.getSourceCard(), "DiscardCost", hand); + if (prefCard != null) { + discardList.add(prefCard); + hand.remove(prefCard); + count++; + } else + break; + } + + int discardsLeft = numDiscard - count; + + CardListUtil.sortCMC(hand); + hand.reverse(); + for (int i = 0; i < discardsLeft; i++){ + discardList.add(hand.get(i)); + } + + return discardList; + } /** *

chooseExileType.

diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 2c2b737e9e9..b9edab1d9ae 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -484,34 +484,6 @@ public class GameAction { return moveToStack(c); } - - /** - *

AI_discardNumType.

- * - * @param numDiscard a int. - * @param uTypes an array of {@link java.lang.String} objects. - * @param sa a {@link forge.card.spellability.SpellAbility} object. - * @return a CardList of discarded cards. - */ - public CardList AI_discardNumType(int numDiscard, String[] uTypes, SpellAbility sa) { - CardList hand = AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer()); - hand = hand.getValidCards(uTypes, sa.getActivatingPlayer(), sa.getSourceCard()); - - if (hand.size() < numDiscard){ - return null; - } - - CardList discard = new CardList(); - - CardListUtil.sortCMC(hand); - hand.reverse(); - for (int i = 0; i < numDiscard; i++){ - discard.add(hand.get(i)); - } - - return discard; - } - /** *

discard_PutIntoPlayInstead.

* diff --git a/src/main/java/forge/card/cost/CostDiscard.java b/src/main/java/forge/card/cost/CostDiscard.java index ff0f2747dd9..45627b108bc 100644 --- a/src/main/java/forge/card/cost/CostDiscard.java +++ b/src/main/java/forge/card/cost/CostDiscard.java @@ -6,6 +6,7 @@ import forge.ButtonUtil; import forge.Card; import forge.CardList; import forge.CardListUtil; +import forge.ComputerUtil; import forge.Constant; import forge.Player; import forge.PlayerZone; @@ -197,7 +198,7 @@ public class CostDiscard extends CostPartWithList { list = CardListUtil.getRandomSubList(hand, c); } else{ - list = AllZone.getGameAction().AI_discardNumType(c, type.split(";"), ability); + list = ComputerUtil.AI_discardNumType(c, type.split(";"), ability); } } return list != null; diff --git a/src/main/java/forge/card/cost/CostReveal.java b/src/main/java/forge/card/cost/CostReveal.java index cdbdf17f99c..5f44317edab 100644 --- a/src/main/java/forge/card/cost/CostReveal.java +++ b/src/main/java/forge/card/cost/CostReveal.java @@ -5,6 +5,7 @@ import forge.AllZoneUtil; import forge.ButtonUtil; import forge.Card; import forge.CardList; +import forge.ComputerUtil; import forge.Constant; import forge.Player; import forge.card.abilityFactory.AbilityFactory; @@ -65,7 +66,7 @@ public class CostReveal extends CostPartWithList { } } - list = AllZone.getGameAction().AI_discardNumType(c, type.split(";"), ability); + list = ComputerUtil.AI_discardNumType(c, type.split(";"), ability); } return list != null; }