mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
code simplification in AF_Turns
This commit is contained in:
@@ -4,10 +4,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.Card;
|
|
||||||
import forge.ComputerUtil;
|
import forge.ComputerUtil;
|
||||||
import forge.Player;
|
import forge.Player;
|
||||||
import forge.card.cardFactory.CardFactoryUtil;
|
|
||||||
import forge.card.spellability.Ability_Activated;
|
import forge.card.spellability.Ability_Activated;
|
||||||
import forge.card.spellability.Ability_Sub;
|
import forge.card.spellability.Ability_Sub;
|
||||||
import forge.card.spellability.Spell;
|
import forge.card.spellability.Spell;
|
||||||
@@ -15,21 +13,22 @@ import forge.card.spellability.SpellAbility;
|
|||||||
import forge.card.spellability.Target;
|
import forge.card.spellability.Target;
|
||||||
|
|
||||||
public class AbilityFactory_Turns {
|
public class AbilityFactory_Turns {
|
||||||
|
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
// ************************* ADD TURN **************************************
|
// ************************* 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;
|
private static final long serialVersionUID = -3526200766738015688L;
|
||||||
final AbilityFactory af = AF;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription(){
|
public String getStackDescription() {
|
||||||
return addTurnStackDescription(af, this);
|
return addTurnStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean canPlayAI() {
|
public boolean canPlayAI() {
|
||||||
return addTurnCanPlayAI(af, this);
|
return addTurnCanPlayAI(af, this);
|
||||||
}
|
}
|
||||||
@@ -48,21 +47,17 @@ public class AbilityFactory_Turns {
|
|||||||
return abAddTurn;
|
return abAddTurn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpellAbility createSpellAddTurn(final AbilityFactory AF){
|
public static SpellAbility createSpellAddTurn(final AbilityFactory af) {
|
||||||
final SpellAbility spAddTurn = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()){
|
final SpellAbility spAddTurn = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) {
|
||||||
private static final long serialVersionUID = -3921131887560356006L;
|
private static final long serialVersionUID = -3921131887560356006L;
|
||||||
final AbilityFactory af = AF;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription(){
|
public String getStackDescription(){
|
||||||
return addTurnStackDescription(af, this);
|
return addTurnStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlayAI()
|
@Override
|
||||||
{
|
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
|
|
||||||
return addTurnCanPlayAI(af, this);
|
return addTurnCanPlayAI(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,13 +70,12 @@ public class AbilityFactory_Turns {
|
|||||||
return spAddTurn;
|
return spAddTurn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpellAbility createDrawbackAddTurn(final AbilityFactory AF){
|
public static SpellAbility createDrawbackAddTurn(final AbilityFactory af) {
|
||||||
final SpellAbility dbAddTurn = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()){
|
final SpellAbility dbAddTurn = new Ability_Sub(af.getHostCard(), af.getAbTgt()) {
|
||||||
private static final long serialVersionUID = -562517287448810951L;
|
private static final long serialVersionUID = -562517287448810951L;
|
||||||
final AbilityFactory af = AF;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getStackDescription(){
|
public String getStackDescription() {
|
||||||
return addTurnStackDescription(af, this);
|
return addTurnStackDescription(af, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +98,7 @@ public class AbilityFactory_Turns {
|
|||||||
return dbAddTurn;
|
return dbAddTurn;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String addTurnStackDescription(AbilityFactory af, SpellAbility sa){
|
private static String addTurnStackDescription(AbilityFactory af, SpellAbility sa) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), af.getMapParams().get("NumTurns"), sa);
|
int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), af.getMapParams().get("NumTurns"), sa);
|
||||||
|
|
||||||
@@ -116,7 +110,7 @@ public class AbilityFactory_Turns {
|
|||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
Target tgt = af.getAbTgt();
|
Target tgt = af.getAbTgt();
|
||||||
if (tgt != null)
|
if(tgt != null)
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
else
|
else
|
||||||
tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa);
|
tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa);
|
||||||
@@ -136,47 +130,31 @@ public class AbilityFactory_Turns {
|
|||||||
sb.append(" after this one.");
|
sb.append(" after this one.");
|
||||||
|
|
||||||
Ability_Sub abSub = sa.getSubAbility();
|
Ability_Sub abSub = sa.getSubAbility();
|
||||||
if (abSub != null) {
|
if(abSub != null) {
|
||||||
sb.append(abSub.getStackDescription());
|
sb.append(abSub.getStackDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa){
|
private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
if (!ComputerUtil.canPayCost(sa))
|
return addTurnTriggerAI(af, sa, false);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory){
|
private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory) {
|
||||||
if (!ComputerUtil.canPayCost(sa))
|
if (!ComputerUtil.canPayCost(sa))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Target tgt = sa.getTarget();
|
Target tgt = sa.getTarget();
|
||||||
|
|
||||||
if (sa.getTarget() != null){
|
if(sa.getTarget() != null){
|
||||||
tgt.resetTargets();
|
tgt.resetTargets();
|
||||||
sa.getTarget().addTarget(AllZone.ComputerPlayer);
|
sa.getTarget().addTarget(AllZone.ComputerPlayer);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ArrayList<Player> tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa);
|
ArrayList<Player> tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa);
|
||||||
for (Player p : tgtPlayers)
|
for(Player p : tgtPlayers)
|
||||||
if (p.isHuman() && !mandatory)
|
if(p.isHuman() && !mandatory)
|
||||||
return false;
|
return false;
|
||||||
// not sure if the AI should be playing with cards that give the Human more turns.
|
// not sure if the AI should be playing with cards that give the Human more turns.
|
||||||
}
|
}
|
||||||
@@ -185,7 +163,6 @@ public class AbilityFactory_Turns {
|
|||||||
|
|
||||||
private static void addTurnResolve(final AbilityFactory af, final SpellAbility sa){
|
private static void addTurnResolve(final AbilityFactory af, final SpellAbility sa){
|
||||||
HashMap<String,String> params = af.getMapParams();
|
HashMap<String,String> params = af.getMapParams();
|
||||||
Card card = af.getHostCard();
|
|
||||||
int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa);
|
int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa);
|
||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
@@ -204,17 +181,12 @@ public class AbilityFactory_Turns {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (af.hasSubAbility()){
|
if(af.hasSubAbility()) {
|
||||||
Ability_Sub abSub = sa.getSubAbility();
|
Ability_Sub abSub = sa.getSubAbility();
|
||||||
if (abSub != null){
|
if(abSub != null) {
|
||||||
abSub.resolve();
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user