remove refs to gui and playertype in ChooseGenericEffect

This commit is contained in:
Maxmtg
2013-12-03 08:48:19 +00:00
parent bf629ff518
commit d15948e44b
5 changed files with 56 additions and 34 deletions

1
.gitattributes vendored
View File

@@ -14719,6 +14719,7 @@ forge-gui/src/main/java/forge/ai/ability/CharmAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java -text forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java -text forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java -text forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseGenericEffectAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java -text forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java -text forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java -text
forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java -text forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java -text

View File

@@ -0,0 +1,36 @@
package forge.ai.ability;
import java.util.List;
import forge.ai.SpellAbilityAi;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.util.Aggregates;
/**
* TODO: Write javadoc for this type.
*
*/
public class ChooseGenericEffectAi extends SpellAbilityAi {
@Override
protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) {
return false;
}
/* (non-Javadoc)
* @see forge.card.abilityfactory.SpellAiLogic#chkAIDrawback(java.util.Map, forge.card.spellability.SpellAbility, forge.game.player.Player)
*/
@Override
public boolean chkAIDrawback(SpellAbility sa, Player aiPlayer) {
return canPlayAI(aiPlayer, sa);
}
public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List<SpellAbility> spells) {
if ("Random".equals(sa.getParam("AILogic"))) {
return Aggregates.random(spells);
} else {
return spells.get(0);
}
}
}

View File

@@ -15,11 +15,6 @@ import forge.game.spellability.AbilitySub;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
/**
* TODO: Write javadoc for this type.
*
*/
public class LifeGainAi extends SpellAbilityAi { public class LifeGainAi extends SpellAbilityAi {
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -69,7 +69,7 @@ public enum ApiType {
Fog (FogEffect.class, FogAi.class), Fog (FogEffect.class, FogAi.class),
GainControl (ControlGainEffect.class, ControlGainAi.class), GainControl (ControlGainEffect.class, ControlGainAi.class),
GainLife (LifeGainEffect.class, LifeGainAi.class), GainLife (LifeGainEffect.class, LifeGainAi.class),
GenericChoice (ChooseGenericEffect.class, CannotPlayAi.class), GenericChoice (ChooseGenericEffect.class, ChooseGenericEffectAi.class),
LoseLife (LifeLoseEffect.class, LifeLoseAi.class), LoseLife (LifeLoseEffect.class, LifeLoseAi.class),
LosesGame (GameLossEffect.class, GameLossAi.class), LosesGame (GameLossEffect.class, GameLossAi.class),
Mana (ManaEffect.class, ManaEffectAi.class), Mana (ManaEffect.class, ManaEffectAi.class),

View File

@@ -1,12 +1,7 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils; import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect; import forge.game.ability.SpellAbilityEffect;
@@ -15,8 +10,7 @@ import forge.game.player.Player;
import forge.game.spellability.AbilitySub; import forge.game.spellability.AbilitySub;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.gui.GuiChoose; import forge.util.MyRandom;
import forge.util.Aggregates;
public class ChooseGenericEffect extends SpellAbilityEffect { public class ChooseGenericEffect extends SpellAbilityEffect {
@@ -35,38 +29,34 @@ public class ChooseGenericEffect extends SpellAbilityEffect {
@Override @Override
public void resolve(SpellAbility sa) { public void resolve(SpellAbility sa) {
final Card host = sa.getSourceCard(); final Card host = sa.getSourceCard();
final BiMap<String, String> choices = HashBiMap.create(); final String[] choices = sa.getParam("Choices").split(",");
for (String s : Arrays.asList(sa.getParam("Choices").split(","))) { final List<SpellAbility> abilities = new ArrayList<SpellAbility>();
final Map<String, String> theseParams = AbilityFactory.getMapParams(host.getSVar(s));
choices.put(s, theseParams.get("ChoiceDescription").replace("CARDNAME", host.getName())); for (String s : choices) {
abilities.add(AbilityFactory.getAbility(host.getSVar(s), host));
} }
final List<Player> tgtPlayers = getDefinedPlayersOrTargeted(sa); final List<Player> tgtPlayers = getDefinedPlayersOrTargeted(sa);
final TargetRestrictions tgt = sa.getTargetRestrictions(); final TargetRestrictions tgt = sa.getTargetRestrictions();
for (final Player p : tgtPlayers) { for (final Player p : tgtPlayers) {
if (tgt != null && !p.canBeTargetedBy(sa)) { if (tgt != null && !p.canBeTargetedBy(sa)) {
continue; continue;
} }
SpellAbility chosenSA = null;
String choice; int idxChosen = 0;
String chosenName;
if (sa.hasParam("AtRandom")) { if (sa.hasParam("AtRandom")) {
choice = Aggregates.random(choices.keySet()); idxChosen = MyRandom.getRandom().nextInt(choices.length);
chosenName = choices[idxChosen];
} else { } else {
if (p.isHuman()) { SpellAbility saChosen = p.getController().chooseSingleSpellForEffect(abilities, sa, "Choose one");
choice = choices.inverse().get(GuiChoose.one("Choose one", choices.values())); idxChosen = abilities.indexOf(saChosen);
} else { //Computer AI chosenName = choices[idxChosen];
if ("Random".equals(sa.getParam("AILogic"))) {
choice = Aggregates.random(choices.keySet());
} else {
choice = sa.getParam("Choices").split(",")[0];
} }
} SpellAbility chosenSA = AbilityFactory.getAbility(host.getSVar(chosenName), host);
}
chosenSA = AbilityFactory.getAbility(host.getSVar(choice), host);
if (sa.hasParam("ShowChoice")) { if (sa.hasParam("ShowChoice")) {
p.getGame().getAction().nofityOfValue(sa, p, choices.get(choice), null); p.getGame().getAction().nofityOfValue(sa, p, abilities.get(idxChosen).getDescription(), null);
} }
chosenSA.setActivatingPlayer(sa.getSourceCard().getController()); chosenSA.setActivatingPlayer(sa.getSourceCard().getController());
((AbilitySub) chosenSA).setParent(sa); ((AbilitySub) chosenSA).setParent(sa);