mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
another 2 calls to gui removed
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -56,11 +57,13 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
validDesc = sa.getParam("ValidDesc");
|
||||
}
|
||||
|
||||
boolean randomChoice = sa.hasParam("AtRandom");
|
||||
for (final Player p : tgtPlayers) {
|
||||
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||
boolean ok = false;
|
||||
while (!ok) {
|
||||
if (sa.hasParam("AtRandom")) {
|
||||
String chosen = "";
|
||||
|
||||
while (true) {
|
||||
if (randomChoice) {
|
||||
// Currently only used for Momir Avatar, if something else gets added here, make it more generic
|
||||
Predicate<CardRules> baseRule = CardRulesPredicates.Presets.IS_CREATURE;
|
||||
|
||||
@@ -75,47 +78,44 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
Predicates.compose(additionalRule, PaperCard.FN_GET_RULES));
|
||||
cards = Lists.newArrayList(Iterables.filter(cards, cpp));
|
||||
if (!cards.isEmpty()) {
|
||||
host.setNamedCard(Aggregates.random(cards).getName());
|
||||
chosen = Aggregates.random(cards).getName();
|
||||
} else {
|
||||
host.setNamedCard("");
|
||||
chosen = "";
|
||||
}
|
||||
ok = true;
|
||||
} else if (p.isHuman()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (p.isHuman()) {
|
||||
final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card.";
|
||||
|
||||
List<PaperCard> cards = Lists.newArrayList(Singletons.getMagicDb().getCommonCards().getUniqueCards());
|
||||
Predicate<PaperCard> cpp = null;
|
||||
|
||||
|
||||
if ( StringUtils.containsIgnoreCase(valid, "nonland") )
|
||||
{
|
||||
Predicate<PaperCard> cpp = Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES);
|
||||
cards = Lists.newArrayList(Iterables.filter(cards, cpp));
|
||||
cpp = Predicates.compose(CardRulesPredicates.Presets.IS_NON_LAND, PaperCard.FN_GET_RULES);
|
||||
}
|
||||
if ( StringUtils.containsIgnoreCase(valid, "nonbasic") )
|
||||
{
|
||||
Predicate<PaperCard> cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_BASIC_LAND), PaperCard.FN_GET_RULES);
|
||||
cards = Lists.newArrayList(Iterables.filter(cards, cpp));
|
||||
cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_BASIC_LAND), PaperCard.FN_GET_RULES);
|
||||
}
|
||||
if ( StringUtils.containsIgnoreCase(valid, "noncreature") )
|
||||
{
|
||||
Predicate<PaperCard> cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_CREATURE), PaperCard.FN_GET_RULES);
|
||||
cards = Lists.newArrayList(Iterables.filter(cards, cpp));
|
||||
cpp = Predicates.compose(Predicates.not(CardRulesPredicates.Presets.IS_CREATURE), PaperCard.FN_GET_RULES);
|
||||
}
|
||||
else if ( StringUtils.containsIgnoreCase(valid, "creature") )
|
||||
{
|
||||
Predicate<PaperCard> cpp = Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES);
|
||||
cards = Lists.newArrayList(Iterables.filter(cards, cpp));
|
||||
cpp = Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES);
|
||||
}
|
||||
|
||||
Collections.sort(cards);
|
||||
|
||||
PaperCard cp = GuiChoose.one(message, cards);
|
||||
PaperCard cp = p.getController().chooseSinglePaperCard(sa, message, cpp, sa.getSourceCard().getName());
|
||||
Card instanceForPlayer = Card.fromPaperCard(cp, p); // the Card instance for test needs a game to be tested
|
||||
if (instanceForPlayer.isValid(valid, host.getController(), host)) {
|
||||
host.setNamedCard(cp.getName());
|
||||
p.setNamedCard(cp.getName());
|
||||
ok = true;
|
||||
}
|
||||
if (!instanceForPlayer.isValid(valid, host.getController(), host))
|
||||
continue;
|
||||
|
||||
chosen = cp.getName();
|
||||
} else {
|
||||
String chosen = "";
|
||||
|
||||
if (sa.hasParam("AILogic")) {
|
||||
final String logic = sa.getParam("AILogic");
|
||||
if (logic.equals("MostProminentInComputerDeck")) {
|
||||
@@ -137,12 +137,13 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
||||
if (chosen.equals("")) {
|
||||
chosen = "Morphling";
|
||||
}
|
||||
GuiChoose.one("Computer picked: ", new String[]{chosen});
|
||||
host.setNamedCard(chosen);
|
||||
p.setNamedCard(chosen);
|
||||
ok = true;
|
||||
}
|
||||
}
|
||||
host.setNamedCard(chosen);
|
||||
if(!randomChoice) {
|
||||
p.getGame().getAction().nofityOfValue(sa, host, p.getName() + " picked " + chosen, p);
|
||||
p.setNamedCard(chosen);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.Map;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import forge.deck.Deck;
|
||||
@@ -28,6 +29,7 @@ import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.SpellAbilityStackInstance;
|
||||
import forge.game.spellability.TargetChoices;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
|
||||
/**
|
||||
@@ -174,7 +176,8 @@ public abstract class PlayerController {
|
||||
public abstract List<AbilitySub> chooseModeForAbility(SpellAbility sa, int min, int num);
|
||||
|
||||
public abstract String chooseSingleColor(ImmutableList<String> onlyColors);
|
||||
|
||||
public abstract String chooseHybridMana(String s);
|
||||
|
||||
public abstract PaperCard chooseSinglePaperCard(SpellAbility sa, String message, Predicate<PaperCard> cpp, String name);
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.esotericsoftware.minlog.Log;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -45,6 +46,7 @@ import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.SpellAbilityStackInstance;
|
||||
import forge.game.spellability.TargetChoices;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.item.PaperCard;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.MyRandom;
|
||||
|
||||
@@ -502,4 +504,10 @@ public class PlayerControllerAi extends PlayerController {
|
||||
return s.substring(0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaperCard chooseSinglePaperCard(SpellAbility sa, String message,
|
||||
Predicate<PaperCard> cpp, String name) {
|
||||
throw new UnsupportedOperationException("Should not be called for AI"); // or implement it if you know how
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -21,6 +22,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -839,4 +841,13 @@ public class PlayerControllerHuman extends PlayerController {
|
||||
public String chooseHybridMana(String s) {
|
||||
return GuiChoose.one("Choose a type", s.split("/"));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PaperCard chooseSinglePaperCard(SpellAbility sa, String message, Predicate<PaperCard> cpp, String name) {
|
||||
Iterable<PaperCard> cardsFromDb = Singletons.getMagicDb().getCommonCards().getUniqueCards();
|
||||
List<PaperCard> cards = Lists.newArrayList(Iterables.filter(cardsFromDb, cpp));
|
||||
Collections.sort(cards);
|
||||
return GuiChoose.one(message, cards);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user