diff --git a/src/main/java/forge/card/abilityfactory/SpellAiLogic.java b/src/main/java/forge/card/abilityfactory/SpellAiLogic.java index a24c85431ff..6d613094a03 100644 --- a/src/main/java/forge/card/abilityfactory/SpellAiLogic.java +++ b/src/main/java/forge/card/abilityfactory/SpellAiLogic.java @@ -36,5 +36,6 @@ public abstract class SpellAiLogic { } // consider safe + @SuppressWarnings("unused") public boolean chkAIDrawback(final Map params, final SpellAbility sa, final Player aiPlayer) { return true; } } \ No newline at end of file diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java index 869ca534bba..e8498d749d1 100644 --- a/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/src/main/java/forge/gui/GuiDisplayUtil.java @@ -34,6 +34,8 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.border.Border; +import com.google.common.collect.Lists; + import forge.Card; import forge.CardCharacteristicName; @@ -42,7 +44,9 @@ import forge.Constant; import forge.Counters; import forge.Singletons; import forge.card.spellability.AbilityManaPart; +import forge.card.spellability.SpellAbility; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -624,54 +628,6 @@ public final class GuiDisplayUtil { } } - /** - *

- * devModeTutorAnyCard. - *

- * - * @since 1.2.7 - */ - public static void devModeAddAnyCard() { - final Iterable uniqueCards = CardDb.instance().getAllUniqueCards(); - final List cards = new ArrayList(); - for (final CardPrinted c : uniqueCards) { - cards.add(c.getName()); - } - Collections.sort(cards); - - // use standard forge's list selection dialog - final ListChooser c = new ListChooser("Name the card", 0, 1, cards); - if (c.show()) { - CardPrinted cp = CardDb.instance().getCard(c.getSelectedValue()); - Card forgeCard = cp.toForgeCard(Singletons.getControl().getPlayer()); - Singletons.getModel().getGame().getAction().moveToHand(forgeCard); - } - } - - /** - *

- * devModeGiveAnyCard. (any card to AI hand) - *

- * - * @since 1.2.7 - */ - public static void devModeGiveAnyCard() { - final Iterable uniqueCards = CardDb.instance().getAllUniqueCards(); - final List cards = new ArrayList(); - for (final CardPrinted c : uniqueCards) { - cards.add(c.getName()); - } - Collections.sort(cards); - - // use standard forge's list selection dialog - final ListChooser c = new ListChooser("Name the card", 0, 1, cards); - if (c.show()) { - CardPrinted cp = CardDb.instance().getCard(c.getSelectedValue()); - Card forgeCard = cp.toForgeCard(Singletons.getControl().getPlayer().getOpponent()); - Singletons.getModel().getGame().getAction().moveToHand(forgeCard); - } - } - /** *

* devModeAddCounter. @@ -776,6 +732,57 @@ public final class GuiDisplayUtil { } } } + + /** + *

+ * devModeTutorAnyCard. + *

+ * + * @since 1.2.7 + */ + public static void devModeCardToHand() { + final List players = Singletons.getModel().getGame().getPlayers(); + final Player p = GuiChoose.oneOrNone("Put card in play for which player?", players); + if (null == p) return; + + final List cards = Lists.newArrayList(CardDb.instance().getAllUniqueCards()); + Collections.sort(cards); + + // use standard forge's list selection dialog + final ListChooser c = new ListChooser("Name the card", 0, 1, cards); + if (c.show()) { + Card forgeCard = c.getSelectedValue().toForgeCard(p); + Singletons.getModel().getGame().getAction().moveToHand(forgeCard); + } + } + + public static void devModeCardToBattlefield() { + final List players = Singletons.getModel().getGame().getPlayers(); + final Player p = GuiChoose.oneOrNone("Put card in play for which player?", players); + if (null == p) return; + + final List cards = Lists.newArrayList(CardDb.instance().getAllUniqueCards()); + Collections.sort(cards); + + // use standard forge's list selection dialog + final ListChooser c = new ListChooser("Name the card", 0, 1, cards); + if (c.show()) { + Card forgeCard = c.getSelectedValue().toForgeCard(p); + + final List choices = forgeCard.getBasicSpells(); + if (choices.isEmpty()) return; // when would it happen? + + final SpellAbility sa = choices.size() == 1 ? choices.get(0) : GuiChoose.oneOrNone("Choose", choices); + if (sa == null) return; // happends if cancelled + + sa.setActivatingPlayer(p); + + final GameState game = Singletons.getModel().getGame(); + game.getAction().moveToHand(forgeCard); // this is really needed + game.getAction().playSpellAbilityForFree(sa); + } + + } public static void devModeBreakpoint() { List Players = Singletons.getModel().getGame().getPlayers(); diff --git a/src/main/java/forge/gui/match/controllers/CDev.java b/src/main/java/forge/gui/match/controllers/CDev.java index 150008cf20b..b605faddbbe 100644 --- a/src/main/java/forge/gui/match/controllers/CDev.java +++ b/src/main/java/forge/gui/match/controllers/CDev.java @@ -52,13 +52,9 @@ public enum CDev implements ICDoc { public void mousePressed(final MouseEvent e) { GuiDisplayUtil.devModeTutor(); } }; - private final MouseListener madAddAnyCard = new MouseAdapter() { @Override + private final MouseListener madCardToHand = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { - GuiDisplayUtil.devModeAddAnyCard(); } }; - - private final MouseListener madGiveAnyCard = new MouseAdapter() { @Override - public void mousePressed(final MouseEvent e) { - GuiDisplayUtil.devModeGiveAnyCard(); } }; + GuiDisplayUtil.devModeCardToHand(); } }; private final MouseListener madCounter = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { @@ -76,6 +72,11 @@ public enum CDev implements ICDoc { public void mousePressed(final MouseEvent e) { GuiDisplayUtil.devModeSetLife(); } }; + private final MouseListener madCardToBattlefield = new MouseAdapter() { @Override + public void mousePressed(final MouseEvent e) { + GuiDisplayUtil.devModeCardToBattlefield(); } }; + + private final MouseListener madBreakpoint = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { GuiDisplayUtil.devModeBreakpoint(); } }; @@ -100,13 +101,13 @@ public enum CDev implements ICDoc { VDev.SINGLETON_INSTANCE.getLblGenerateMana().addMouseListener(madMana); VDev.SINGLETON_INSTANCE.getLblSetupGame().addMouseListener(madSetup); VDev.SINGLETON_INSTANCE.getLblTutor().addMouseListener(madTutor); - VDev.SINGLETON_INSTANCE.getAnyCard().addMouseListener(madAddAnyCard); - VDev.SINGLETON_INSTANCE.getLblGiveCard().addMouseListener(madGiveAnyCard); + VDev.SINGLETON_INSTANCE.getLblCardToHand().addMouseListener(madCardToHand); VDev.SINGLETON_INSTANCE.getLblCounterPermanent().addMouseListener(madCounter); VDev.SINGLETON_INSTANCE.getLblTapPermanent().addMouseListener(madTap); VDev.SINGLETON_INSTANCE.getLblUntapPermanent().addMouseListener(madUntap); VDev.SINGLETON_INSTANCE.getLblSetLife().addMouseListener(madLife); VDev.SINGLETON_INSTANCE.getLblBreakpoint().addMouseListener(madBreakpoint); + VDev.SINGLETON_INSTANCE.getLblCardToBattlefield().addMouseListener(madCardToBattlefield); ForgePreferences prefs = Singletons.getModel().getPreferences(); diff --git a/src/main/java/forge/gui/match/views/VDev.java b/src/main/java/forge/gui/match/views/VDev.java index ab0f0fb60d0..e7810f8c4ed 100644 --- a/src/main/java/forge/gui/match/views/VDev.java +++ b/src/main/java/forge/gui/match/views/VDev.java @@ -72,8 +72,8 @@ public enum VDev implements IVDoc { private final DevLabel lblTapPermanent = new DevLabel("Tap Permanent"); private final DevLabel lblUntapPermanent = new DevLabel("Untap Permanent"); private final DevLabel lblSetLife = new DevLabel("Set Player Life"); - private final DevLabel lblAddCard = new DevLabel("Add any card"); - private final DevLabel lblGiveCard = new DevLabel("Give any card to AI"); + private final DevLabel lblCardToBattlefield = new DevLabel("Add card to play"); + private final DevLabel lblCardToHand = new DevLabel("Add card to hand"); private final DevLabel lblBreakpoint = new DevLabel("Trigger breakpoint"); //========= Constructor @@ -84,8 +84,8 @@ public enum VDev implements IVDoc { devLBLs.add(lblGenerateMana); devLBLs.add(lblSetupGame); devLBLs.add(lblTutor); - devLBLs.add(lblAddCard); - devLBLs.add(lblGiveCard); + devLBLs.add(lblCardToHand); + devLBLs.add(lblCardToBattlefield); devLBLs.add(lblCounterPermanent); devLBLs.add(lblTapPermanent); devLBLs.add(lblUntapPermanent); @@ -103,8 +103,8 @@ public enum VDev implements IVDoc { viewport.add(this.lblGenerateMana, constraints); viewport.add(this.lblSetupGame, constraints); viewport.add(this.lblTutor, constraints); - viewport.add(this.lblAddCard, constraints); - viewport.add(this.lblGiveCard, constraints); + viewport.add(this.lblCardToHand, constraints); + viewport.add(this.lblCardToBattlefield, constraints); viewport.add(this.lblCounterPermanent, constraints); viewport.add(this.lblTapPermanent, constraints); viewport.add(this.lblUntapPermanent, constraints); @@ -186,13 +186,13 @@ public enum VDev implements IVDoc { } /** @return {@link forge.gui.match.views.VDev.DevLabel} */ - public DevLabel getAnyCard() { - return this.lblAddCard; + public DevLabel getLblCardToHand() { + return this.lblCardToHand; } - + /** @return {@link forge.gui.match.views.VDev.DevLabel} */ - public DevLabel getLblGiveCard() { - return this.lblGiveCard; + public final DevLabel getLblCardToBattlefield() { + return lblCardToBattlefield; } /** @return {@link forge.gui.match.views.VDev.DevLabel} */