mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
TriggerTypes replaced from strings to enum, new trigger parser based on reflection.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
// *************************************************************************
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
105
src/main/java/forge/card/trigger/TriggerType.java
Normal file
105
src/main/java/forge/card/trigger/TriggerType.java
Normal 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());
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user