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