replace direct access to choiceResults with MagicEvent method
parent
b5a444f073
commit
8faba795dc
|
@ -20,7 +20,7 @@ public class MagicCopyCardOnStackAction extends MagicAction {
|
|||
final MagicCardOnStack copyCardOnStack=cardOnStack.copyCardOnStack(player);
|
||||
game.getStack().addToTop(copyCardOnStack);
|
||||
if (copyCardOnStack.getEvent().getTargetChoice().isValid()) {
|
||||
copyCardOnStack.getChoiceResults()[0]=null;
|
||||
copyCardOnStack.getEvent().clearTargetChoice(cardOnStack.getChoiceResults());
|
||||
game.addEvent(new MagicStackChangeTargetsEvent(copyCardOnStack));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,11 @@ public class MagicBuybackChoice extends MagicChoice {
|
|||
MagicTargetChoice.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTargetChoiceResultIndex() {
|
||||
return (otherChoice instanceof MagicTargetChoice) ? 0 : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getManaChoiceResultIndex() {
|
||||
return 2;
|
||||
|
|
|
@ -61,6 +61,10 @@ public abstract class MagicChoice {
|
|||
return MagicTargetChoice.NONE;
|
||||
}
|
||||
|
||||
public int getTargetChoiceResultIndex() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int getManaChoiceResultIndex() {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -51,6 +51,11 @@ public class MagicKickerChoice extends MagicChoice {
|
|||
return (otherChoice instanceof MagicTargetChoice) ? (MagicTargetChoice)otherChoice : MagicTargetChoice.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTargetChoiceResultIndex() {
|
||||
return (otherChoice instanceof MagicTargetChoice) ? 0 : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getManaChoiceResultIndex() {
|
||||
return 2;
|
||||
|
|
|
@ -26,6 +26,7 @@ public class MagicMayChoice extends MagicChoice {
|
|||
private final MagicChoice[] choices;
|
||||
private final MagicTargetChoice targetChoice;
|
||||
private final int manaChoiceResultIndex;
|
||||
private final int targetChoiceResultIndex;
|
||||
|
||||
public MagicMayChoice(final String description,final MagicChoice... choices) {
|
||||
super(description);
|
||||
|
@ -33,16 +34,19 @@ public class MagicMayChoice extends MagicChoice {
|
|||
|
||||
MagicTargetChoice localTargetChoice = MagicTargetChoice.NONE;
|
||||
int localManaChoiceResultIndex = -1;
|
||||
int localTargetChoiceResultIndex = -1;
|
||||
for (int index=0;index<choices.length;index++) {
|
||||
final MagicChoice choice=choices[index];
|
||||
if (choice instanceof MagicTargetChoice) {
|
||||
localTargetChoice=(MagicTargetChoice)choice;
|
||||
localTargetChoiceResultIndex=index+1;
|
||||
} else if (choice instanceof MagicPayManaCostChoice) {
|
||||
localManaChoiceResultIndex=index+1;
|
||||
}
|
||||
}
|
||||
|
||||
targetChoice = localTargetChoice;
|
||||
targetChoiceResultIndex = localTargetChoiceResultIndex;
|
||||
manaChoiceResultIndex = localManaChoiceResultIndex;
|
||||
}
|
||||
|
||||
|
@ -58,6 +62,11 @@ public class MagicMayChoice extends MagicChoice {
|
|||
public MagicTargetChoice getTargetChoice() {
|
||||
return targetChoice;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTargetChoiceResultIndex() {
|
||||
return targetChoiceResultIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getManaChoiceResultIndex() {
|
||||
|
|
|
@ -516,6 +516,11 @@ public class MagicTargetChoice extends MagicChoice {
|
|||
public final MagicTargetChoice getTargetChoice() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int getTargetChoiceResultIndex() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
final boolean hasOptions(
|
||||
|
|
|
@ -31,7 +31,7 @@ public class MagicCounterUnlessEvent extends MagicEvent {
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicItemOnStack itemOnStack = event.getRefItemOnStack();
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.payManaCost(game,itemOnStack.getController(),choiceResults);
|
||||
} else {
|
||||
game.doAction(new MagicCounterItemOnStackAction(itemOnStack));
|
||||
|
|
|
@ -25,7 +25,7 @@ public class MagicDeclareAttackersEvent extends MagicEvent {
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final MagicDeclareAttackersResult result = (MagicDeclareAttackersResult)choiceResults[0];
|
||||
final MagicDeclareAttackersResult result = event.getAttackers();
|
||||
game.doAction(new MagicDeclareAttackersAction(player,result));
|
||||
game.logAttackers(player,result);
|
||||
}
|
||||
|
|
|
@ -21,8 +21,8 @@ public class MagicDeclareBlockersEvent extends MagicEvent {
|
|||
private static final MagicEventAction EVENT_ACTION=new MagicEventAction() {
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] choiceResults) {
|
||||
final MagicPlayer player=event.getPlayer();
|
||||
final MagicDeclareBlockersResult result=(MagicDeclareBlockersResult)choiceResults[0];
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final MagicDeclareBlockersResult result = event.getBlockers();
|
||||
game.doAction(new MagicDeclareBlockersAction(player,result));
|
||||
game.logBlockers(player,result);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,10 @@ import magic.model.action.MagicTargetAction;
|
|||
import magic.model.choice.MagicChoice;
|
||||
import magic.model.choice.MagicPayManaCostResult;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.choice.MagicDeclareAttackersResult;
|
||||
import magic.model.choice.MagicDeclareBlockersResult;
|
||||
import magic.model.choice.MagicExcludeResult;
|
||||
import magic.model.choice.MagicPlayChoiceResult;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.stack.MagicItemOnStack;
|
||||
import magic.model.target.MagicDefaultTargetPicker;
|
||||
|
@ -367,6 +371,18 @@ public class MagicEvent implements MagicCopyable {
|
|||
public MagicTargetChoice getTargetChoice() {
|
||||
return choice.getTargetChoice();
|
||||
}
|
||||
|
||||
public void clearTargetChoice(Object[] choiceResults) {
|
||||
choiceResults[getTargetChoiceResultIndex()] = null;
|
||||
}
|
||||
|
||||
public void setTargetChoice(Object[] choiceResults) {
|
||||
choiceResults[getTargetChoiceResultIndex()] = getTarget();
|
||||
}
|
||||
|
||||
private final int getTargetChoiceResultIndex() {
|
||||
return choice.getTargetChoiceResultIndex();
|
||||
}
|
||||
|
||||
private final int getManaChoiceResultIndex() {
|
||||
return choice.getManaChoiceResultIndex();
|
||||
|
@ -412,6 +428,22 @@ public class MagicEvent implements MagicCopyable {
|
|||
public boolean isKicked() {
|
||||
return getKickerCount() > 0;
|
||||
}
|
||||
|
||||
public MagicDeclareBlockersResult getBlockers() {
|
||||
return (MagicDeclareBlockersResult)chosen[0];
|
||||
}
|
||||
|
||||
public MagicDeclareAttackersResult getAttackers() {
|
||||
return (MagicDeclareAttackersResult)chosen[0];
|
||||
}
|
||||
|
||||
public MagicExcludeResult getExclude() {
|
||||
return (MagicExcludeResult)chosen[0];
|
||||
}
|
||||
|
||||
public MagicPlayChoiceResult getPlayChoice() {
|
||||
return (MagicPlayChoiceResult)chosen[0];
|
||||
}
|
||||
|
||||
public MagicColor getChosenColor() {
|
||||
for (Object obj : chosen) {
|
||||
|
|
|
@ -23,8 +23,7 @@ public class MagicExcludeEvent extends MagicEvent {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicExcludeResult result=(MagicExcludeResult)choiceResults[0];
|
||||
result.exclude(game);
|
||||
event.getExclude().exclude(game);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ public class MagicMulliganEvent extends MagicEvent {
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
final MagicCardList hand = new MagicCardList(player.getHand());
|
||||
final int size = hand.size();
|
||||
for (final MagicCard card : hand) {
|
||||
|
|
|
@ -49,8 +49,7 @@ public class MagicPlayCardEvent {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final int kicker = (Integer)choiceResults[1];
|
||||
game.doAction(new MagicPlayCardFromStackAction(event.getCardOnStack(), kicker));
|
||||
game.doAction(new MagicPlayCardFromStackAction(event.getCardOnStack(), event.getKickerCount()));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class MagicPlayMulticounterEvent extends MagicSpellCardEvent {
|
|||
final MagicPlayCardFromStackAction action = new MagicPlayCardFromStackAction(cardOnStack);
|
||||
game.doAction(action);
|
||||
|
||||
final int kickerCount = (Integer)choiceResults[1];
|
||||
final int kickerCount = event.getKickerCount();
|
||||
if (kickerCount > 0) {
|
||||
final MagicPermanent permanent = action.getPermanent();
|
||||
game.doAction(new MagicChangeCountersAction(
|
||||
|
|
|
@ -27,7 +27,7 @@ public class MagicPlayOgreUnlessEvent extends MagicEvent {
|
|||
private static final MagicEventAction EVENT_ACTION=new MagicEventAction() {
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.payManaCost(game,event.getPlayer(),choiceResults);
|
||||
} else {
|
||||
game.doAction(new MagicPlayTokenAction(event.getRefPlayer(),TokenCardDefinitions.get("Ogre")));
|
||||
|
|
|
@ -17,7 +17,7 @@ public class MagicPriorityEvent extends MagicEvent {
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
|
||||
final MagicPlayChoiceResult playChoiceResult=(MagicPlayChoiceResult)choiceResults[0];
|
||||
final MagicPlayChoiceResult playChoiceResult = event.getPlayChoice();
|
||||
if (playChoiceResult==MagicPlayChoiceResult.PASS ||
|
||||
playChoiceResult==MagicPlayChoiceResult.SKIP) {
|
||||
game.incrementPriorityPassedCount();
|
||||
|
|
|
@ -31,7 +31,7 @@ public class MagicRedirectDamageEvent extends MagicEvent {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent planeswalker) {
|
||||
final MagicDamage damage = isCombat ?
|
||||
|
|
|
@ -40,7 +40,7 @@ public class MagicSoulbondEvent extends MagicEvent {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent creature) {
|
||||
game.doAction(new MagicSoulbondAction(
|
||||
|
|
|
@ -21,7 +21,7 @@ public class MagicStackChangeTargetsEvent extends MagicEvent {
|
|||
@Override
|
||||
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] choiceResults) {
|
||||
final MagicItemOnStack itemOnStack = event.getRefItemOnStack();
|
||||
itemOnStack.getChoiceResults()[0]=choiceResults[0];
|
||||
event.setTargetChoice(itemOnStack.getChoiceResults());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public class MagicAllyGrowTrigger extends MagicWhenOtherComesIntoPlayTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicChangeCountersAction(
|
||||
event.getPermanent(),
|
||||
MagicCounterType.PlusOne,
|
||||
|
|
|
@ -42,7 +42,7 @@ public abstract class MagicAtUpkeepTrigger extends MagicTrigger<MagicPlayer> {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicChangeCountersAction(event.getPermanent(),MagicCounterType.Charge,1,true));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ public class MagicCumulativeUpkeepTrigger extends MagicAtUpkeepTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isNoChoice(choiceResults[0])) {
|
||||
if (event.isNo()) {
|
||||
game.doAction(new MagicSacrificeAction(event.getPermanent()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ public class MagicDevourTrigger extends MagicWhenComesIntoPlayTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent creature) {
|
||||
final MagicPermanent permanent = event.getPermanent();
|
||||
|
|
|
@ -49,7 +49,7 @@ public class MagicDieDrawCardTrigger extends MagicWhenPutIntoGraveyardTrigger {
|
|||
final Object[] choiceResults) {
|
||||
if (mustDraw) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),1));
|
||||
} else if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
} else if (event.isYes()) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),1));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ public class MagicEchoTrigger extends MagicAtUpkeepTrigger {
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicPermanent permanent = event.getPermanent();
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicChangeStateAction(
|
||||
permanent,
|
||||
MagicPermanentState.MustPayEchoCost,false
|
||||
|
|
|
@ -78,7 +78,7 @@ public class MagicEntersExileCreatureOrSacrificeTrigger extends MagicWhenComesIn
|
|||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
final MagicPermanent permanent = event.getPermanent();
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent creature) {
|
||||
game.doAction(new MagicExileUntilThisLeavesPlayAction(permanent,creature));
|
||||
|
|
|
@ -41,7 +41,7 @@ public class MagicExtortTrigger extends MagicWhenOtherSpellIsCastTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicChangeLifeAction(event.getPlayer().getOpponent(),-1));
|
||||
game.doAction(new MagicChangeLifeAction(event.getPlayer(),1));
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ public class MagicMiracleTrigger extends MagicWhenDrawnTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
final MagicCard card = event.getCard();
|
||||
|
||||
// without this, card.getCardDefinition() will return UNKNOWN in simulated game
|
||||
|
|
|
@ -47,7 +47,7 @@ public class MagicModularTrigger extends MagicWhenPutIntoGraveyardTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent creature) {
|
||||
game.doAction(new MagicChangeCountersAction(
|
||||
|
|
|
@ -56,7 +56,7 @@ public class MagicSoulshiftTrigger extends MagicWhenPutIntoGraveyardTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetCard(game,new MagicCardAction() {
|
||||
public void doAction(final MagicCard card) {
|
||||
game.doAction(new MagicRemoveCardAction(
|
||||
|
|
|
@ -73,7 +73,7 @@ public class MagicThiefTrigger extends MagicWhenDamageIsDealtTrigger {
|
|||
final Object[] choiceResults) {
|
||||
if (choice == choice.Must) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),amount));
|
||||
} else if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
} else if (event.isYes()) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),amount));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ public class MagicUnleashTrigger extends MagicWhenComesIntoPlayTrigger {
|
|||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] choiceResults) {
|
||||
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicChangeCountersAction(
|
||||
event.getPermanent(),
|
||||
MagicCounterType.PlusOne,
|
||||
|
|
Loading…
Reference in New Issue