From 87f919ecac3c60f50198d5c55209abcfff8c366b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 21 Jun 2015 23:49:16 +0200 Subject: [PATCH] * Reworked handling of revealed and look at windows. Windows can stay open now and moved to a position and stay there. --- ...eDialog.form => CardInfoWindowDialog.form} | 0 ...eDialog.java => CardInfoWindowDialog.java} | 112 ++++++++++++++++-- .../mage/client/dialog/ShowCardsDialog.java | 54 +++++---- .../main/java/mage/client/game/GamePanel.java | 71 +++++++---- .../mage/client/util/gui/GuiDisplayUtil.java | 13 +- .../mage/plugins/card/utils/ImageManager.java | 3 + .../card/utils/impl/ImageManagerImpl.java | 30 +++++ .../src/main/resources/game/looked_at.png | Bin 0 -> 1274 bytes .../src/main/resources/game/revealed.png | Bin 0 -> 3305 bytes .../mage/server/game/GameSessionPlayer.java | 1 - Mage/src/mage/game/GameImpl.java | 3 +- Mage/src/mage/game/GameState.java | 8 +- 12 files changed, 232 insertions(+), 63 deletions(-) rename Mage.Client/src/main/java/mage/client/dialog/{ExileZoneDialog.form => CardInfoWindowDialog.form} (100%) rename Mage.Client/src/main/java/mage/client/dialog/{ExileZoneDialog.java => CardInfoWindowDialog.java} (51%) create mode 100644 Mage.Client/src/main/resources/game/looked_at.png create mode 100644 Mage.Client/src/main/resources/game/revealed.png diff --git a/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.form b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form similarity index 100% rename from Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.form rename to Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form diff --git a/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java similarity index 51% rename from Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java rename to Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java index d85e8d2ee6d..67e8fa74018 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java @@ -27,42 +27,140 @@ */ /* - * ExileZoneDialog.java + * CardInfoWindowDialog.java * * Created on Feb 1, 2010, 3:00:35 PM */ package mage.client.dialog; +import java.awt.Point; import java.beans.PropertyVetoException; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.ImageIcon; +import javax.swing.SwingUtilities; import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE; import mage.client.cards.BigCard; import mage.client.util.Config; +import mage.client.util.SettingsManager; +import mage.client.util.gui.GuiDisplayUtil; +import mage.view.CardsView; import mage.view.ExileView; +import mage.view.SimpleCardsView; +import org.mage.plugins.card.utils.impl.ImageManagerImpl; /** * * @author BetaSteward_at_googlemail.com */ -public class ExileZoneDialog extends MageDialog { +public class CardInfoWindowDialog extends MageDialog { - /** Creates new form ExileZoneDialog */ - public ExileZoneDialog() { + public static enum ShowType { REVEAL, LOOKED_AT, EXILE, OTHER }; + + private ShowType showType; + private boolean positioned; + + public CardInfoWindowDialog(ShowType showType, String name) { + this.title = name; + this.showType = showType; + this.positioned = false; this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); initComponents(); this.setModal(false); + switch(this.showType) { + case LOOKED_AT: + this.setFrameIcon(new ImageIcon(ImageManagerImpl.getInstance().getLookedAtImage())); + this.setClosable(true); + break; + case REVEAL: + this.setFrameIcon(new ImageIcon(ImageManagerImpl.getInstance().getRevealedImage())); + this.setClosable(true); + break; + case EXILE: + this.setFrameIcon(new ImageIcon(ImageManagerImpl.getInstance().getExileImage())); + break; + default: + // no icon yet + } + this.setTitelBarToolTip(name); } public void cleanUp() { cards.cleanUp(); } + public void loadCards(SimpleCardsView showCards, BigCard bigCard, UUID gameId) { + + boolean changed = cards.loadCards(showCards, bigCard, gameId); + if (showCards.size() > 0) { + show(); + if (changed) { + try { + if (!positioned) { + this.setIcon(false); + firstWindowPosition(); + } + } catch (PropertyVetoException ex) { + Logger.getLogger(CardInfoWindowDialog.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + else { + this.hideDialog(); + } + } + + public void loadCards(CardsView showCards, BigCard bigCard, UUID gameId) { + boolean changed = cards.loadCards(showCards, bigCard, gameId, null); + + if (showCards.size() > 0) { + show(); + if (changed) { + try { + if (!positioned) { + this.setIcon(false); + firstWindowPosition(); + } else { + + } + } catch (PropertyVetoException ex) { + Logger.getLogger(CardInfoWindowDialog.class.getName()).log(Level.SEVERE, null, ex); + } + } + + } + else { + this.hideDialog(); + } + } + + private void firstWindowPosition() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + if (!positioned) { + int width = CardInfoWindowDialog.this.getWidth(); + int height = CardInfoWindowDialog.this.getHeight(); + if (width > 0 && height > 0) { + positioned = true; + Point centered = SettingsManager.getInstance().getComponentPosition(width, height); + int xPos = centered.x / 2; + int yPos = centered.y / 2; + CardInfoWindowDialog.this.setLocation(xPos, yPos); + GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, CardInfoWindowDialog.this); + CardInfoWindowDialog.this.show(); + } + } + + + // ShowCardsDialog.this.setVisible(true); + } + }); + } + public void loadCards(ExileView exile, BigCard bigCard, UUID gameId) { - this.title = exile.getName(); - this.setTitelBarToolTip(exile.getName()); boolean changed = cards.loadCards(exile, bigCard, gameId, null); if (exile.size() > 0) { show(); @@ -70,7 +168,7 @@ public class ExileZoneDialog extends MageDialog { try { this.setIcon(false); } catch (PropertyVetoException ex) { - Logger.getLogger(ExileZoneDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(CardInfoWindowDialog.class.getName()).log(Level.SEVERE, null, ex); } } } 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 7e221e11e71..433aecd21cd 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java @@ -34,6 +34,16 @@ package mage.client.dialog; +import java.awt.Component; +import java.awt.Point; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.io.Serializable; +import java.util.Map; +import java.util.UUID; +import javax.swing.ImageIcon; +import javax.swing.JLayeredPane; +import javax.swing.SwingUtilities; import mage.cards.CardDimensions; import mage.client.MageFrame; import mage.client.cards.BigCard; @@ -44,29 +54,29 @@ import mage.client.util.gui.GuiDisplayUtil; import mage.view.CardsView; import mage.view.SimpleCardsView; import org.mage.card.arcane.CardPanel; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.io.Serializable; -import java.util.Map; -import java.util.UUID; +import org.mage.plugins.card.utils.impl.ImageManagerImpl; /** * @author BetaSteward_at_googlemail.com */ public class ShowCardsDialog extends MageDialog implements MouseListener { - private boolean reloaded = false; + + + // remember if this dialog was already auto positioned, so don't do it after the first time + private boolean positioned; + /** * Creates new form ShowCardsDialog */ public ShowCardsDialog() { + this.positioned = false; + this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); initComponents(); this.setModal(false); + } public void cleanUp() { @@ -88,7 +98,6 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { } public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal, Map options) { - this.reloaded = true; this.title = name; this.setTitelBarToolTip(name); cardArea.loadCards(showCards, bigCard, dimension, gameId, this); @@ -106,7 +115,7 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { if (getParent() != MageFrame.getDesktop() /*|| this.isClosed*/) { MageFrame.getDesktop().add(this, JLayeredPane.DEFAULT_LAYER); } - pack(); + pack(); this.revalidate(); this.repaint(); @@ -115,26 +124,21 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - int width = ShowCardsDialog.this.getWidth(); - int height = ShowCardsDialog.this.getWidth(); - if (width > 0 && height > 0) { - Point centered = SettingsManager.getInstance().getComponentPosition(width, height); - ShowCardsDialog.this.setLocation(centered.x, centered.y); - GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, ShowCardsDialog.this); + if (!positioned) { + int width = ShowCardsDialog.this.getWidth(); + int height = ShowCardsDialog.this.getHeight(); + if (width > 0 && height > 0) { + Point centered = SettingsManager.getInstance().getComponentPosition(width, height); + ShowCardsDialog.this.setLocation(centered.x, centered.y); + positioned = true; + GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, ShowCardsDialog.this); + } } ShowCardsDialog.this.setVisible(true); } }); } - public boolean isReloaded() { - return this.reloaded; - } - - public void clearReloaded() { - this.reloaded = false; - } - private void initComponents() { cardArea = new CardArea(); diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 029e928fd74..6837a7ed6e0 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -50,6 +50,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -85,7 +86,8 @@ import mage.client.components.HoverButton; import mage.client.components.MageComponents; import mage.client.components.ext.dlg.DialogManager; import mage.client.components.layout.RelativeLayout; -import mage.client.dialog.ExileZoneDialog; +import mage.client.dialog.CardInfoWindowDialog; +import mage.client.dialog.CardInfoWindowDialog.ShowType; import mage.client.dialog.PickChoiceDialog; import mage.client.dialog.PickNumberDialog; import mage.client.dialog.PickPileDialog; @@ -143,9 +145,9 @@ public final class GamePanel extends javax.swing.JPanel { private static final int X_PHASE_WIDTH = 55; private static final int STACK_MIN_CARDS_OFFSET_Y = 7; private final Map players = new HashMap<>(); - private final Map exiles = new HashMap<>(); - private final Map revealed = new HashMap<>(); - private final Map lookedAt = new HashMap<>(); + private final Map exiles = new HashMap<>(); + private final Map revealed = new HashMap<>(); + private final Map lookedAt = new HashMap<>(); private final ArrayList pickTarget = new ArrayList<>(); private UUID gameId; private UUID playerId; // playerId of the player @@ -255,15 +257,15 @@ public final class GamePanel extends javax.swing.JPanel { if (pickNumber != null) { pickNumber.removeDialog(); } - for (ExileZoneDialog exileDialog: exiles.values()) { + for (CardInfoWindowDialog exileDialog: exiles.values()) { exileDialog.cleanUp(); exileDialog.removeDialog(); } - for (ShowCardsDialog revealDialog: revealed.values()) { + for (CardInfoWindowDialog revealDialog: revealed.values()) { revealDialog.cleanUp(); revealDialog.removeDialog(); } - for (ShowCardsDialog lookedAtDialog: lookedAt.values()) { + for (CardInfoWindowDialog lookedAtDialog: lookedAt.values()) { lookedAtDialog.cleanUp(); lookedAtDialog.removeDialog(); } @@ -682,7 +684,7 @@ public final class GamePanel extends javax.swing.JPanel { for (ExileView exile: game.getExile()) { if (!exiles.containsKey(exile.getId())) { - ExileZoneDialog newExile = new ExileZoneDialog(); + CardInfoWindowDialog newExile = new CardInfoWindowDialog(ShowType.EXILE, exile.getName()); exiles.put(exile.getId(), newExile); MageFrame.getDesktop().add(newExile, JLayeredPane.MODAL_LAYER); newExile.show(); @@ -805,30 +807,53 @@ public final class GamePanel extends javax.swing.JPanel { currentStep.setLocation(prevPoint.x - 15, prevPoint.y); } } - + private void showRevealed(GameView game) { - for (RevealedView reveal: game.getRevealed()) { - if (!revealed.containsKey(reveal.getName())) { - ShowCardsDialog newReveal = new ShowCardsDialog(); - revealed.put(reveal.getName(), newReveal); - } - revealed.get(reveal.getName()).loadCards("Revealed " + reveal.getName(), reveal.getCards(), bigCard, Config.dimensions, gameId, false); + for (RevealedView revealView: game.getRevealed()) { + handleGameInfoWindow(revealed, ShowType.REVEAL, revealView.getName(), revealView.getCards()); } + removeClosedCardInfoWindows(revealed); } private void showLookedAt(GameView game) { - for (ShowCardsDialog looked: lookedAt.values()) { - looked.clearReloaded(); + for (LookedAtView lookedAtView: game.getLookedAt()) { + handleGameInfoWindow(lookedAt, ShowType.LOOKED_AT, lookedAtView.getName(), lookedAtView.getCards()); } - for (LookedAtView looked: game.getLookedAt()) { - if (!lookedAt.containsKey(looked.getName())) { - ShowCardsDialog newLookedAt = new ShowCardsDialog(); - lookedAt.put(looked.getName(), newLookedAt); + removeClosedCardInfoWindows(lookedAt); + } + + private void handleGameInfoWindow(Map windowMap, ShowType showType, String name, LinkedHashMap cardsView) { + CardInfoWindowDialog cardInfoWindowDialog; + if (!windowMap.containsKey(name)) { + cardInfoWindowDialog = new CardInfoWindowDialog(showType, name); + windowMap.put(name, cardInfoWindowDialog); + MageFrame.getDesktop().add(cardInfoWindowDialog, JLayeredPane.MODAL_LAYER); + } else { + cardInfoWindowDialog = windowMap.get(name); + } + + if (cardInfoWindowDialog != null && !cardInfoWindowDialog.isClosed()) { + switch(showType) { + case REVEAL: + cardInfoWindowDialog.loadCards((CardsView) cardsView, bigCard, gameId); + break; + case LOOKED_AT: + cardInfoWindowDialog.loadCards((SimpleCardsView) cardsView, bigCard, gameId); + break; } - lookedAt.get(looked.getName()).loadCards("Looked at by " + looked.getName(), looked.getCards(), bigCard, Config.dimensions, gameId, false); } } - + + private void removeClosedCardInfoWindows(Map windowMap) { + // Remove closed window objects from the maps + for (Iterator> iterator = windowMap.entrySet().iterator(); iterator.hasNext();) { + Map.Entry entry = iterator.next(); + if (entry.getValue().isClosed()) { + iterator.remove(); + } + } + } + public void ask(String question, GameView gameView, int messageId) { updateGame(gameView); this.feedbackPanel.getFeedback(FeedbackMode.QUESTION, question, false, null, messageId); diff --git a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java index 8252189c8c0..72847cca1ad 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java @@ -75,21 +75,26 @@ public class GuiDisplayUtil { Dimension screenDim = c.getToolkit().getScreenSize(); GraphicsConfiguration g = c.getGraphicsConfiguration(); if (g != null) { - Insets insets = c.getToolkit().getScreenInsets(g); - + Insets insets = c.getToolkit().getScreenInsets(g); + boolean setLocation = false; if (x + c.getWidth() > screenDim.width - insets.right) { x = (screenDim.width - insets.right) - c.getWidth(); + setLocation = true; } else if (x < insets.left) { x = insets.left; + setLocation = true; } if (y + c.getHeight() > screenDim.height - insets.bottom) { y = (screenDim.height - insets.bottom) - c.getHeight(); + setLocation = true; } else if (y < insets.top) { y = insets.top; + setLocation = true; + } + if (setLocation) { + c.setLocation(x, y); } - - c.setLocation(x, y); } else { System.out.println("GuiDisplayUtil::keepComponentInsideScreen -> no GraphicsConfiguration"); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java index 52138aa9969..63f2dcf900a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java @@ -15,6 +15,9 @@ public interface ImageManager { Image getTokenIconImage(); Image getTriggeredAbilityImage(); Image getActivatedAbilityImage(); + Image getLookedAtImage(); + Image getRevealedImage(); + Image getExileImage(); Image getCopyInformIconImage(); Image getCounterImageViolet(); Image getCounterImageRed(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java index 4ec5ac433db..9209be5d87a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java @@ -110,6 +110,33 @@ public class ImageManagerImpl implements ImageManager { return imageTokenIcon; } + @Override + public Image getLookedAtImage() { + if (lookedAtIcon == null) { + Image image = getImageFromResourceTransparent("/game/looked_at.png", Color.WHITE, new Rectangle(20, 20)); + lookedAtIcon = BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB); + } + return lookedAtIcon; + } + + @Override + public Image getRevealedImage() { + if (revealedIcon == null) { + Image image = getImageFromResourceTransparent("/game/revealed.png", Color.WHITE, new Rectangle(20, 20)); + revealedIcon = BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB); + } + return revealedIcon; + } + + @Override + public Image getExileImage() { + if (exileIcon == null) { + Image image = getImageFromResourceTransparent("/info/exile.png", Color.WHITE, new Rectangle(20, 20)); + exileIcon = BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB); + } + return exileIcon; + } + @Override public BufferedImage getTriggeredAbilityImage() { if (triggeredAbilityIcon == null) { @@ -374,6 +401,9 @@ public class ImageManagerImpl implements ImageManager { private static BufferedImage imageTokenIcon; private static BufferedImage triggeredAbilityIcon; private static BufferedImage activatedAbilityIcon; + private static BufferedImage lookedAtIcon; + private static BufferedImage revealedIcon; + private static BufferedImage exileIcon; private static BufferedImage imageCopyIcon; private static BufferedImage imageCounterGreen; private static BufferedImage imageCounterGrey; diff --git a/Mage.Client/src/main/resources/game/looked_at.png b/Mage.Client/src/main/resources/game/looked_at.png new file mode 100644 index 0000000000000000000000000000000000000000..0f679faa850fb2f2ac0dbc9d2039cf17992835c2 GIT binary patch literal 1274 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~I2#zdSQuKG7+JU&8oHWTnz$OenV1@znK}Z) z-q8f6*Cju>G&eP`1g19yq1O?oUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnv1@G!Lpb z1-Dx)aO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@ip6mYKkAZNNu*SiS4R$*s{r2F&%J5+8^EJ;Z_uWswRumilwCKr7ng0Fq87uF- zeE;tHBDtwAcY4iz?69PL_N+gj98L&`9OuyD`M%z;eQ8c~-ci|UfnD1hHn8tC(0O#R z>ukvkrmxcGfh~Gp7IURqd^>ykxR#Vaqwfo+v<1B?WdRMD<=>Q5<_OgipQ!WDcRMJc;gD<*9am7R9; zDa)?Z?%$VEj|)f~UN~iS|ArkeW!9ZuvP5QnhQoq?dnJ;0oo-oL_i5=F?!CQME2mGI nC7XEthwlIX^8c!8I1CsL7)CxhwYTIBs5J6)^>bP0l+XkK>7B`` literal 0 HcmV?d00001 diff --git a/Mage.Client/src/main/resources/game/revealed.png b/Mage.Client/src/main/resources/game/revealed.png new file mode 100644 index 0000000000000000000000000000000000000000..c004949400129e88fe86f1b12e9b1b2ac00027f2 GIT binary patch literal 3305 zcmVNc=P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000Uv 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 literal 0 HcmV?d00001 diff --git a/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java b/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java index 0b43412b383..cafa72133a0 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java @@ -255,7 +255,6 @@ public class GameSessionPlayer extends GameSessionWatcher { list.add(new LookedAtView(entry.getKey(), entry.getValue(), game)); } gameView.setLookedAt(list); - game.getState().clearLookedAt(playerId); return gameView; } diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 49aa03847d3..f9a2930de5f 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1201,7 +1201,6 @@ public abstract class GameImpl implements Game, Serializable { applyEffects(); state.getPlayers().resetPassed(); fireUpdatePlayersEvent(); - state.getRevealed().reset(); resetShortLivingLKI(); break; } else { @@ -1980,6 +1979,8 @@ public abstract class GameImpl implements Game, Serializable { } logger.trace("fireUpdatePlayersEvent"); tableEventSource.fireTableEvent(EventType.UPDATE, null, this); + getState().clearLookedAt(); + getState().clearRevealed(); } @Override diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index 83236ef4e69..6f5db885c19 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -445,8 +445,12 @@ public class GameState implements Serializable, Copyable { return lookedAt.get(playerId); } - public void clearLookedAt(UUID playerId) { - lookedAt.remove(playerId); + public void clearRevealed() { + revealed.clear(); + } + + public void clearLookedAt() { + lookedAt.clear(); } public Turn getTurn() {