From 22c741c7d07f53d094f32fca567ae623f4f9ecc8 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Wed, 3 Aug 2016 09:41:57 +0000 Subject: [PATCH] ClashAi: add logic to select player for Clash, Split cards are not implemented yet. --- .../main/java/forge/ai/ability/ClashAi.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java index 0bddebce25c..537e9a2c68f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java @@ -1,10 +1,15 @@ package forge.ai.ability; +import com.google.common.collect.Iterables; + import forge.ai.SpellAbilityAi; +import forge.game.card.Card; +import forge.game.card.CardCollectionView; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; +import forge.game.zone.ZoneType; public class ClashAi extends SpellAbilityAi { @@ -33,4 +38,26 @@ public class ClashAi extends SpellAbilityAi { return true; } + @Override + protected Player chooseSinglePlayer(Player ai, SpellAbility sa, Iterable options) { + for (Player p : options) { + if (p.getCardsIn(ZoneType.Library).size() == 0) + return p; + } + + CardCollectionView col = ai.getCardsIn(ZoneType.Library); + if (!col.isEmpty() && col.getFirst().getView().mayPlayerLook(ai.getView())) { + final Card top = col.get(0); + for (Player p : options) { + final Card oppTop = p.getCardsIn(ZoneType.Library).getFirst(); + // TODO add logic for SplitCards + if (top.getCMC() > oppTop.getCMC()) { + return p; + } + } + } + + return Iterables.getFirst(options, null); + } + }