mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
remove refs to gui and playertype in ChooseGenericEffect
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user