code simplification in AF_Turns

This commit is contained in:
jendave
2011-08-06 23:17:56 +00:00
parent 3cd8eb0cbc
commit 2b642022d5

View File

@@ -4,10 +4,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import forge.AllZone;
import forge.Card;
import forge.ComputerUtil;
import forge.Player;
import forge.card.cardFactory.CardFactoryUtil;
import forge.card.spellability.Ability_Activated;
import forge.card.spellability.Ability_Sub;
import forge.card.spellability.Spell;
@@ -15,21 +13,22 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
public class AbilityFactory_Turns {
// *************************************************************************
// ************************* ADD TURN **************************************
// *************************************************************************
public static SpellAbility createAbilityAddTurn(final AbilityFactory AF){
public static SpellAbility createAbilityAddTurn(final AbilityFactory af) {
final SpellAbility abAddTurn = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()){
final SpellAbility abAddTurn = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
private static final long serialVersionUID = -3526200766738015688L;
final AbilityFactory af = AF;
@Override
public String getStackDescription() {
return addTurnStackDescription(af, this);
}
@Override
public boolean canPlayAI() {
return addTurnCanPlayAI(af, this);
}
@@ -48,21 +47,17 @@ public class AbilityFactory_Turns {
return abAddTurn;
}
public static SpellAbility createSpellAddTurn(final AbilityFactory AF){
final SpellAbility spAddTurn = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()){
public static SpellAbility createSpellAddTurn(final AbilityFactory af) {
final SpellAbility spAddTurn = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
private static final long serialVersionUID = -3921131887560356006L;
final AbilityFactory af = AF;
@Override
public String getStackDescription(){
return addTurnStackDescription(af, this);
}
public boolean canPlayAI()
{
// if X depends on abCost, the AI needs to choose which card he would sacrifice first
// then call xCount with that card to properly calculate the amount
// Or choosing how many to sacrifice
@Override
public boolean canPlayAI() {
return addTurnCanPlayAI(af, this);
}
@@ -75,10 +70,9 @@ public class AbilityFactory_Turns {
return spAddTurn;
}
public static SpellAbility createDrawbackAddTurn(final AbilityFactory AF){
final SpellAbility dbAddTurn = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()){
public static SpellAbility createDrawbackAddTurn(final AbilityFactory af) {
final SpellAbility dbAddTurn = new Ability_Sub(af.getHostCard(), af.getAbTgt()) {
private static final long serialVersionUID = -562517287448810951L;
final AbilityFactory af = AF;
@Override
public String getStackDescription() {
@@ -144,23 +138,7 @@ public class AbilityFactory_Turns {
}
private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
if (!ComputerUtil.canPayCost(sa))
return false;
Target tgt = sa.getTarget();
if (sa.getTarget() != null){
tgt.resetTargets();
sa.getTarget().addTarget(AllZone.ComputerPlayer);
}
else{
ArrayList<Player> tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa);
for (Player p : tgtPlayers)
if (p.isHuman())
return false;
// not sure if the AI should be playing with cards that give the Human more turns.
}
return true;
return addTurnTriggerAI(af, sa, false);
}
private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory) {
@@ -185,7 +163,6 @@ public class AbilityFactory_Turns {
private static void addTurnResolve(final AbilityFactory af, final SpellAbility sa){
HashMap<String,String> params = af.getMapParams();
Card card = af.getHostCard();
int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa);
ArrayList<Player> tgtPlayers;
@@ -209,12 +186,7 @@ public class AbilityFactory_Turns {
if(abSub != null) {
abSub.resolve();
}
else{
String DrawBack = params.get("SubAbility");
if (af.hasSubAbility())
CardFactoryUtil.doDrawBack(DrawBack, numTurns, card.getController(), card.getController().getOpponent(), tgtPlayers.get(0), card, null, sa);
}
}
}
}
}//end class AbilityFactory_Turns