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 1f7c25086c7..e6e305ed157 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 @@ -42,7 +42,8 @@ public final class CDev implements ICDoc { view.getLblCardToExile().addMouseListener(madCardToExile); view.getLblCastSpell().addMouseListener(madCastASpell); view.getLblRepeatAddCard().addMouseListener(madRepeatAddCard); - view.getLblCounterPermanent().addMouseListener(madCounter); + view.getLblAddCounterPermanent().addMouseListener(madAddCounter); + view.getLblSubCounterPermanent().addMouseListener(madSubCounter); view.getLblTapPermanent().addMouseListener(madTap); view.getLblUntapPermanent().addMouseListener(madUntap); view.getLblSetLife().addMouseListener(madLife); @@ -198,7 +199,7 @@ public final class CDev implements ICDoc { getController().cheat().exileCardsFromHand();; } - private final MouseListener madCounter = new MouseAdapter() { + private final MouseListener madAddCounter = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { addCounterToPermanent(); @@ -208,6 +209,16 @@ public final class CDev implements ICDoc { getController().cheat().addCountersToPermanent(); } + private final MouseListener madSubCounter = new MouseAdapter() { + @Override + public void mousePressed(final MouseEvent e) { + removeCountersFromPermanent(); + } + }; + public void removeCountersFromPermanent() { + getController().cheat().removeCountersFromPermanent(); + } + private final MouseListener madTap = new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { 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 70678c3d7f9..7f2096bf123 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 @@ -60,7 +60,8 @@ public class VDev implements IVDoc, IDevListener { private final DevLabel lblSetupGame = new DevLabel("Setup Game State"); private final DevLabel lblDumpGame = new DevLabel("Dump Game State"); private final DevLabel lblTutor = new DevLabel("Tutor for Card"); - private final DevLabel lblCounterPermanent = new DevLabel("Add Counters to Permanent"); + private final DevLabel lblAddCounterPermanent = new DevLabel("Add Counters to Card"); + private final DevLabel lblSubCounterPermanent = new DevLabel("Sub Counters from Card"); private final DevLabel lblTapPermanent = new DevLabel("Tap Permanents"); private final DevLabel lblUntapPermanent = new DevLabel("Untap Permanents"); private final DevLabel lblSetLife = new DevLabel("Set Player Life"); @@ -106,7 +107,8 @@ public class VDev implements IVDoc, IDevListener { viewport.add(this.lblExileFromPlay, halfConstraints); viewport.add(this.lblSetLife, halfConstraintsLeft); viewport.add(this.lblWinGame, halfConstraints); - viewport.add(this.lblCounterPermanent, constraints); + viewport.add(this.lblAddCounterPermanent, halfConstraintsLeft); + viewport.add(this.lblSubCounterPermanent, halfConstraints); viewport.add(this.lblSetupGame, halfConstraintsLeft); viewport.add(this.lblDumpGame, halfConstraints); viewport.add(this.lblTapPermanent, halfConstraintsLeft); @@ -244,8 +246,13 @@ public class VDev implements IVDoc, IDevListener { } /** @return {@link forge.screens.match.views.VDev.DevLabel} */ - public DevLabel getLblCounterPermanent() { - return this.lblCounterPermanent; + public DevLabel getLblAddCounterPermanent() { + return this.lblAddCounterPermanent; + } + + /** @return {@link forge.screens.match.views.VDev.DevLabel} */ + public DevLabel getLblSubCounterPermanent() { + return this.lblSubCounterPermanent; } /** @return {@link forge.screens.match.views.VDev.DevLabel} */ diff --git a/forge-gui-mobile/src/forge/screens/match/views/VDevMenu.java b/forge-gui-mobile/src/forge/screens/match/views/VDevMenu.java index d8741f9a9d1..60617edfaa5 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VDevMenu.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VDevMenu.java @@ -204,7 +204,7 @@ public class VDevMenu extends FDropDownMenu { MatchController.instance.getGameController().cheat().setViewAllCards(!viewAll); } })); - addItem(new FMenuItem("Add Counters to Permanent", new FEventHandler() { + addItem(new FMenuItem("Add Counters to Card", new FEventHandler() { @Override public void handleEvent(FEvent e) { ThreadUtil.invokeInGameThread(new Runnable() { @@ -215,6 +215,17 @@ public class VDevMenu extends FDropDownMenu { }); } })); + addItem(new FMenuItem("Sub Counters from Card", new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + ThreadUtil.invokeInGameThread(new Runnable() { + @Override + public void run() { + MatchController.instance.getGameController().cheat().removeCountersFromPermanent(); + } + }); + } + })); addItem(new FMenuItem("Tap Permanents", new FEventHandler() { @Override public void handleEvent(FEvent e) { diff --git a/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java b/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java index 857e908654f..43d36633c6d 100644 --- a/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java +++ b/forge-gui/src/main/java/forge/interfaces/IDevModeCheats.java @@ -16,6 +16,8 @@ public interface IDevModeCheats { void addCountersToPermanent(); + void removeCountersFromPermanent(); + void tapPermanents(); void untapPermanents(); @@ -100,6 +102,9 @@ public interface IDevModeCheats { public void addCountersToPermanent() { } @Override + public void removeCountersFromPermanent() { + } + @Override public void addCardToHand() { } @Override diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index b58c0e1eaae..d59cb1de537 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -2046,9 +2046,24 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont */ @Override public void addCountersToPermanent() { + modifyCountersOnPermanent(false); + } + + /* + * (non-Javadoc) + * + * @see forge.player.IDevModeCheats#addCountersToPermanent() + */ + @Override + public void removeCountersFromPermanent() { + modifyCountersOnPermanent(true); + } + + public void modifyCountersOnPermanent(boolean subtract) { + final String titleMsg = subtract ? "Remove counters from which card?" : "Add counters to which card?"; final CardCollectionView cards = game.getCardsIn(ZoneType.Battlefield); final Card card = game - .getCard(getGui().oneOrNone("Add counters to which card?", CardView.getCollection(cards))); + .getCard(getGui().oneOrNone(titleMsg, CardView.getCollection(cards))); if (card == null) { return; } @@ -2063,7 +2078,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont return; } - card.addCounter(counter, count, card, false); + if (subtract) { + card.subtractCounter(counter, count); + } else { + card.addCounter(counter, count, card, false); + } + } /*