AiCostDescision: add collection for discarded and tapped, to prevent the ai from using the same card twice

This commit is contained in:
Hanmac
2016-07-30 19:01:34 +00:00
parent 325fd94907
commit 13b1f01e3b

View File

@@ -27,10 +27,16 @@ public class AiCostDecision extends CostDecisionMakerBase {
private final SpellAbility ability; private final SpellAbility ability;
private final Card source; private final Card source;
private final CardCollection discarded;
private final CardCollection tapped;
public AiCostDecision(Player ai0, SpellAbility sa) { public AiCostDecision(Player ai0, SpellAbility sa) {
super(ai0); super(ai0);
ability = sa; ability = sa;
source = ability.getHostCard(); source = ability.getHostCard();
discarded = new CardCollection();
tapped = new CardCollection();
} }
@Override @Override
@@ -90,7 +96,12 @@ public class AiCostDecision extends CostDecisionMakerBase {
} }
else { else {
final AiController aic = ((PlayerControllerAi)player.getController()).getAi(); final AiController aic = ((PlayerControllerAi)player.getController()).getAi();
return PaymentDecision.card(aic.getCardsToDiscard(c, type.split(";"), ability));
CardCollection result = aic.getCardsToDiscard(c, type.split(";"), ability, discarded);
if (result != null) {
discarded.addAll(result);
}
return PaymentDecision.card(result);
} }
} }
@@ -396,14 +407,13 @@ public class AiCostDecision extends CostDecisionMakerBase {
return null; return null;
} }
CardCollectionView totap = ComputerUtil.chooseTapType(player, cost.getType(), source, !cost.canTapSource, c); CardCollectionView totap = ComputerUtil.chooseTapType(player, cost.getType(), source, !cost.canTapSource, c, tapped);
if (totap == null) { if (totap == null) {
System.out.println("Couldn't find a valid card to tap for: " + source.getName()); System.out.println("Couldn't find a valid card to tap for: " + source.getName());
return null; return null;
} }
tapped.addAll(totap);
return PaymentDecision.card(totap); return PaymentDecision.card(totap);
} }