From d79cbcb54f3ab53c958569e5d6b9711b62303975 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Thu, 9 Feb 2012 15:58:14 -0500 Subject: [PATCH] fixes --- .../main/java/mage/client/cards/CardArea.java | 27 ++++++++++--------- .../mage/client/dialog/PickPileDialog.java | 4 +-- .../mage/client/dialog/ShowCardsDialog.java | 3 ++- Mage/src/mage/game/turn/Phase.java | 12 ++++++--- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/cards/CardArea.java b/Mage.Client/src/main/java/mage/client/cards/CardArea.java index 4f3577f481d..da3022888d5 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardArea.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardArea.java @@ -31,6 +31,7 @@ package mage.client.cards; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Rectangle; +import java.awt.event.MouseListener; import java.util.UUID; import javax.swing.JLayeredPane; @@ -67,44 +68,44 @@ public class CardArea extends JPanel { } - public void loadCards(SimpleCardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) { - loadCards(CardsViewUtil.convertSimple(showCards), bigCard, dimension, gameId); + public void loadCards(SimpleCardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, MouseListener listener) { + loadCards(CardsViewUtil.convertSimple(showCards), bigCard, dimension, gameId, listener); } - public void loadCards(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) { + public void loadCards(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, MouseListener listener) { this.reloaded = true; cardArea.removeAll(); if (showCards != null && showCards.size() < 10) - loadCardsFew(showCards, bigCard, gameId); + loadCardsFew(showCards, bigCard, gameId, listener); else - loadCardsMany(showCards, bigCard, gameId); + loadCardsMany(showCards, bigCard, gameId, listener); cardArea.revalidate(); this.revalidate(); this.repaint(); } - public void loadCardsNarrow(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) { + public void loadCardsNarrow(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, MouseListener listener) { this.reloaded = true; cardArea.removeAll(); - loadCardsMany(showCards, bigCard, gameId); + loadCardsMany(showCards, bigCard, gameId, listener); cardArea.revalidate(); this.revalidate(); this.repaint(); } - private void loadCardsFew(CardsView showCards, BigCard bigCard, UUID gameId) { + private void loadCardsFew(CardsView showCards, BigCard bigCard, UUID gameId, MouseListener listener) { Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight); Dimension dimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight); for (CardView card : showCards.values()) { - addCard(card, bigCard, gameId, rectangle, dimension); + addCard(card, bigCard, gameId, rectangle, dimension, listener); rectangle.translate(Config.dimensions.frameWidth, 0); } cardArea.setPreferredSize(new Dimension(Config.dimensions.frameWidth * showCards.size(), Config.dimensions.frameHeight)); } - private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle, Dimension dimension) { + private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle, Dimension dimension, MouseListener listener) { if (card instanceof AbilityView) { CardView tmp = ((AbilityView) card).getSourceCard(); tmp.overrideRules(card.getRules()); @@ -115,20 +116,22 @@ public class CardArea extends JPanel { } MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard, dimension, gameId, true); cardImg.setBounds(rectangle); + if (listener != null) + cardImg.addMouseListener(listener); cardArea.add(cardImg); cardArea.moveToFront(cardImg); cardImg.update(card); cardImg.setCardBounds(rectangle.x, rectangle.y, Config.dimensions.frameWidth, Config.dimensions.frameHeight); } - private void loadCardsMany(CardsView showCards, BigCard bigCard, UUID gameId) { + private void loadCardsMany(CardsView showCards, BigCard bigCard, UUID gameId, MouseListener listener) { int columns = 1; if (showCards != null && showCards.size() > 0) { Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight); Dimension dimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight); int count = 0; for (CardView card : showCards.values()) { - addCard(card, bigCard, gameId, rectangle, dimension); + addCard(card, bigCard, gameId, rectangle, dimension, listener); if (count >= 20) { rectangle.translate(Config.dimensions.frameWidth, -400); columns++; diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java index f8462fdfcb4..20665af9810 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java @@ -98,8 +98,8 @@ public class PickPileDialog extends MageDialog { public void loadCards(String name, CardsView pile1, CardsView pile2, BigCard bigCard, CardDimensions dimension, UUID gameId) { this.title = name; - this.pile1.loadCardsNarrow(pile1, bigCard, dimension, gameId); - this.pile2.loadCardsNarrow(pile2, bigCard, dimension, gameId); + this.pile1.loadCardsNarrow(pile1, bigCard, dimension, gameId, null); + this.pile2.loadCardsNarrow(pile2, bigCard, dimension, gameId, null); if (getParent() != MageFrame.getDesktop() /*|| this.isClosed*/) { MageFrame.getDesktop().add(this, JLayeredPane.POPUP_LAYER); diff --git a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java index 94bb449f600..17b527c0920 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java @@ -74,7 +74,7 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal) { this.reloaded = true; this.title = name; - cardArea.loadCards(showCards, bigCard, dimension, gameId); + cardArea.loadCards(showCards, bigCard, dimension, gameId, this); if (getParent() != MageFrame.getDesktop() /*|| this.isClosed*/) { MageFrame.getDesktop().add(this, JLayeredPane.POPUP_LAYER); } @@ -115,6 +115,7 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { setResizable(true); getContentPane().setLayout(new java.awt.BorderLayout()); getContentPane().add(cardArea, java.awt.BorderLayout.CENTER); + this.addMouseListener(this); pack(); } diff --git a/Mage/src/mage/game/turn/Phase.java b/Mage/src/mage/game/turn/Phase.java index 7f24cfe7321..b4c7bb0287d 100644 --- a/Mage/src/mage/game/turn/Phase.java +++ b/Mage/src/mage/game/turn/Phase.java @@ -102,11 +102,11 @@ public abstract class Phase> implements Serializable { if (beginPhase(game, activePlayerId)) { for (Step step: steps) { - currentStep = step; - if (!game.isSimulation()) - checkStopOnStepOption(game); if (game.isPaused() || game.isGameOver()) return false; + currentStep = step; + if (!game.isSimulation() && checkStopOnStepOption(game)) + return false; if (!game.getState().getTurnMods().skipStep(activePlayerId, getStep().getType())) playStep(game); } @@ -119,12 +119,14 @@ public abstract class Phase> implements Serializable { return false; } - private void checkStopOnStepOption(Game game) { + private boolean checkStopOnStepOption(Game game) { if (game.getOptions().stopOnTurn != null && game.getOptions().stopAtStep == getStep().getType()) { if (game.getOptions().stopOnTurn.equals(game.getState().getTurnNum())) { game.pause(); + return true; } } + return false; } public boolean resumePlay(Game game, PhaseStep stepType, boolean wasPaused) { @@ -191,6 +193,8 @@ public abstract class Phase> implements Serializable { protected void resumeStep(Game game, boolean wasPaused) { boolean resuming = true; + if (currentStep == null || currentStep.getStepPart() == null) + game.end(); switch (currentStep.getStepPart()) { case PRE: if (wasPaused) {