mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
- Compilation fix for the updated AF interface (updating AF ChooseSource).
This commit is contained in:
@@ -18,7 +18,7 @@ public class ChooseSourceAi extends SpellAiLogic {
|
|||||||
* @see forge.card.abilityfactory.SpellAiLogic#canPlayAI(forge.game.player.Player, java.util.Map, forge.card.spellability.SpellAbility)
|
* @see forge.card.abilityfactory.SpellAiLogic#canPlayAI(forge.game.player.Player, java.util.Map, forge.card.spellability.SpellAbility)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected boolean canPlayAI(Player ai, Map<String, String> params, SpellAbility sa) {
|
protected boolean canPlayAI(Player ai, SpellAbility sa) {
|
||||||
// TODO: AI Support! Currently this is copied from AF ChooseCard.
|
// TODO: AI Support! Currently this is copied from AF ChooseCard.
|
||||||
final Card host = sa.getSourceCard();
|
final Card host = sa.getSourceCard();
|
||||||
|
|
||||||
@@ -31,27 +31,27 @@ public class ChooseSourceAi extends SpellAiLogic {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (params.containsKey("AILogic")) {
|
if (sa.hasParam("AILogic")) {
|
||||||
ZoneType choiceZone = ZoneType.Battlefield;
|
ZoneType choiceZone = ZoneType.Battlefield;
|
||||||
if (params.containsKey("ChoiceZone")) {
|
if (sa.hasParam("ChoiceZone")) {
|
||||||
choiceZone = ZoneType.smartValueOf(params.get("ChoiceZone"));
|
choiceZone = ZoneType.smartValueOf(sa.getParam("ChoiceZone"));
|
||||||
}
|
}
|
||||||
List<Card> choices = Singletons.getModel().getGame().getCardsIn(choiceZone);
|
List<Card> choices = Singletons.getModel().getGame().getCardsIn(choiceZone);
|
||||||
if (params.containsKey("Choices")) {
|
if (sa.hasParam("Choices")) {
|
||||||
choices = CardLists.getValidCards(choices, params.get("Choices"), host.getController(), host);
|
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), host.getController(), host);
|
||||||
}
|
}
|
||||||
if (params.containsKey("TargetControls")) {
|
if (sa.hasParam("TargetControls")) {
|
||||||
choices = CardLists.filterControlledBy(choices, ai.getOpponent());
|
choices = CardLists.filterControlledBy(choices, ai.getOpponent());
|
||||||
}
|
}
|
||||||
if (params.get("AILogic").equals("AtLeast1")) {
|
if (sa.getParam("AILogic").equals("AtLeast1")) {
|
||||||
if (choices.isEmpty()) {
|
if (choices.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (params.get("AILogic").equals("AtLeast2") || params.get("AILogic").equals("BestBlocker")) {
|
} else if (sa.getParam("AILogic").equals("AtLeast2") || sa.getParam("AILogic").equals("BestBlocker")) {
|
||||||
if (choices.size() < 2) {
|
if (choices.size() < 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (params.get("AILogic").equals("Clone")) {
|
} else if (sa.getParam("AILogic").equals("Clone")) {
|
||||||
choices = CardLists.getValidCards(choices, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host);
|
choices = CardLists.getValidCards(choices, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host);
|
||||||
if (choices.isEmpty()) {
|
if (choices.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
@@ -63,7 +63,7 @@ public class ChooseSourceAi extends SpellAiLogic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean chkAIDrawback(java.util.Map<String,String> params, SpellAbility sa, Player ai) {
|
public boolean chkAIDrawback(SpellAbility sa, Player ai) {
|
||||||
return canPlayAI(ai, params, sa);
|
return canPlayAI(ai, sa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ import java.util.Stack;
|
|||||||
|
|
||||||
public class ChooseSourceEffect extends SpellEffect {
|
public class ChooseSourceEffect extends SpellEffect {
|
||||||
@Override
|
@Override
|
||||||
protected String getStackDescription(java.util.Map<String,String> params, SpellAbility sa) {
|
protected String getStackDescription(SpellAbility sa) {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
for (final Player p : getTargetPlayers(sa, params)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
sb.append(p).append(" ");
|
sb.append(p).append(" ");
|
||||||
}
|
}
|
||||||
sb.append("chooses a source.");
|
sb.append("chooses a source.");
|
||||||
@@ -32,12 +32,12 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resolve(java.util.Map<String,String> params, SpellAbility sa) {
|
public void resolve(SpellAbility sa) {
|
||||||
final Card host = sa.getSourceCard();
|
final Card host = sa.getSourceCard();
|
||||||
final ArrayList<Card> chosen = new ArrayList<Card>();
|
final ArrayList<Card> chosen = new ArrayList<Card>();
|
||||||
|
|
||||||
final Target tgt = sa.getTarget();
|
final Target tgt = sa.getTarget();
|
||||||
final List<Player> tgtPlayers = getTargetPlayers(sa, params);
|
final List<Player> tgtPlayers = getTargetPlayers(sa);
|
||||||
|
|
||||||
Stack<SpellAbilityStackInstance> stack = Singletons.getModel().getGame().getStack().getStack();
|
Stack<SpellAbilityStackInstance> stack = Singletons.getModel().getGame().getStack().getStack();
|
||||||
|
|
||||||
@@ -64,11 +64,13 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (null != stackinst.getSpellAbility().getTargetList()) {
|
// TODO: This was removed in the new AF code, was this perhaps necessary for this
|
||||||
for (Card c : stackinst.getSpellAbility().getTargetList()) {
|
// AF to function correctly?
|
||||||
referencedSources.add(c);
|
//if (null != stackinst.getSpellAbility().getTargetList()) {
|
||||||
}
|
// for (Card c : stackinst.getSpellAbility().getTargetList()) {
|
||||||
}
|
// referencedSources.add(c);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
if (null != stackinst.getSpellAbility().getTargetCard()) {
|
if (null != stackinst.getSpellAbility().getTargetCard()) {
|
||||||
referencedSources.add(stackinst.getSpellAbility().getTargetCard());
|
referencedSources.add(stackinst.getSpellAbility().getTargetCard());
|
||||||
}
|
}
|
||||||
@@ -85,13 +87,13 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
|
|
||||||
ArrayList<String> src_choices = new ArrayList<String>();
|
ArrayList<String> src_choices = new ArrayList<String>();
|
||||||
|
|
||||||
if (params.containsKey("Choices")) {
|
if (sa.hasParam("Choices")) {
|
||||||
permanentSources = CardLists.getValidCards(permanentSources, params.get("Choices"), host.getController(), host);
|
permanentSources = CardLists.getValidCards(permanentSources, sa.getParam("Choices"), host.getController(), host);
|
||||||
|
|
||||||
stackSources = CardLists.getValidCards(stackSources, params.get("Choices"), host.getController(), host);
|
stackSources = CardLists.getValidCards(stackSources, sa.getParam("Choices"), host.getController(), host);
|
||||||
referencedSources = CardLists.getValidCards(referencedSources, params.get("Choices"), host.getController(), host);
|
referencedSources = CardLists.getValidCards(referencedSources, sa.getParam("Choices"), host.getController(), host);
|
||||||
}
|
}
|
||||||
if (params.containsKey("TargetControls")) {
|
if (sa.hasParam("TargetControls")) {
|
||||||
permanentSources = CardLists.filterControlledBy(permanentSources, tgtPlayers.get(0));
|
permanentSources = CardLists.filterControlledBy(permanentSources, tgtPlayers.get(0));
|
||||||
stackSources = CardLists.filterControlledBy(stackSources, tgtPlayers.get(0));
|
stackSources = CardLists.filterControlledBy(stackSources, tgtPlayers.get(0));
|
||||||
referencedSources = CardLists.filterControlledBy(referencedSources, tgtPlayers.get(0));
|
referencedSources = CardLists.filterControlledBy(referencedSources, tgtPlayers.get(0));
|
||||||
@@ -121,15 +123,15 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String numericAmount = params.containsKey("Amount") ? params.get("Amount") : "1";
|
final String numericAmount = sa.hasParam("Amount") ? sa.getParam("Amount") : "1";
|
||||||
final int validAmount = !numericAmount.matches("[0-9][0-9]?")
|
final int validAmount = !numericAmount.matches("[0-9][0-9]?")
|
||||||
? CardFactoryUtil.xCount(host, host.getSVar(params.get("Amount"))) : Integer.parseInt(numericAmount);
|
? CardFactoryUtil.xCount(host, host.getSVar(sa.getParam("Amount"))) : Integer.parseInt(numericAmount);
|
||||||
|
|
||||||
for (final Player p : tgtPlayers) {
|
for (final Player p : tgtPlayers) {
|
||||||
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||||
for (int i = 0; i < validAmount; i++) {
|
for (int i = 0; i < validAmount; i++) {
|
||||||
if (p.isHuman()) {
|
if (p.isHuman()) {
|
||||||
final String choiceTitle = params.containsKey("ChoiceTitle") ? params.get("ChoiceTitle") : "Choose a source ";
|
final String choiceTitle = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a source ";
|
||||||
Card o = null;
|
Card o = null;
|
||||||
do {
|
do {
|
||||||
o = GuiChoose.one(choiceTitle, sourcesToChooseFrom);
|
o = GuiChoose.one(choiceTitle, sourcesToChooseFrom);
|
||||||
@@ -141,12 +143,12 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else { // TODO: AI Support! This is copied from AF ChooseCard!
|
} else { // TODO: AI Support! This is copied from AF ChooseCard!
|
||||||
if (params.containsKey("AILogic") && params.get("AILogic").equals("BestBlocker")) {
|
if (sa.hasParam("AILogic") && sa.getParam("AILogic").equals("BestBlocker")) {
|
||||||
if (!CardLists.filter(sourcesToChooseFrom, Presets.UNTAPPED).isEmpty()) {
|
if (!CardLists.filter(sourcesToChooseFrom, Presets.UNTAPPED).isEmpty()) {
|
||||||
sourcesToChooseFrom = CardLists.filter(sourcesToChooseFrom, Presets.UNTAPPED);
|
sourcesToChooseFrom = CardLists.filter(sourcesToChooseFrom, Presets.UNTAPPED);
|
||||||
}
|
}
|
||||||
chosen.add(CardFactoryUtil.getBestCreatureAI(sourcesToChooseFrom));
|
chosen.add(CardFactoryUtil.getBestCreatureAI(sourcesToChooseFrom));
|
||||||
} else if (params.containsKey("AILogic") && params.get("AILogic").equals("Clone")) {
|
} else if (sa.hasParam("AILogic") && sa.getParam("AILogic").equals("Clone")) {
|
||||||
if (!CardLists.getValidCards(sourcesToChooseFrom, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host).isEmpty()) {
|
if (!CardLists.getValidCards(sourcesToChooseFrom, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host).isEmpty()) {
|
||||||
sourcesToChooseFrom = CardLists.getValidCards(sourcesToChooseFrom, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host);
|
sourcesToChooseFrom = CardLists.getValidCards(sourcesToChooseFrom, "Permanent.YouDontCtrl,Permanent.NonLegendary", host.getController(), host);
|
||||||
}
|
}
|
||||||
@@ -157,7 +159,7 @@ public class ChooseSourceEffect extends SpellEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
host.setChosenCard(chosen);
|
host.setChosenCard(chosen);
|
||||||
if (params.containsKey("RememberChosen")) {
|
if (sa.hasParam("RememberChosen")) {
|
||||||
for (final Card rem : chosen) {
|
for (final Card rem : chosen) {
|
||||||
host.addRemembered(rem);
|
host.addRemembered(rem);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user