setLife uses no gui

This commit is contained in:
Maxmtg
2013-12-31 05:53:06 +00:00
parent 4235a6906e
commit e179aa404c
6 changed files with 34 additions and 14 deletions

View File

@@ -1089,6 +1089,23 @@ public class AiController {
return library;
} // smoothComputerManaCurve()
public int chooseNumber(SpellAbility sa, String title,List<Integer> options, Player relatedPlayer) {
switch(sa.getApi())
{
case SetLife:
if (relatedPlayer.equals(sa.getSourceCard().getController())) {
return Collections.max(options);
} else if (relatedPlayer.isOpponentOf(sa.getSourceCard().getController())) {
return Collections.min(options);
} else {
return options.get(0);
}
default:
return 0;
}
}
}

View File

@@ -1,7 +1,6 @@
package forge.game.ability.effects;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import forge.game.ability.AbilityUtils;
@@ -9,7 +8,6 @@ import forge.game.ability.SpellAbilityEffect;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions;
import forge.gui.GuiChoose;
public class LifeSetEffect extends SpellAbilityEffect {
@@ -36,18 +34,7 @@ public class LifeSetEffect extends SpellAbilityEffect {
if (!redistribute) {
p.setLife(lifeAmount, sa.getSourceCard());
} else {
int life;
if (sa.getActivatingPlayer().isHuman()) {
life = GuiChoose.one("Life Total: " + p, lifetotals);
} else {//AI
if (p.equals(sa.getSourceCard().getController())) {
life = Collections.max(lifetotals);
} else if (p.isOpponentOf(sa.getSourceCard().getController())) {
life = Collections.min(lifetotals);
} else {
life = lifetotals.get(0);
}
}
int life = sa.getActivatingPlayer().getController().chooseNumber(sa, "Life Total: " + p, lifetotals, p);
p.setLife(life, sa.getSourceCard());
lifetotals.remove((Integer) life);
}

View File

@@ -180,6 +180,7 @@ public abstract class PlayerController {
public abstract boolean payManaOptional(Card card, Cost cost, SpellAbility sa, String prompt, ManaPaymentPurpose purpose);
public abstract int chooseNumber(SpellAbility sa, String title, int min, int max);
public abstract int chooseNumber(SpellAbility sa, String title, List<Integer> values, Player relatedPlayer);
public final boolean chooseBinary(SpellAbility sa, String question, BinaryChoiceType kindOfChoice) { return chooseBinary(sa, question, kindOfChoice, null); }
public abstract boolean chooseBinary(SpellAbility sa, String question, BinaryChoiceType kindOfChoice, Boolean defaultChioce);

View File

@@ -429,6 +429,10 @@ public class PlayerControllerAi extends PlayerController {
public int chooseNumber(SpellAbility sa, String title, int min, int max) {
return brains.chooseNumber(sa, title, min, max);
}
public int chooseNumber(SpellAbility sa, String title, List<Integer> options, Player relatedPlayer) {
return brains.chooseNumber(sa, title, options, relatedPlayer);
}
/* (non-Javadoc)
* @see forge.game.player.PlayerController#chooseFlipResult(forge.Card, forge.game.player.Player, java.lang.String[], boolean)

View File

@@ -392,6 +392,11 @@ public class PlayerControllerHuman extends PlayerController {
}
return GuiChoose.one(title, choices).intValue();
}
@Override
public int chooseNumber(SpellAbility sa, String title, List<Integer> choices, Player relatedPlayer) {
return GuiChoose.one(title, choices).intValue();
}
@Override
public SpellAbility chooseSingleSpellForEffect(java.util.List<SpellAbility> spells, SpellAbility sa, String title) {

View File

@@ -556,4 +556,10 @@ public class PlayerControllerForTests extends PlayerController {
// TODO Auto-generated method stub
return losses;
}
@Override
public int chooseNumber(SpellAbility sa, String title, List<Integer> values, Player relatedPlayer) {
// TODO Auto-generated method stub
return Iterables.getFirst(values, Integer.valueOf(0));
}
}