From b2709acc3629d4a6957a4c476309948993f23e10 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 4 Jan 2017 20:14:35 +0000 Subject: [PATCH] - Committed "exile from hand/battlefield" dev menu options by Zuchinni. --- .../forge/screens/match/controllers/CDev.java | 23 +++++++ .../screens/match/menus/DevModeMenu.java | 6 ++ .../java/forge/screens/match/views/VDev.java | 14 ++++ .../java/forge/interfaces/IDevModeCheats.java | 16 +++++ .../forge/player/PlayerControllerHuman.java | 66 +++++++++++++++++++ 5 files changed, 125 insertions(+) diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDev.java b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDev.java index ba80915dbb9..14c283c35e6 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDev.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDev.java @@ -35,12 +35,14 @@ public final class CDev implements ICDoc { view.getLblDumpGame().addMouseListener(madDump); view.getLblTutor().addMouseListener(madTutor); view.getLblCardToHand().addMouseListener(madCardToHand); + view.getLblExileFromHand().addMouseListener(madExileFromHand); view.getLblCounterPermanent().addMouseListener(madCounter); view.getLblTapPermanent().addMouseListener(madTap); view.getLblUntapPermanent().addMouseListener(madUntap); view.getLblSetLife().addMouseListener(madLife); view.getLblWinGame().addMouseListener(madWinGame); view.getLblCardToBattlefield().addMouseListener(madCardToBattlefield); + view.getLblExileFromPlay().addMouseListener(madExileFromPlay); view.getLblRiggedRoll().addMouseListener(madRiggedRoll); view.getLblWalkTo().addMouseListener(madWalkToPlane); } @@ -130,6 +132,17 @@ public final class CDev implements ICDoc { getController().cheat().addCardToHand(); } + + private final MouseListener madExileFromHand = new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + exileCardsFromHand(); + } + }; + public void exileCardsFromHand() { + getController().cheat().exileCardsFromHand();; + } + private final MouseListener madCounter = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { @@ -190,6 +203,16 @@ public final class CDev implements ICDoc { getController().cheat().addCardToBattlefield(); } + private final MouseListener madExileFromPlay = new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + exileCardsFromPlay(); + } + }; + public void exileCardsFromPlay() { + getController().cheat().exileCardsFromBattlefield(); + } + private final MouseListener madRiggedRoll = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/menus/DevModeMenu.java b/forge-gui-desktop/src/main/java/forge/screens/match/menus/DevModeMenu.java index 798d8af6238..34176d1176d 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/menus/DevModeMenu.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/menus/DevModeMenu.java @@ -33,6 +33,8 @@ public class DevModeMenu implements ActionListener, IDevListener { TUTOR_FOR_CARD("Tutor for Card"), ADD_CARD_TO_HAND("Add Card to Hand"), ADD_CARD_TO_PLAY("Add Card to Play"), + EXILE_FROM_HAND("Exile from Hand"), + EXILE_FROM_PLAY("Exile from Play"), SET_PLAYER_LIFE("Set Player Life"), WIN_GAME("Win Game"), SETUP_GAME_STATE("Setup Game State"), @@ -76,6 +78,8 @@ public class DevModeMenu implements ActionListener, IDevListener { menu.addSeparator(); menu.add(getMenuItem(DevMenuItem.ADD_CARD_TO_HAND)); menu.add(getMenuItem(DevMenuItem.ADD_CARD_TO_PLAY)); + menu.add(getMenuItem(DevMenuItem.EXILE_FROM_HAND)); + menu.add(getMenuItem(DevMenuItem.EXILE_FROM_PLAY)); menu.addSeparator(); menu.add(getMenuItem(DevMenuItem.SET_PLAYER_LIFE)); menu.add(getMenuItem(DevMenuItem.WIN_GAME)); @@ -119,6 +123,8 @@ public class DevModeMenu implements ActionListener, IDevListener { case TUTOR_FOR_CARD: { controller.tutorForCard(); break; } case ADD_CARD_TO_HAND: { controller.addCardToHand(); break; } case ADD_CARD_TO_PLAY: { controller.addCardToBattlefield(); break; } + case EXILE_FROM_PLAY: { controller.exileCardsFromPlay(); break; } + case EXILE_FROM_HAND: { controller.exileCardsFromHand(); break; } case SET_PLAYER_LIFE: { controller.setPlayerLife(); break; } case WIN_GAME: { controller.winGame(); break; } case SETUP_GAME_STATE: { controller.setupGameState(); break; } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/views/VDev.java b/forge-gui-desktop/src/main/java/forge/screens/match/views/VDev.java index 9eef7452ff5..ca0b023195a 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/views/VDev.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/views/VDev.java @@ -66,7 +66,9 @@ public class VDev implements IVDoc, IDevListener { private final DevLabel lblSetLife = new DevLabel("Set Player Life"); private final DevLabel lblWinGame = new DevLabel("Win Game"); private final DevLabel lblCardToBattlefield = new DevLabel("Add Card to Play"); + private final DevLabel lblExileFromPlay = new DevLabel("Exile Card from Play"); private final DevLabel lblCardToHand = new DevLabel("Add Card to Hand"); + private final DevLabel lblExileFromHand = new DevLabel("Exile Card from Hand"); private final DevLabel lblRiggedRoll = new DevLabel("Rigged Planar Roll"); private final DevLabel lblWalkTo = new DevLabel("Planeswalk to"); @@ -86,6 +88,8 @@ public class VDev implements IVDoc, IDevListener { viewport.add(this.lblViewAll, halfConstraints); viewport.add(this.lblCardToHand, halfConstraintsLeft); viewport.add(this.lblCardToBattlefield, halfConstraints); + viewport.add(this.lblExileFromPlay, halfConstraintsLeft); + viewport.add(this.lblExileFromHand, halfConstraints); viewport.add(this.lblSetLife, halfConstraintsLeft); viewport.add(this.lblWinGame, halfConstraints); viewport.add(this.lblSetupGame, halfConstraintsLeft); @@ -182,11 +186,21 @@ public class VDev implements IVDoc, IDevListener { return this.lblCardToHand; } + /** @return {@link forge.screens.match.views.VDev.DevLabel} */ + public DevLabel getLblExileFromHand() { + return this.lblExileFromHand; + } + /** @return {@link forge.screens.match.views.VDev.DevLabel} */ public final DevLabel getLblCardToBattlefield() { return lblCardToBattlefield; } + /** @return {@link forge.screens.match.views.VDev.DevLabel} */ + public DevLabel getLblExileFromPlay() { + return this.lblExileFromPlay; + } + /** @return {@link forge.screens.match.views.VDev.DevLabel} */ public DevLabel getLblCounterPermanent() { return this.lblCounterPermanent; diff --git a/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java b/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java index 32bd32f9b26..eeced4bef78 100644 --- a/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java +++ b/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java @@ -26,6 +26,16 @@ public interface IDevModeCheats { void addCardToHand(); + /* + * Exiles cards from specified player's hand. Will prompt user for player and cards. + */ + void exileCardsFromHand(); + + /* + * Exiles cards from play. Will prompt user for player and cards. + */ + void exileCardsFromBattlefield(); + void addCardToBattlefield(); void riggedPlanarRoll(); @@ -80,6 +90,12 @@ public interface IDevModeCheats { public void addCardToHand() { } @Override + public void exileCardsFromHand() { + } + @Override + public void exileCardsFromBattlefield() { + } + @Override public void addCardToBattlefield() { } }; diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 6d5bff74f2a..133b1313dd7 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1784,6 +1784,72 @@ public class PlayerControllerHuman }}); } + /* (non-Javadoc) + * @see forge.player.IDevModeCheats#exileCardsFromHand() + */ + @Override + public void exileCardsFromHand() { + final Player p = game.getPlayer(getGui().oneOrNone("Exile card(s) from which player's hand?", PlayerView.getCollection(game.getPlayers()))); + if (p == null) { return; } + + final CardCollection selection; + + CardCollectionView cardsInHand = p.getCardsIn(ZoneType.Hand); + selection = game.getCardList(getGui().many("Choose cards to exile", + "Discarded", 0, -1, CardView.getCollection(cardsInHand), null)); + + if (selection != null && selection.size() > 0) + { + for (Card c : selection) + { + if (c == null) { continue; } + if (game.getAction().moveTo(ZoneType.Exile, c) != null) + { + StringBuilder sb = new StringBuilder(); + sb.append(p).append(" exiles ").append(c).append(" due to Dev Cheats."); + game.getGameLog().add(GameLogEntryType.DISCARD, sb.toString()); + } + else + { + game.getGameLog().add(GameLogEntryType.INFORMATION, "DISCARD CHEAT ERROR"); + } + } + } + } + + /* (non-Javadoc) + * @see forge.player.IDevModeCheats#exileCardsFromBattlefield() + */ + @Override + public void exileCardsFromBattlefield() { + final Player p = game.getPlayer(getGui().oneOrNone("Exile card(s) from which player's battlefield?", PlayerView.getCollection(game.getPlayers()))); + if (p == null) { return; } + + final CardCollection selection; + + CardCollectionView cardsInPlay = p.getCardsIn(ZoneType.Battlefield); + selection = game.getCardList(getGui().many("Choose cards to exile", + "Discarded", 0, -1, CardView.getCollection(cardsInPlay), null)); + + if (selection != null && selection.size() > 0) + { + for (Card c : selection) + { + if (c == null) { continue; } + if (game.getAction().moveTo(ZoneType.Exile, c) != null) + { + StringBuilder sb = new StringBuilder(); + sb.append(p).append(" exiles ").append(c).append(" due to Dev Cheats."); + game.getGameLog().add(GameLogEntryType.ZONE_CHANGE, sb.toString()); + } + else + { + game.getGameLog().add(GameLogEntryType.INFORMATION, "EXILE FROM PLAY CHEAT ERROR"); + } + } + } + } + /* (non-Javadoc) * @see forge.player.IDevModeCheats#addCardToBattlefield() */