mirror of
https://github.com/correl/mage.git
synced 2024-11-15 11:09:30 +00:00
* Saved position and size of choice window during a game session.
This commit is contained in:
parent
bc990ad24a
commit
4cf21739c4
4 changed files with 76 additions and 27 deletions
|
@ -42,6 +42,7 @@ import mage.choices.Choice;
|
|||
import mage.client.MageFrame;
|
||||
import mage.client.util.SettingsManager;
|
||||
import mage.client.util.gui.GuiDisplayUtil;
|
||||
import mage.client.util.gui.MageDialogState;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -57,7 +58,7 @@ public class PickChoiceDialog extends MageDialog {
|
|||
Choice choice;
|
||||
boolean autoSelect;
|
||||
|
||||
public void showDialog(Choice choice, UUID objectId) {
|
||||
public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState) {
|
||||
this.lblMessage.setText("<html>" + choice.getMessage());
|
||||
this.choice = choice;
|
||||
this.autoSelect = false;
|
||||
|
@ -77,10 +78,15 @@ public class PickChoiceDialog extends MageDialog {
|
|||
}
|
||||
|
||||
MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER);
|
||||
|
||||
Point centered = SettingsManager.getInstance().getComponentPosition(getWidth(), getHeight());
|
||||
this.setLocation(centered.x, centered.y);
|
||||
GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this);
|
||||
if (mageDialogState != null) {
|
||||
mageDialogState.setStateToDialog(this);
|
||||
|
||||
} else {
|
||||
Point centered = SettingsManager.getInstance().getComponentPosition(getWidth(), getHeight());
|
||||
this.setLocation(centered.x, centered.y);
|
||||
GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this);
|
||||
}
|
||||
|
||||
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
|
|
@ -99,6 +99,7 @@ import mage.client.util.Config;
|
|||
import mage.client.util.GameManager;
|
||||
import mage.client.util.audio.AudioManager;
|
||||
import mage.client.util.gui.ArrowBuilder;
|
||||
import mage.client.util.gui.MageDialogState;
|
||||
import mage.constants.Constants;
|
||||
import mage.constants.EnlargeMode;
|
||||
import mage.constants.PhaseStep;
|
||||
|
@ -154,15 +155,16 @@ public final class GamePanel extends javax.swing.JPanel {
|
|||
private String chosenHandKey = "You";
|
||||
private boolean smallMode = false;
|
||||
private boolean initialized = false;
|
||||
private int lastUpdatedTurn;
|
||||
|
||||
private boolean menuNameSet = false;
|
||||
private boolean handCardsOfOpponentAvailable = false;
|
||||
|
||||
private Map<String, Card> loadedCards = new HashMap<>();
|
||||
|
||||
private int storedHeight;
|
||||
|
||||
private int storedHeight;
|
||||
private Map<String, HoverButton> hoverButtons;
|
||||
|
||||
private MageDialogState choiceWindowState;
|
||||
|
||||
public GamePanel() {
|
||||
initComponents();
|
||||
|
@ -455,7 +457,6 @@ public final class GamePanel extends javax.swing.JPanel {
|
|||
public synchronized void init(GameView game) {
|
||||
addPlayers(game);
|
||||
updateGame(game);
|
||||
lastUpdatedTurn = game.getTurn();
|
||||
}
|
||||
|
||||
private void addPlayers(GameView game) {
|
||||
|
@ -795,27 +796,13 @@ public final class GamePanel extends javax.swing.JPanel {
|
|||
}
|
||||
|
||||
private void showRevealed(GameView game) {
|
||||
// List<String> toRemove = new ArrayList<String>();
|
||||
// toRemove.addAll(revealed.keySet());
|
||||
// for (ShowCardsDialog reveal: revealed.values()) {
|
||||
// reveal.clearReloaded(); // seems not to be used
|
||||
// }
|
||||
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(), CardsViewUtil.convertSimple(reveal.getCards(), loadedCards), bigCard, Config.dimensions, gameId, false);
|
||||
// toRemove.add(reveal.getName());
|
||||
}
|
||||
// for (String revealName: toRemove) {
|
||||
// ShowCardsDialog revealDialog = revealed.get(revealName);
|
||||
// if (revealDialog != null) {
|
||||
// revealed.remove(revealName);
|
||||
// revealDialog.cleanUp();
|
||||
// revealDialog.removeDialog();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private void showLookedAt(GameView game) {
|
||||
|
@ -967,7 +954,7 @@ public final class GamePanel extends javax.swing.JPanel {
|
|||
public void getChoice(Choice choice, UUID objectId) {
|
||||
hideAll();
|
||||
PickChoiceDialog pickChoice = new PickChoiceDialog();
|
||||
pickChoice.showDialog(choice, objectId);
|
||||
pickChoice.showDialog(choice, objectId,choiceWindowState);
|
||||
if (choice.isKeyChoice()) {
|
||||
if (pickChoice.isAutoSelect()) {
|
||||
session.sendPlayerString(gameId, "#" + choice.getChoiceKey());
|
||||
|
@ -977,6 +964,7 @@ public final class GamePanel extends javax.swing.JPanel {
|
|||
} else {
|
||||
session.sendPlayerString(gameId, choice.getChoice());
|
||||
}
|
||||
choiceWindowState = new MageDialogState(pickChoice);
|
||||
pickChoice.removeDialog();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,10 +12,9 @@ import org.mage.card.arcane.UI;
|
|||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import mage.client.dialog.MageDialog;
|
||||
import mage.constants.Rarity;
|
||||
import org.mage.plugins.card.utils.impl.ImageManagerImpl;
|
||||
|
||||
public class GuiDisplayUtil {
|
||||
private static final Font cardNameFont = new Font("Calibri", Font.BOLD, 15);
|
||||
|
@ -27,7 +26,7 @@ public class GuiDisplayUtil {
|
|||
public int basicTextLength;
|
||||
public ArrayList<String> lines;
|
||||
}
|
||||
|
||||
|
||||
public static JXPanel getDescription(CardView card, int width, int height) {
|
||||
JXPanel descriptionPanel = new JXPanel();
|
||||
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.client.util.gui;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import mage.client.dialog.MageDialog;
|
||||
|
||||
/**
|
||||
* Holds the position and size of MageDialogs.
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class MageDialogState {
|
||||
|
||||
Dimension dimension;
|
||||
int xPos;
|
||||
int yPos;
|
||||
|
||||
public MageDialogState(MageDialog mageDialog) {
|
||||
this.dimension = mageDialog.getSize();
|
||||
this.xPos = mageDialog.getX();
|
||||
this.yPos = mageDialog.getY();
|
||||
}
|
||||
|
||||
public boolean setStateToDialog(MageDialog mageDialog) {
|
||||
mageDialog.setSize(dimension);
|
||||
mageDialog.setLocation(xPos, yPos);
|
||||
GuiDisplayUtil.keepComponentInsideScreen(xPos, yPos, mageDialog);
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue