- Moved AI_discardNumType to ComputerUtil.

This commit is contained in:
Sloth
2011-08-31 10:47:46 +00:00
parent d5434813c0
commit ca3ce5f4fa
4 changed files with 46 additions and 30 deletions

View File

@@ -922,6 +922,48 @@ public class ComputerUtil {
for (int i = count; i < amount; i++) sacList.add(typeList.get(i));
return sacList;
}
/**
* <p>AI_discardNumType.</p>
*
* @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;
}
/**
* <p>chooseExileType.</p>

View File

@@ -484,34 +484,6 @@ public class GameAction {
return moveToStack(c);
}
/**
* <p>AI_discardNumType.</p>
*
* @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;
}
/**
* <p>discard_PutIntoPlayInstead.</p>
*

View File

@@ -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;

View File

@@ -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;
}