Checkstyle fixes in StaticAbility_Continuous

This commit is contained in:
slapshot5
2011-09-08 03:05:26 +00:00
parent f8cd6ff7ac
commit f955f12c48

View File

@@ -18,270 +18,302 @@ import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
public class StaticAbility_Continuous { public class StaticAbility_Continuous {
public static void applyContinuousAbility(StaticAbility stAb) { /**
HashMap<String, String> params = stAb.getMapParams(); *
Card hostCard = stAb.getHostCard(); * TODO Write javadoc for this method.
* @param stAb a StaticAbility
StaticEffect se = new StaticEffect(); */
CardList affectedCards = getAffectedCards(stAb); public static void applyContinuousAbility(final StaticAbility stAb) {
ArrayList<Player> affectedPlayers = getAffectedPlayers(stAb); HashMap<String, String> params = stAb.getMapParams();
Card hostCard = stAb.getHostCard();
se.setAffectedCards(affectedCards);
se.setAffectedPlayers(affectedPlayers); StaticEffect se = new StaticEffect();
se.setParams(params); CardList affectedCards = getAffectedCards(stAb);
se.setTimestamp(hostCard.getTimestamp()); ArrayList<Player> affectedPlayers = getAffectedPlayers(stAb);
AllZone.getStaticEffects().addStaticEffect(se);
se.setAffectedCards(affectedCards);
int powerBonus = 0; se.setAffectedPlayers(affectedPlayers);
int toughnessBonus = 0; se.setParams(params);
int setPower = -1; se.setTimestamp(hostCard.getTimestamp());
int setToughness = -1; AllZone.getStaticEffects().addStaticEffect(se);
String addKeywords[] = null;
String addAbilities[] = null; int powerBonus = 0;
String addSVars[] = null; int toughnessBonus = 0;
String addTypes[] = null; int setPower = -1;
String removeTypes[] = null; int setToughness = -1;
String addColors = null; String[] addKeywords = null;
String addTriggers[] = null; String[] addAbilities = null;
boolean removeSuperTypes = false; String[] addSVars = null;
boolean removeCardTypes = false; String[] addTypes = null;
boolean removeSubTypes = false; String[] removeTypes = null;
boolean removeCreatureTypes = false; String addColors = null;
String[] addTriggers = null;
if (params.containsKey("SetPower")) { boolean removeSuperTypes = false;
String setP = params.get("SetPower"); boolean removeCardTypes = false;
setPower = setP.matches("[0-9][0-9]?") ? Integer.parseInt(setP) boolean removeSubTypes = false;
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setP)); boolean removeCreatureTypes = false;
}
if (params.containsKey("SetPower")) {
if (params.containsKey("SetToughness")) { String setP = params.get("SetPower");
String setT = params.get("SetToughness"); setPower = setP.matches("[0-9][0-9]?") ? Integer.parseInt(setP)
setToughness = setT.matches("[0-9][0-9]?") ? Integer.parseInt(setT) : CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setP));
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setT));
}
if (params.containsKey("AddPower")) {
if (params.get("AddPower").equals("X")) {
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
se.setXValue(powerBonus);
}
else if (params.get("AddPower").equals("Y")) {
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
se.setYValue(powerBonus);
}
else powerBonus = Integer.valueOf(params.get("AddPower"));
}
if (params.containsKey("AddToughness")) {
if (params.get("AddToughness").equals("X")) {
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
se.setXValue(toughnessBonus);
}
else if (params.get("AddToughness").equals("Y")) {
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
se.setYValue(toughnessBonus);
}
else toughnessBonus = Integer.valueOf(params.get("AddToughness"));
}
if (params.containsKey("AddKeyword"))
addKeywords = params.get("AddKeyword").split(" & ");
if (params.containsKey("AddAbility")) {
String sVars[] = params.get("AddAbility").split(" & ");
for(int i = 0 ; i < sVars.length ; i++)
sVars[i] = hostCard.getSVar(sVars[i]);
addAbilities = sVars;
}
if (params.containsKey("AddSVar"))
addSVars = params.get("AddSVar").split(" & ");
if (params.containsKey("AddType")) {
addTypes = params.get("AddType").split(" & ");
if(addTypes[0].equals("ChosenType")) {
String chosenType = hostCard.getChosenType();
addTypes[0] = chosenType;
se.setChosenType(chosenType);
}
} }
if (params.containsKey("RemoveType")) { if (params.containsKey("SetToughness")) {
removeTypes = params.get("RemoveType").split(" & "); String setT = params.get("SetToughness");
if(removeTypes[0].equals("ChosenType")) { setToughness = setT.matches("[0-9][0-9]?") ? Integer.parseInt(setT)
String chosenType = hostCard.getChosenType(); : CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setT));
}
if (params.containsKey("AddPower")) {
if (params.get("AddPower").equals("X")) {
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
se.setXValue(powerBonus);
}
else if (params.get("AddPower").equals("Y")) {
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
se.setYValue(powerBonus);
} else {
powerBonus = Integer.valueOf(params.get("AddPower"));
}
}
if (params.containsKey("AddToughness")) {
if (params.get("AddToughness").equals("X")) {
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
se.setXValue(toughnessBonus);
}
else if (params.get("AddToughness").equals("Y")) {
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
se.setYValue(toughnessBonus);
} else {
toughnessBonus = Integer.valueOf(params.get("AddToughness"));
}
}
if (params.containsKey("AddKeyword")) {
addKeywords = params.get("AddKeyword").split(" & ");
}
if (params.containsKey("AddAbility")) {
String[] sVars = params.get("AddAbility").split(" & ");
for (int i = 0; i < sVars.length; i++) {
sVars[i] = hostCard.getSVar(sVars[i]);
}
addAbilities = sVars;
}
if (params.containsKey("AddSVar")) {
addSVars = params.get("AddSVar").split(" & ");
}
if (params.containsKey("AddType")) {
addTypes = params.get("AddType").split(" & ");
if (addTypes[0].equals("ChosenType")) {
String chosenType = hostCard.getChosenType();
addTypes[0] = chosenType;
se.setChosenType(chosenType);
}
}
if (params.containsKey("RemoveType")) {
removeTypes = params.get("RemoveType").split(" & ");
if (removeTypes[0].equals("ChosenType")) {
String chosenType = hostCard.getChosenType();
removeTypes[0] = chosenType; removeTypes[0] = chosenType;
se.setChosenType(chosenType); se.setChosenType(chosenType);
} }
} }
if (params.containsKey("RemoveSuperTypes")) { if (params.containsKey("RemoveSuperTypes")) {
removeSuperTypes = true; removeSuperTypes = true;
} }
if (params.containsKey("RemoveCardTypes")) { if (params.containsKey("RemoveCardTypes")) {
removeCardTypes = true; removeCardTypes = true;
} }
if (params.containsKey("RemoveSubTypes")) { if (params.containsKey("RemoveSubTypes")) {
removeSubTypes = true; removeSubTypes = true;
} }
if (params.containsKey("RemoveCreatureTypes")) { if (params.containsKey("RemoveCreatureTypes")) {
removeCreatureTypes = true; removeCreatureTypes = true;
} }
if (params.containsKey("AddColor")) if (params.containsKey("AddColor")) {
addColors = CardUtil.getShortColorsString(new ArrayList<String>(Arrays.asList(params.get("AddColor").split(" & ")))); addColors = CardUtil.getShortColorsString(
new ArrayList<String>(Arrays.asList(params.get("AddColor").split(" & "))));
if (params.containsKey("SetColor")) { }
addColors = CardUtil.getShortColorsString(new ArrayList<String>(Arrays.asList(params.get("SetColor").split(" & "))));
se.setOverwriteColors(true); if (params.containsKey("SetColor")) {
} addColors = CardUtil.getShortColorsString(
new ArrayList<String>(Arrays.asList(params.get("SetColor").split(" & "))));
if (params.containsKey("AddTrigger")) { se.setOverwriteColors(true);
String sVars[] = params.get("AddTrigger").split(" & "); }
for(int i = 0 ; i < sVars.length ; i++)
sVars[i] = hostCard.getSVar(sVars[i]); if (params.containsKey("AddTrigger")) {
addTriggers = sVars; String[] sVars = params.get("AddTrigger").split(" & ");
} for (int i = 0; i < sVars.length; i++) {
sVars[i] = hostCard.getSVar(sVars[i]);
//modify players }
for (Player p : affectedPlayers) { addTriggers = sVars;
}
//modify players
for (Player p : affectedPlayers) {
// add keywords // add keywords
if (addKeywords != null) if (addKeywords != null) {
for (String keyword : addKeywords) for (String keyword : addKeywords) {
p.addKeyword(keyword); p.addKeyword(keyword);
} }
}
//start modifying the cards }
for (int i = 0; i < affectedCards.size(); i++) {
//start modifying the cards
for (int i = 0; i < affectedCards.size(); i++) {
Card affectedCard = affectedCards.get(i); Card affectedCard = affectedCards.get(i);
// set P/T // set P/T
if(params.containsKey("CharacteristicDefining")) { if (params.containsKey("CharacteristicDefining")) {
if (setPower != -1) if (setPower != -1) {
affectedCard.setBaseAttack(setPower); affectedCard.setBaseAttack(setPower);
if (setToughness != -1) }
affectedCard.setBaseDefense(setToughness); if (setToughness != -1) {
affectedCard.setBaseDefense(setToughness);
}
} }
else //non CharacteristicDefining else //non CharacteristicDefining
if (setPower != -1 || setToughness != -1) if (setPower != -1 || setToughness != -1) {
affectedCard.addNewPT(setPower, setToughness, hostCard.getTimestamp()); affectedCard.addNewPT(setPower, setToughness, hostCard.getTimestamp());
}
// add P/T bonus // add P/T bonus
affectedCard.addSemiPermanentAttackBoost(powerBonus); affectedCard.addSemiPermanentAttackBoost(powerBonus);
affectedCard.addSemiPermanentDefenseBoost(toughnessBonus); affectedCard.addSemiPermanentDefenseBoost(toughnessBonus);
// add keywords // add keywords
if (addKeywords != null) if (addKeywords != null) {
for (String keyword : addKeywords) for (String keyword : addKeywords) {
affectedCard.addExtrinsicKeyword(keyword); affectedCard.addExtrinsicKeyword(keyword);
}
}
// add abilities // add abilities
if (addAbilities != null) if (addAbilities != null) {
for (String abilty : addAbilities) for (String abilty : addAbilities) {
if (abilty.startsWith("AB")) { // grant the ability if (abilty.startsWith("AB")) { // grant the ability
AbilityFactory AF = new AbilityFactory(); AbilityFactory af = new AbilityFactory();
SpellAbility sa = AF.getAbility(abilty, affectedCard); SpellAbility sa = af.getAbility(abilty, affectedCard);
sa.setType("Temporary"); sa.setType("Temporary");
affectedCard.addSpellAbility(sa); affectedCard.addSpellAbility(sa);
} }
}
}
// add SVars // add SVars
if (addSVars != null) if (addSVars != null) {
for (String sVar : addSVars) for (String sVar : addSVars) {
affectedCard.setSVar(sVar, hostCard.getSVar(sVar)); affectedCard.setSVar(sVar, hostCard.getSVar(sVar));
}
}
// add Types // add Types
if (addTypes != null || removeTypes != null) if (addTypes != null || removeTypes != null) {
affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes,
removeCreatureTypes, hostCard.getTimestamp()); removeSubTypes, removeCreatureTypes, hostCard.getTimestamp());
}
// add colors // add colors
if (addColors != null) { if (addColors != null) {
long t = affectedCard.addColor(addColors, affectedCard, !se.isOverwriteColors(), true); long t = affectedCard.addColor(addColors, affectedCard, !se.isOverwriteColors(), true);
se.addTimestamp(affectedCard, t); se.addTimestamp(affectedCard, t);
} }
// add triggers // add triggers
if (addTriggers != null) if (addTriggers != null) {
for (String trigger : addTriggers) { for (String trigger : addTriggers) {
Trigger actualTrigger = TriggerHandler.parseTrigger(trigger,affectedCard, false); Trigger actualTrigger = TriggerHandler.parseTrigger(trigger, affectedCard, false);
actualTrigger.setTemporary(true); actualTrigger.setTemporary(true);
affectedCard.addTrigger(actualTrigger); affectedCard.addTrigger(actualTrigger);
AllZone.getTriggerHandler().registerTrigger(actualTrigger); AllZone.getTriggerHandler().registerTrigger(actualTrigger);
} }
}
// remove triggers
if (params.containsKey("RemoveTriggers") || params.containsKey("RemoveAllAbilities")) { // remove triggers
ArrayList<Trigger> triggers = affectedCard.getTriggers(); if (params.containsKey("RemoveTriggers") || params.containsKey("RemoveAllAbilities")) {
for (Trigger trigger : triggers) { ArrayList<Trigger> triggers = affectedCard.getTriggers();
trigger.setSuppressed(true); for (Trigger trigger : triggers) {
} trigger.setSuppressed(true);
} }
//affectedCard.updateObservers(); }
} //affectedCard.updateObservers();
} }
}
private static ArrayList<Player> getAffectedPlayers(StaticAbility stAb) {
HashMap<String, String> params = stAb.getMapParams(); private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
Card hostCard = stAb.getHostCard(); HashMap<String, String> params = stAb.getMapParams();
Player controller = hostCard.getController(); Card hostCard = stAb.getHostCard();
Player controller = hostCard.getController();
ArrayList<Player> players = new ArrayList<Player>();
ArrayList<Player> players = new ArrayList<Player>();
if(!params.containsKey("Affected")) {
return players; if (!params.containsKey("Affected")) {
} return players;
}
String[] strngs = params.get("Affected").split(",");
String[] strngs = params.get("Affected").split(",");
for (String str : strngs) {
if(str.equals("Player") || str.equals("You")) { for (String str : strngs) {
players.add(controller); if (str.equals("Player") || str.equals("You")) {
} players.add(controller);
}
if(str.equals("Player") || str.equals("Opponent")) {
players.add(controller.getOpponent()); if (str.equals("Player") || str.equals("Opponent")) {
} players.add(controller.getOpponent());
} }
}
return players;
} return players;
}
private static CardList getAffectedCards(StaticAbility stAb) {
HashMap<String, String> params = stAb.getMapParams(); private static CardList getAffectedCards(final StaticAbility stAb) {
Card hostCard = stAb.getHostCard(); HashMap<String, String> params = stAb.getMapParams();
Player controller = hostCard.getController(); Card hostCard = stAb.getHostCard();
Player controller = hostCard.getController();
if(params.containsKey("CharacteristicDefining"))
return new CardList(hostCard); // will always be the card itself if (params.containsKey("CharacteristicDefining")) {
return new CardList(hostCard); // will always be the card itself
// non - CharacteristicDefining }
CardList affectedCards;
String affectedZone = "Battlefield"; // default // non - CharacteristicDefining
CardList affectedCards;
if (params.containsKey("AffectedZone")) String affectedZone = "Battlefield"; // default
affectedZone = params.get("AffectedZone");
if (params.containsKey("AffectedZone")) {
affectedCards = AllZoneUtil.getCardsInZone(affectedZone); affectedZone = params.get("AffectedZone");
}
if (params.containsKey("Affected") && !params.get("Affected").contains(",")) {
if (params.get("Affected").contains("Self")) affectedCards = AllZoneUtil.getCardsInZone(affectedZone);
affectedCards = new CardList(hostCard);
else if (params.get("Affected").contains("EnchantedBy")) if (params.containsKey("Affected") && !params.get("Affected").contains(",")) {
affectedCards = new CardList(hostCard.getEnchantingCard()); if (params.get("Affected").contains("Self")) {
else if (params.get("Affected").contains("EquippedBy")) affectedCards = new CardList(hostCard);
affectedCards = new CardList(hostCard.getEquippingCard()); } else if (params.get("Affected").contains("EnchantedBy")) {
} affectedCards = new CardList(hostCard.getEnchantingCard());
} else if (params.get("Affected").contains("EquippedBy")) {
if (params.containsKey("Affected")) affectedCards = new CardList(hostCard.getEquippingCard());
affectedCards = affectedCards.getValidCards(params.get("Affected").split(","), controller, hostCard); }
}
return affectedCards;
} if (params.containsKey("Affected")) {
affectedCards = affectedCards.getValidCards(
params.get("Affected").split(","), controller, hostCard);
}
return affectedCards;
}
} }