TriggerTypes replaced from strings to enum, new trigger parser based on reflection.

This commit is contained in:
Maxmtg
2012-03-26 07:24:00 +00:00
parent 8e727f5df6
commit 16045d388c
26 changed files with 292 additions and 160 deletions

1
.gitattributes vendored
View File

@@ -11525,6 +11525,7 @@ src/main/java/forge/card/trigger/TriggerTaps.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerTapsForMana.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerTransformed.java -text
src/main/java/forge/card/trigger/TriggerTurnFaceUp.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerType.java -text
src/main/java/forge/card/trigger/TriggerUnequip.java svneol=native#text/plain
src/main/java/forge/card/trigger/TriggerUntaps.java svneol=native#text/plain
src/main/java/forge/card/trigger/package-info.java svneol=native#text/plain

View File

@@ -48,6 +48,7 @@ import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.item.CardDb;
import forge.util.MyRandom;
@@ -265,7 +266,7 @@ public class Card extends GameEntity implements Comparable<Card> {
HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Mode", "Transformed");
runParams.put("Transformer", this);
AllZone.getTriggerHandler().runTrigger("Transformed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Transformed, runParams);
}
return true;
@@ -1197,7 +1198,7 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("Card", this);
runParams.put("CounterType", counterName);
for (int i = 0; i < n; i++) {
AllZone.getTriggerHandler().runTrigger("CounterAdded", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams);
}
this.updateObservers();
@@ -1230,7 +1231,7 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("Card", this);
runParams.put("CounterType", counterName);
for (int i = 0; i < (multiplier * n); i++) {
AllZone.getTriggerHandler().runTrigger("CounterAdded", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams);
}
this.updateObservers();
@@ -1259,7 +1260,7 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("Card", this);
runParams.put("CounterType", counterName);
for (int i = 0; i < n; i++) {
AllZone.getTriggerHandler().runTrigger("CounterRemoved", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.CounterRemoved, runParams);
}
if (counterName.equals(Counters.TIME) && (aux == 0)) {
@@ -3864,7 +3865,7 @@ public class Card extends GameEntity implements Comparable<Card> {
final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Equipment", this);
runParams.put("Card", c);
AllZone.getTriggerHandler().runTrigger("Unequip", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Unequip, runParams);
}
/**
@@ -4917,7 +4918,7 @@ public class Card extends GameEntity implements Comparable<Card> {
// Run triggers
final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Card", this);
AllZone.getTriggerHandler().runTrigger("Taps", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Taps, runParams);
}
this.setTapped(true);
}
@@ -4932,7 +4933,7 @@ public class Card extends GameEntity implements Comparable<Card> {
// Run triggers
final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Card", this);
AllZone.getTriggerHandler().runTrigger("Untaps", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Untaps, runParams);
}
@@ -5973,9 +5974,9 @@ public class Card extends GameEntity implements Comparable<Card> {
// Suppressed Exiling is as close as we can get to
// "ceasing to exist"
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
Singletons.getModel().getGameAction().exile(this);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
return true;
}
@@ -8025,7 +8026,7 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("DamageTarget", this);
runParams.put("DamageAmount", damageToAdd);
runParams.put("IsCombatDamage", isCombat);
AllZone.getTriggerHandler().runTrigger("DamageDone", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams);
if (this.isPlaneswalker()) {
this.subtractCounter(Counters.LOYALTY, damageToAdd);

View File

@@ -35,6 +35,7 @@ import forge.card.EditionInfo;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityList;
import forge.card.trigger.TriggerType;
import forge.control.input.InputPayManaCostUtil;
import forge.item.CardPrinted;
import forge.properties.ForgeProps;
@@ -912,14 +913,14 @@ public final class CardUtil {
return c;
}
final CardCharactersticName state = c.getCurState();
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
if (c.isInAlternateState()) {
c.setState(CardCharactersticName.Original);
}
final Card res = AllZone.getCardFactory().copyCard(c);
c.setState(state);
res.setState(state);
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
res.setControllerObjects(c.getControllerObjects());
res.addTempAttackBoost(c.getTempAttackBoost());
res.addSemiPermanentAttackBoost(c.getSemiPermanentAttackBoost());

View File

@@ -29,6 +29,7 @@ import java.util.Set;
import java.util.TreeMap;
import forge.Constant.Zone;
import forge.card.trigger.TriggerType;
/**
* <p>
@@ -667,7 +668,7 @@ public class Combat {
// Run Unblocked Trigger
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Attacker", attacker);
AllZone.getTriggerHandler().runTrigger("AttackerUnblocked", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams);
}
}

View File

@@ -33,6 +33,7 @@ import forge.card.spellability.Ability;
import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.control.input.InputPayManaCostAbility;
import forge.gui.GuiUtils;
@@ -2588,7 +2589,7 @@ public class CombatUtil {
otherAttackers.remove(c);
runParams.put("OtherAttackers", otherAttackers);
runParams.put("Attacked", AllZone.getCombat().getDefenderByAttacker(c));
AllZone.getTriggerHandler().runTrigger("Attacks", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Attacks, runParams);
// Annihilator:
if (!c.getDamageHistory().getCreatureAttackedThisCombat()) {
@@ -2722,7 +2723,7 @@ public class CombatUtil {
// Run triggers
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", c);
AllZone.getTriggerHandler().runTrigger("AttackerUnblocked", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams);
}
/**
@@ -2763,12 +2764,12 @@ public class CombatUtil {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Attacker", a);
runParams.put("Blocker", b);
AllZone.getTriggerHandler().runTrigger("Blocks", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Blocks, runParams);
if (!a.getDamageHistory().getCreatureGotBlockedThisCombat()) {
final int blockers = AllZone.getCombat().getBlockers(a).size();
runParams.put("NumBlockers", blockers);
AllZone.getTriggerHandler().runTrigger("AttackerBlocked", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams);
// Bushido
for (final Ability ab : CardFactoryUtil.getBushidoEffects(a)) {

View File

@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Observable;
import forge.Constant.Zone;
import forge.card.trigger.TriggerType;
/**
* <p>
@@ -104,9 +105,9 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl
c.setTurnInZone(Singletons.getModel().getGameState().getPhaseHandler().getTurn());
if (!this.is(Zone.Battlefield) && c.isTapped()) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
c.untap();
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
}
this.getCardList().add(c);
@@ -149,9 +150,9 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl
}
if (!this.is(Zone.Battlefield) && c.isTapped()) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
c.untap();
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
}
this.getCardList().add(index, c);

View File

@@ -43,6 +43,7 @@ import forge.card.spellability.Target;
import forge.card.spellability.TargetSelection;
import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.control.input.InputPayManaCost;
import forge.control.input.InputPayManaCostAbility;
import forge.control.input.InputPayManaCostUtil;
@@ -132,12 +133,12 @@ public class GameAction {
lastKnownInfo = c;
copied = c;
} else {
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
if (c.isCloned()) {
c.switchStates(CardCharactersticName.Cloner, CardCharactersticName.Original);
c.setState(CardCharactersticName.Original);
}
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
lastKnownInfo = CardUtil.getLKICopy(c);
copied = AllZone.getCardFactory().copyCard(c);
@@ -156,7 +157,7 @@ public class GameAction {
}
if (suppress) {
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
}
zone.add(copied);
@@ -187,11 +188,11 @@ public class GameAction {
runParams.put("Origin", null);
}
runParams.put("Destination", zone.getZoneType().name());
AllZone.getTriggerHandler().runTrigger("ChangesZone", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams);
// AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll();
if (suppress) {
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
// remove all counters from the card if destination is not the
@@ -204,9 +205,9 @@ public class GameAction {
.is(Constant.Zone.Library))) {
copied.clearCounters();
}
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
copied.setState(CardCharactersticName.Original);
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
}
copied.setTimestamp(AllZone.getNextTimestamp());
@@ -333,7 +334,7 @@ public class GameAction {
return;
}
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
((PlayerZoneComesIntoPlay) AllZone.getHumanPlayer().getZone(Zone.Battlefield)).setTriggers(false);
((PlayerZoneComesIntoPlay) AllZone.getComputerPlayer().getZone(Zone.Battlefield)).setTriggers(false);
@@ -351,9 +352,9 @@ public class GameAction {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", c);
AllZone.getTriggerHandler().runTrigger("ChangesController", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
((PlayerZoneComesIntoPlay) AllZone.getHumanPlayer().getZone(Zone.Battlefield)).setTriggers(true);
((PlayerZoneComesIntoPlay) AllZone.getComputerPlayer().getZone(Zone.Battlefield)).setTriggers(true);
}
@@ -590,9 +591,9 @@ public class GameAction {
}
if (c.isInAlternateState()) {
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
c.setState(CardCharactersticName.Original);
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
}
if ((p != null) && p.is(Constant.Zone.Battlefield)) {
@@ -615,7 +616,7 @@ public class GameAction {
runParams.put("Origin", null);
}
runParams.put("Destination", Constant.Zone.Library);
AllZone.getTriggerHandler().runTrigger("ChangesZone", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams);
return c;
}
@@ -886,7 +887,7 @@ public class GameAction {
this.checkStaticAbilities();
final HashMap<String, Object> runParams = new HashMap<String, Object>();
AllZone.getTriggerHandler().runTrigger("Always", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Always, runParams);
final CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield);
Card c;
@@ -1099,7 +1100,7 @@ public class GameAction {
// Run triggers
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", c);
AllZone.getTriggerHandler().runTrigger("Sacrificed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Sacrificed, runParams);
return true;
}
@@ -1791,11 +1792,11 @@ public class GameAction {
// AND that you can't use mana tapabilities of convoked
// creatures
// to pay the convoked cost.
AllZone.getTriggerHandler().suppressMode("Taps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Taps);
for (final Card c : sa.getTappedForConvoke()) {
c.tap();
}
AllZone.getTriggerHandler().clearSuppression("Taps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Taps);
manaCost = newCost;
}

View File

@@ -41,6 +41,7 @@ import arcane.ui.util.Animation;
import forge.Constant.Zone;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.AbilityMana;
import forge.card.trigger.TriggerType;
import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.gui.game.CardPanel;
@@ -1351,7 +1352,7 @@ public final class GuiDisplayUtil {
AllZone.getComputerPlayer());
}
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
AllZone.getCombat().reset();
for (final Card c : humanDevSetup) {
AllZone.getHumanPlayer().getZone(Zone.Hand).add(c);
@@ -1393,7 +1394,7 @@ public final class GuiDisplayUtil {
AllZone.getComputerPlayer().getZone(Zone.Exile).setCards(computerDevExileSetup);
}
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
if (setComputerLife > 0) {
AllZone.getComputerPlayer().setLife(setComputerLife, null);

View File

@@ -41,6 +41,7 @@ import forge.card.spellability.Target;
import forge.card.spellability.TargetChoices;
import forge.card.spellability.TargetSelection;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.control.input.InputPayManaCostAbility;
import forge.gui.GuiUtils;
@@ -683,23 +684,23 @@ public class MagicStack extends MyObservable {
runParams.put("Player", sp.getSourceCard().getController());
runParams.put("Activator", sp.getActivatingPlayer());
runParams.put("CastSA", sp);
AllZone.getTriggerHandler().runTrigger("SpellAbilityCast", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.SpellAbilityCast, runParams);
// Run SpellCast triggers
if (sp.isSpell()) {
AllZone.getTriggerHandler().runTrigger("SpellCast", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.SpellCast, runParams);
}
// Run AbilityCast triggers
if (sp.isAbility() && !sp.isTrigger()) {
AllZone.getTriggerHandler().runTrigger("AbilityCast", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.AbilityCast, runParams);
}
// Run Cycled triggers
if (sp.isCycling()) {
runParams.clear();
runParams.put("Card", sp.getSourceCard());
AllZone.getTriggerHandler().runTrigger("Cycled", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Cycled, runParams);
}
// Run BecomesTarget triggers
@@ -711,7 +712,7 @@ public class MagicStack extends MyObservable {
for (final Object tgt : tc.getTargets()) {
runParams.put("Target", tgt);
AllZone.getTriggerHandler().runTrigger("BecomesTarget", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams);
}
}
}
@@ -722,17 +723,17 @@ public class MagicStack extends MyObservable {
else if (sp.getTargetCard() != null) {
runParams.put("Target", sp.getTargetCard());
AllZone.getTriggerHandler().runTrigger("BecomesTarget", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams);
} else if ((sp.getTargetList() != null) && (sp.getTargetList().size() > 0)) {
for (final Card ctgt : sp.getTargetList()) {
runParams.put("Target", ctgt);
AllZone.getTriggerHandler().runTrigger("BecomesTarget", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams);
}
} else if (sp.getTargetPlayer() != null) {
runParams.put("Target", sp.getTargetPlayer());
AllZone.getTriggerHandler().runTrigger("BecomesTarget", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams);
}
}

View File

@@ -24,6 +24,7 @@ import java.util.Stack;
import com.esotericsoftware.minlog.Log;
import forge.Constant.Zone;
import forge.card.trigger.TriggerType;
/**
* <p>
@@ -471,7 +472,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Phase", phase);
runParams.put("Player", turn);
AllZone.getTriggerHandler().runTrigger("Phase", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Phase, runParams);
}

View File

@@ -20,6 +20,7 @@ package forge;
import java.util.HashMap;
import forge.Constant.Zone;
import forge.card.trigger.TriggerType;
import forge.control.ControlMatchUI;
import forge.view.match.ViewField.PhaseLabel;
@@ -305,7 +306,7 @@ public class PhaseUtil {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Attackers", list);
runParams.put("AttackingPlayer", AllZone.getCombat().getAttackingPlayer());
AllZone.getTriggerHandler().runTrigger("AttackersDeclared", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams);
for (final Card c : list) {
CombatUtil.checkDeclareAttackers(c);

View File

@@ -34,6 +34,7 @@ import forge.card.cardfactory.CardFactoryUtil;
import forge.card.mana.ManaPool;
import forge.card.spellability.SpellAbility;
import forge.card.staticability.StaticAbility;
import forge.card.trigger.TriggerType;
import forge.game.GameLossReason;
import forge.gui.GuiUtils;
import forge.util.MyRandom;
@@ -349,7 +350,7 @@ public abstract class Player extends GameEntity {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Player", this);
runParams.put("LifeAmount", lifeGain);
AllZone.getTriggerHandler().runTrigger("LifeGained", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams);
} else {
System.out.println("Player - trying to gain negative or 0 life");
}
@@ -406,7 +407,7 @@ public abstract class Player extends GameEntity {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Player", this);
runParams.put("LifeAmount", toLose);
AllZone.getTriggerHandler().runTrigger("LifeLost", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.LifeLost, runParams);
return newLifeSet;
}
@@ -548,7 +549,7 @@ public abstract class Player extends GameEntity {
runParams.put("DamageTarget", this);
runParams.put("DamageAmount", damageToDo);
runParams.put("IsCombatDamage", isCombat);
AllZone.getTriggerHandler().runTrigger("DamageDone", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams);
}
}
@@ -1288,7 +1289,7 @@ public abstract class Player extends GameEntity {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", c);
runParams.put("Number", this.numDrawnThisTurn);
AllZone.getTriggerHandler().runTrigger("Drawn", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Drawn, runParams);
}
// lose:
else if (!Constant.Runtime.DEV_MODE[0] || Constant.Runtime.MILL[0]) {
@@ -1554,7 +1555,7 @@ public abstract class Player extends GameEntity {
runParams.put("Player", this);
runParams.put("Card", c);
runParams.put("Cause", cause);
AllZone.getTriggerHandler().runTrigger("Discarded", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Discarded, runParams);
} // end doDiscard
@@ -1741,7 +1742,7 @@ public abstract class Player extends GameEntity {
// Run triggers
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Player", this);
AllZone.getTriggerHandler().runTrigger("Shuffled", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Shuffled, runParams);
} // shuffle
// //////////////////////////////
@@ -1804,7 +1805,7 @@ public abstract class Player extends GameEntity {
// Run triggers
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", land);
AllZone.getTriggerHandler().runTrigger("LandPlayed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams);
}
AllZone.getStack().unfreezeStack();

View File

@@ -25,6 +25,7 @@ import forge.card.spellability.Ability;
import forge.card.spellability.AbilityMana;
import forge.card.spellability.AbilityStatic;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.gui.GuiUtils;
@@ -2240,9 +2241,9 @@ public class Upkeep extends Phase implements java.io.Serializable {
// Doppelganger/whatever the source is
newCopy.setImageFilename(c.getImageFilename());
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
newCopy.setState(newTarget[0].getCurState());
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
CardFactoryUtil.copyCharacteristics(newCopy, c);
c.addColor("U");

View File

@@ -35,6 +35,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.trigger.TriggerType;
import forge.gui.GuiUtils;
/**
@@ -222,7 +223,7 @@ public final class AbilityFactoryClash {
runParams.put("Won", "False");
}
AllZone.getTriggerHandler().runTrigger("Clashed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Clashed, runParams);
}
// *************************************************************************

View File

@@ -42,6 +42,7 @@ import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.trigger.TriggerType;
import forge.gui.GuiUtils;
import forge.util.MyRandom;
@@ -364,7 +365,7 @@ public final class AbilityFactoryCopy {
for (final Card c : tgtCards) {
if ((tgt == null) || c.canBeTargetedBy(sa)) {
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
boolean wasInAlt = false;
if (c.isInAlternateState()) {
wasInAlt = true;
@@ -439,7 +440,7 @@ public final class AbilityFactoryCopy {
sa.getSourceCard().addClone(copy);
crds[i] = copy;
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
}
// have to do this since getTargetCard() might change

View File

@@ -42,6 +42,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.util.MyRandom;
/**
@@ -510,9 +511,9 @@ public class AbilityFactoryEffect {
}
// TODO: Add targeting to the effect so it knows who it's dealing with
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
Singletons.getModel().getGameAction().moveToPlay(eff);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
} // end class AbilityFactoryEffect

View File

@@ -53,6 +53,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.control.input.InputPayManaCost;
import forge.game.GameLossReason;
@@ -183,7 +184,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
@Override
public final Card copyCard(final Card in) {
final CardCharactersticName curState = in.getCurState();
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
if (in.isInAlternateState()) {
in.setState(CardCharactersticName.Original);
}
@@ -201,7 +202,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
in.setState(curState);
out.setState(curState);
}
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
// I'm not sure if we really should be copying enchant/equip stuff over.
out.setEquipping(in.getEquipping());
@@ -1418,7 +1419,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
if (copyTarget[0] != null) {
Card cloned;
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
// TODO: transform back and forth
cloned = getCard2(copyTarget[0], card.getOwner());
@@ -1452,7 +1453,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
card.setFlip(false);
}
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
}
Singletons.getModel().getGameAction().moveToPlay(card);

View File

@@ -53,6 +53,7 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.control.input.InputPayManaCost;
import forge.gui.GuiUtils;
@@ -1818,7 +1819,7 @@ public class CardFactoryCreatures {
if (copyTarget[0] != null) {
Card cloned;
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
if (copyTarget[0].isToken()) {
cloned = CardFactoryUtil.copyStats(copyTarget[0]);
@@ -1880,7 +1881,7 @@ public class CardFactoryCreatures {
card.setFlip(false);
}
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
}

View File

@@ -63,6 +63,7 @@ import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.control.input.InputPayManaCost;
import forge.control.input.InputPayManaCostUtil;
@@ -982,7 +983,7 @@ public class CardFactoryUtil {
// Run triggers
final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Card", sourceCard);
AllZone.getTriggerHandler().runTrigger("TurnFaceUp", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.TurnFaceUp, runParams);
}
@Override
@@ -1835,7 +1836,7 @@ public class CardFactoryUtil {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", spell.getSourceCard());
runParams.put("Championed", card);
AllZone.getTriggerHandler().runTrigger("Championed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Championed, runParams);
}
}
} // selectCard()
@@ -4104,7 +4105,7 @@ public class CardFactoryUtil {
c.setDoubleFaced(sim.isDoubleFaced());
c.setCurSetCode(sim.getCurSetCode());
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
final CardCharactersticName origState = sim.getCurState();
for (final CardCharactersticName state : sim.getStates()) {
c.addAlternateState(state);
@@ -4116,7 +4117,7 @@ public class CardFactoryUtil {
sim.setState(origState);
c.setState(origState);
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
return c;
} // copyStats()
@@ -4819,9 +4820,9 @@ public class CardFactoryUtil {
eff.addTrigger(copyTrigger);
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
Singletons.getModel().getGameAction().moveToPlay(eff);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
if (card.getController().isHuman()) {
Singletons.getModel().getGameAction().playSpellAbilityNoStack(origSA, false);

View File

@@ -31,6 +31,7 @@ import forge.Singletons;
import forge.card.abilityfactory.AbilityFactory;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
import forge.control.input.InputMana;
import forge.control.input.InputPayManaCostUtil;
@@ -439,12 +440,12 @@ public class CostMana extends CostPart {
// being tapped for convoke)
if (sa.getTappedForConvoke() != null) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
for (final Card c : sa.getTappedForConvoke()) {
c.untap();
c.tap();
}
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
sa.clearTappedForConvoke();
}
@@ -455,11 +456,11 @@ public class CostMana extends CostPart {
// If we're paying for a spell with convoke, untap all creatures
// used for it.
if (sa.getTappedForConvoke() != null) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
for (final Card c : sa.getTappedForConvoke()) {
c.untap();
}
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
sa.clearTappedForConvoke();
}

View File

@@ -25,6 +25,7 @@ import forge.Card;
import forge.Player;
import forge.card.cost.Cost;
import forge.card.mana.ManaPool;
import forge.card.trigger.TriggerType;
import forge.control.input.InputPayManaCostUtil;
/**
@@ -185,7 +186,7 @@ public abstract class AbilityMana extends AbilityActivated implements java.io.Se
runParams.put("Player", player);
runParams.put("AbilityMana", this);
runParams.put("Produced", produced);
AllZone.getTriggerHandler().runTrigger("TapsForMana", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.TapsForMana, runParams);
} // end produceMana(String)

View File

@@ -38,6 +38,7 @@ import forge.card.abilityfactory.AbilityFactory;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType;
import forge.control.input.Input;
/**
@@ -112,7 +113,7 @@ public class SpellPermanent extends Spell {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", source);
runParams.put("Championed", source.getChampionedCard());
AllZone.getTriggerHandler().runTrigger("Championed", runParams);
AllZone.getTriggerHandler().runTrigger(TriggerType.Championed, runParams);
} else {
Singletons.getModel().getGameAction().sacrifice(this.getSourceCard());
}

View File

@@ -54,7 +54,7 @@ import forge.control.input.Input;
*/
public class TriggerHandler {
private final ArrayList<String> suppressedModes = new ArrayList<String>();
private final ArrayList<TriggerType> suppressedModes = new ArrayList<TriggerType>();
private final ArrayList<Trigger> delayedTriggers = new ArrayList<Trigger>();
@@ -129,7 +129,7 @@ public class TriggerHandler {
* @param mode
* a {@link java.lang.String} object.
*/
public final void suppressMode(final String mode) {
public final void suppressMode(final TriggerType mode) {
this.suppressedModes.add(mode);
}
@@ -141,7 +141,7 @@ public class TriggerHandler {
* @param mode
* a {@link java.lang.String} object.
*/
public final void clearSuppression(final String mode) {
public final void clearSuppression(final TriggerType mode) {
this.suppressedModes.remove(mode);
}
@@ -201,72 +201,75 @@ public class TriggerHandler {
public static Trigger parseTrigger(final HashMap<String, String> mapParams, final Card host, final boolean intrinsic) {
Trigger ret = null;
final String mode = mapParams.get("Mode");
if (mode.equals("AbilityCast")) {
ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
} else if (mode.equals("Always")) {
ret = new TriggerAlways(mapParams, host, intrinsic);
} else if (mode.equals("AttackerBlocked")) {
ret = new TriggerAttackerBlocked(mapParams, host, intrinsic);
} else if (mode.equals("AttackersDeclared")) {
ret = new TriggerAttackersDeclared(mapParams, host, intrinsic);
} else if (mode.equals("AttackerUnblocked")) {
ret = new TriggerAttackerUnblocked(mapParams, host, intrinsic);
} else if (mode.equals("Attacks")) {
ret = new TriggerAttacks(mapParams, host, intrinsic);
} else if (mode.equals("BecomesTarget")) {
ret = new TriggerBecomesTarget(mapParams, host, intrinsic);
} else if (mode.equals("Blocks")) {
ret = new TriggerBlocks(mapParams, host, intrinsic);
} else if (mode.equals("Championed")) {
ret = new TriggerChampioned(mapParams, host, intrinsic);
} else if (mode.equals("ChangesController")) {
ret = new TriggerChangesController(mapParams, host, intrinsic);
} else if (mode.equals("ChangesZone")) {
ret = new TriggerChangesZone(mapParams, host, intrinsic);
} else if (mode.equals("Clashed")) {
ret = new TriggerClashed(mapParams, host, intrinsic);
} else if (mode.equals("CounterAdded")) {
ret = new TriggerCounterAdded(mapParams, host, intrinsic);
} else if (mode.equals("CounterRemoved")) {
ret = new TriggerCounterRemoved(mapParams, host, intrinsic);
} else if (mode.equals("Cycled")) {
ret = new TriggerCycled(mapParams, host, intrinsic);
} else if (mode.equals("DamageDone")) {
ret = new TriggerDamageDone(mapParams, host, intrinsic);
} else if (mode.equals("Discarded")) {
ret = new TriggerDiscarded(mapParams, host, intrinsic);
} else if (mode.equals("Drawn")) {
ret = new TriggerDrawn(mapParams, host, intrinsic);
} else if (mode.equals("LandPlayed")) {
ret = new TriggerLandPlayed(mapParams, host, intrinsic);
} else if (mode.equals("LifeGained")) {
ret = new TriggerLifeGained(mapParams, host, intrinsic);
} else if (mode.equals("LifeLost")) {
ret = new TriggerLifeLost(mapParams, host, intrinsic);
} else if (mode.equals("Phase")) {
ret = new TriggerPhase(mapParams, host, intrinsic);
} else if (mode.equals("Sacrificed")) {
ret = new TriggerSacrificed(mapParams, host, intrinsic);
} else if (mode.equals("Shuffled")) {
ret = new TriggerShuffled(mapParams, host, intrinsic);
} else if (mode.equals("SpellAbilityCast")) {
ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
} else if (mode.equals("SpellCast")) {
ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
} else if (mode.equals("Taps")) {
ret = new TriggerTaps(mapParams, host, intrinsic);
} else if (mode.equals("TapsForMana")) {
ret = new TriggerTapsForMana(mapParams, host, intrinsic);
} else if (mode.equals("Transformed")) {
ret = new TriggerTransformed(mapParams, host, intrinsic);
} else if (mode.equals("TurnFaceUp")) {
ret = new TriggerTurnFaceUp(mapParams, host, intrinsic);
} else if (mode.equals("Unequip")) {
ret = new TriggerUnequip(mapParams, host, intrinsic);
} else if (mode.equals("Untaps")) {
ret = new TriggerUntaps(mapParams, host, intrinsic);
}
// final String mode = mapParams.get("Mode");
final TriggerType type = TriggerType.smartValueOf(mapParams.get("Mode"));
ret = type.createTrigger(mapParams, host, intrinsic);
//
// if (mode.equals("AbilityCast")) {
// ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
// } else if (mode.equals("Always")) {
// ret = new TriggerAlways(mapParams, host, intrinsic);
// } else if (mode.equals("AttackerBlocked")) {
// ret = new TriggerAttackerBlocked(mapParams, host, intrinsic);
// } else if (mode.equals("AttackersDeclared")) {
// ret = new TriggerAttackersDeclared(mapParams, host, intrinsic);
// } else if (mode.equals("AttackerUnblocked")) {
// ret = new TriggerAttackerUnblocked(mapParams, host, intrinsic);
// } else if (mode.equals("Attacks")) {
// ret = new TriggerAttacks(mapParams, host, intrinsic);
// } else if (mode.equals("BecomesTarget")) {
// ret = new TriggerBecomesTarget(mapParams, host, intrinsic);
// } else if (mode.equals("Blocks")) {
// ret = new TriggerBlocks(mapParams, host, intrinsic);
// } else if (mode.equals("Championed")) {
// ret = new TriggerChampioned(mapParams, host, intrinsic);
// } else if (mode.equals("ChangesController")) {
// ret = new TriggerChangesController(mapParams, host, intrinsic);
// } else if (mode.equals("ChangesZone")) {
// ret = new TriggerChangesZone(mapParams, host, intrinsic);
// } else if (mode.equals("Clashed")) {
// ret = new TriggerClashed(mapParams, host, intrinsic);
// } else if (mode.equals("CounterAdded")) {
// ret = new TriggerCounterAdded(mapParams, host, intrinsic);
// } else if (mode.equals("CounterRemoved")) {
// ret = new TriggerCounterRemoved(mapParams, host, intrinsic);
// } else if (mode.equals("Cycled")) {
// ret = new TriggerCycled(mapParams, host, intrinsic);
// } else if (mode.equals("DamageDone")) {
// ret = new TriggerDamageDone(mapParams, host, intrinsic);
// } else if (mode.equals("Discarded")) {
// ret = new TriggerDiscarded(mapParams, host, intrinsic);
// } else if (mode.equals("Drawn")) {
// ret = new TriggerDrawn(mapParams, host, intrinsic);
// } else if (mode.equals("LandPlayed")) {
// ret = new TriggerLandPlayed(mapParams, host, intrinsic);
// } else if (mode.equals("LifeGained")) {
// ret = new TriggerLifeGained(mapParams, host, intrinsic);
// } else if (mode.equals("LifeLost")) {
// ret = new TriggerLifeLost(mapParams, host, intrinsic);
// } else if (mode.equals("Phase")) {
// ret = new TriggerPhase(mapParams, host, intrinsic);
// } else if (mode.equals("Sacrificed")) {
// ret = new TriggerSacrificed(mapParams, host, intrinsic);
// } else if (mode.equals("Shuffled")) {
// ret = new TriggerShuffled(mapParams, host, intrinsic);
// } else if (mode.equals("SpellAbilityCast")) {
// ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
// } else if (mode.equals("SpellCast")) {
// ret = new TriggerSpellAbilityCast(mapParams, host, intrinsic);
// } else if (mode.equals("Taps")) {
// ret = new TriggerTaps(mapParams, host, intrinsic);
// } else if (mode.equals("TapsForMana")) {
// ret = new TriggerTapsForMana(mapParams, host, intrinsic);
// } else if (mode.equals("Transformed")) {
// ret = new TriggerTransformed(mapParams, host, intrinsic);
// } else if (mode.equals("TurnFaceUp")) {
// ret = new TriggerTurnFaceUp(mapParams, host, intrinsic);
// } else if (mode.equals("Unequip")) {
// ret = new TriggerUnequip(mapParams, host, intrinsic);
// } else if (mode.equals("Untaps")) {
// ret = new TriggerUntaps(mapParams, host, intrinsic);
// }
return ret;
}
@@ -322,7 +325,7 @@ public class TriggerHandler {
* @param runParams
* a {@link java.util.Map} object.
*/
public final void runTrigger(final String mode, final Map<String, Object> runParams) {
public final void runTrigger(final TriggerType mode, final Map<String, Object> runParams) {
if (this.suppressedModes.contains(mode)) {
return;
}
@@ -413,10 +416,10 @@ public class TriggerHandler {
* a {@link java.util.HashMap} object.
* @return a boolean.
*/
private boolean runSingleTrigger(final Trigger regtrig, final String mode, final Map<String, Object> runParams) {
private boolean runSingleTrigger(final Trigger regtrig, final TriggerType mode, final Map<String, Object> runParams) {
final Map<String, String> params = regtrig.getMapParams();
if (!params.get("Mode").equals(mode)) {
if (!params.get("Mode").equals(mode.toString())) {
return false; // Not the right mode.
}
if (!regtrig.zonesCheck()) {

View File

@@ -0,0 +1,105 @@
package forge.card.trigger;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import forge.Card;
/**
* TODO: Write javadoc for this type.
*
*/
public enum TriggerType {
Transformed(TriggerTransformed.class),
Tapped(TriggerTaps.class),
Untaps(TriggerUntaps.class),
Taps(TriggerTaps.class),
ChangesZone(TriggerChangesZone.class),
Clashed(TriggerClashed.class),
TapsForMana(TriggerTapsForMana.class),
CounterAdded(TriggerCounterAdded.class),
CounterRemoved(TriggerCounterRemoved.class),
Unequip(TriggerUnequip.class),
DamageDone(TriggerDamageDone.class),
Championed(TriggerChampioned.class),
TurnFaceUp(TriggerTurnFaceUp.class),
Attacks(TriggerAttacks.class),
AttackerBlocked(TriggerAttackerBlocked.class),
Blocks(TriggerBlocks.class),
AttackerUnblocked(TriggerAttackerUnblocked.class),
ChangesController(TriggerChangesController.class),
Always(TriggerAlways.class),
Sacrificed(TriggerSacrificed.class),
SpellAbilityCast(TriggerSpellAbilityCast.class),
SpellCast(TriggerSpellAbilityCast.class),
AbilityCast(TriggerSpellAbilityCast.class),
Cycled(TriggerCycled.class),
BecomesTarget(TriggerBecomesTarget.class),
Phase(TriggerPhase.class),
AttackersDeclared(TriggerAttackersDeclared.class),
LifeGained(TriggerLifeGained.class),
LifeLost(TriggerLifeLost.class),
Drawn(TriggerDrawn.class),
Discarded(TriggerDiscarded.class),
Shuffled(TriggerShuffled.class),
LandPlayed(TriggerLandPlayed.class);
private final Class<? extends Trigger> classTrigger;
private TriggerType(Class<? extends Trigger> clasz) {
classTrigger = clasz;
}
/**
* TODO: Write javadoc for this method.
* @param string
* @return
*/
public static TriggerType smartValueOf(String value) {
final String valToCompate = value.trim();
for (final TriggerType v : TriggerType.values()) {
if (v.name().compareToIgnoreCase(valToCompate) == 0) {
return v;
}
}
throw new RuntimeException("Element " + value + " not found in TriggerType enum" );
}
/**
* TODO: Write javadoc for this method.
* @param mapParams
* @param host
* @param intrinsic
* @return
*/
public Trigger createTrigger(HashMap<String, String> mapParams, Card host, boolean intrinsic) {
@SuppressWarnings("unchecked")
Constructor<? extends Trigger>[] cc = (Constructor<? extends Trigger>[]) classTrigger.getDeclaredConstructors();
for (Constructor<? extends Trigger> c : cc) {
Class<?>[] pp = c.getParameterTypes();
if ( pp[0] == HashMap.class ) {
try {
return c.newInstance(mapParams, host, intrinsic);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
e.printStackTrace();
}
}
}
throw new RuntimeException("No constructor found that would take Map as 1st parameter in class " + classTrigger.getName());
}
}

View File

@@ -27,6 +27,7 @@ import forge.PlayerZone;
import forge.Singletons;
import forge.card.mana.ManaCost;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
//pays the cost of a card played from the player's hand
//the card is removed from the players hand if the cost is paid
@@ -241,12 +242,12 @@ public class InputPayManaCost extends InputMana {
// tapped for convoke)
if (this.spell.getTappedForConvoke() != null) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
for (final Card c : this.spell.getTappedForConvoke()) {
c.untap();
c.tap();
}
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
this.spell.clearTappedForConvoke();
}
}
@@ -257,11 +258,11 @@ public class InputPayManaCost extends InputMana {
public final void selectButtonCancel() {
// If this is a spell with convoke, untap all creatures used for it.
if (this.spell.getTappedForConvoke() != null) {
AllZone.getTriggerHandler().suppressMode("Untaps");
AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps);
for (final Card c : this.spell.getTappedForConvoke()) {
c.untap();
}
AllZone.getTriggerHandler().clearSuppression("Untaps");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps);
this.spell.clearTappedForConvoke();
}

View File

@@ -19,6 +19,7 @@ import forge.GameAction;
import forge.PhaseHandler;
import forge.Player;
import forge.Singletons;
import forge.card.trigger.TriggerType;
import forge.control.FControl;
import forge.control.input.InputMulligan;
import forge.deck.Deck;
@@ -121,7 +122,7 @@ public class GameNew {
final ArrayList<String> hAnteRemoved = new ArrayList<String>();
final ArrayList<String> cAnteRemoved = new ArrayList<String>();
AllZone.getTriggerHandler().suppressMode("Transformed");
AllZone.getTriggerHandler().suppressMode(TriggerType.Transformed);
for (final Entry<CardPrinted, Integer> stackOfCards : humanDeck.getMain()) {
final CardPrinted cardPrinted = stackOfCards.getKey();
for (int i = 0; i < stackOfCards.getValue(); i++) {
@@ -175,7 +176,7 @@ public class GameNew {
}
}
AllZone.getTriggerHandler().clearSuppression("Transformed");
AllZone.getTriggerHandler().clearSuppression(TriggerType.Transformed);
if (rAICards.size() > 0) {
final StringBuilder sb = new StringBuilder(
"AI deck contains the following cards that it can't play or may be buggy:\n");