by adding a bit ugly method to player controller, I've removed last isHuman check and the last reference from api executor to AI

This commit is contained in:
Maxmtg
2014-02-09 20:22:15 +00:00
parent 2f2d24eb3e
commit 14a0e6e3ac
6 changed files with 33 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import forge.ai.ability.ChangeZoneAi;
import forge.ai.ability.CharmAi;
import forge.card.ColorSet;
import forge.card.MagicColor;
@@ -754,4 +755,12 @@ public class PlayerControllerAi extends PlayerController {
return "Morphling";
}
@Override
public Card chooseSingleCardForZoneChange(ZoneType destination,
List<ZoneType> origin, SpellAbility sa, List<Card> fetchList,
String selectPrompt, boolean b, Player decider) {
return ChangeZoneAi.chooseCardToHiddenOriginChangeZone(destination, origin, sa, fetchList, player, decider);
}
}

View File

@@ -3,7 +3,6 @@ package forge.game.ability.effects;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.ai.ability.ChangeZoneAi;
import forge.card.CardCharacteristicName;
import forge.game.Game;
import forge.game.GameEntity;
@@ -735,10 +734,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
} else if (sa.hasParam("Defined")) {
c = Iterables.getFirst(fetchList, null);
} else {
if (decider.getController().getLobbyPlayer().isHuman())
c = decider.getController().chooseSingleEntityForEffect(fetchList, sa, selectPrompt, !sa.hasParam("Mandatory"), decider);
else
c = ChangeZoneAi.chooseCardToHiddenOriginChangeZone(destination, origin, sa, fetchList, player, decider);
c = decider.getController().chooseSingleCardForZoneChange(destination, origin, sa, fetchList, selectPrompt, !sa.hasParam("Mandatory"), decider);
}
if (c == null) {

View File

@@ -17,9 +17,6 @@ public abstract class LobbyPlayer implements IHasIcon {
protected abstract PlayerType getType();
@Deprecated
public boolean isHuman() { return getType() == PlayerType.HUMAN; }
protected final String name;
protected String imageKey;
private int avatarIndex = -1;

View File

@@ -2,6 +2,7 @@ package forge.game.player;
import com.google.common.base.Predicate;
import com.google.common.collect.Multimap;
import forge.card.ColorSet;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostShard;
@@ -29,6 +30,7 @@ import forge.game.trigger.Trigger;
import forge.game.trigger.WrappedAbility;
import forge.game.zone.ZoneType;
import forge.item.PaperCard;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@@ -227,6 +229,9 @@ public abstract class PlayerController {
public abstract String chooseCardName(SpellAbility sa, Predicate<PaperCard> cpp, String valid, String message);
// better to have this odd method than those if playerType comparison in ChangeZone
public abstract Card chooseSingleCardForZoneChange(ZoneType destination, List<ZoneType> origin, SpellAbility sa, List<Card> fetchList, String selectPrompt, boolean b, Player decider);
}