GUI: hand - added default card sorting on mulligan (lands > other > creatures; mana value, name);

This commit is contained in:
Oleg Agafonov 2023-12-14 22:13:07 +04:00
parent 525ca9a1a2
commit 10641f8d63
10 changed files with 188 additions and 35 deletions

View file

@ -127,10 +127,6 @@
}
}
public boolean loadCards(SimpleCardsView cardsView, BigCard bigCard, UUID gameId) {
return loadCards(CardsViewUtil.convertSimple(cardsView), bigCard, gameId, true);
}
public boolean loadCards(CardsView cardsView, BigCard bigCard, UUID gameId, boolean revertOrder) {
boolean changed = false;

View file

@ -1,14 +1,11 @@
package mage.client.dialog;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyVetoException;
import java.util.*;
import javax.swing.*;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.plaf.basic.BasicInternalFrameUI;
import mage.cards.MageCard;
import mage.client.cards.BigCard;
@ -117,7 +114,7 @@ public class CardInfoWindowDialog extends MageDialog implements MageDesktopIconi
cards.changeGUISize();
}
public void loadCards(ExileView exile, BigCard bigCard, UUID gameId) {
public void loadCardsAndShow(ExileView exile, BigCard bigCard, UUID gameId) {
boolean changed = cards.loadCards(exile, bigCard, gameId, true);
String titel = name + " (" + exile.size() + ')';
setTitle(titel);
@ -136,16 +133,8 @@ public class CardInfoWindowDialog extends MageDialog implements MageDesktopIconi
}
}
public void loadCards(SimpleCardsView showCards, BigCard bigCard, UUID gameId) {
cards.loadCards(showCards, bigCard, gameId);
showAndPositionWindow();
}
public void loadCards(CardsView showCards, BigCard bigCard, UUID gameId) {
loadCards(showCards, bigCard, gameId, true);
}
public void loadCards(CardsView showCards, BigCard bigCard, UUID gameId, boolean revertOrder) {
// TODO: remove oudated code with revertOrder (wait new release and delete if no bug reports for diff windows with cards, 2023-12-14)
public void loadCardsAndShow(CardsView showCards, BigCard bigCard, UUID gameId, boolean revertOrder) {
cards.loadCards(showCards, bigCard, gameId, revertOrder);
// additional info for grave windows

View file

@ -72,8 +72,8 @@ public final class GamePanel extends javax.swing.JPanel {
private static final String CMD_AUTO_ORDER_NAME_LAST = "cmdAutoOrderNameLast";
private static final String CMD_AUTO_ORDER_RESET_ALL = "cmdAutoOrderResetAll";
private final Map<UUID, PlayAreaPanel> players = new HashMap<>();
private final Map<UUID, Boolean> playersWhoLeft = new HashMap<>();
private final Map<UUID, PlayAreaPanel> players = new LinkedHashMap<>();
private final Map<UUID, Boolean> playersWhoLeft = new LinkedHashMap<>();
// non modal frames
private final Map<UUID, CardInfoWindowDialog> exiles = new HashMap<>();
@ -103,7 +103,7 @@ public final class GamePanel extends javax.swing.JPanel {
private boolean menuNameSet = false;
private boolean handCardsOfOpponentAvailable = false;
private Map<String, Card> loadedCards = new HashMap<>();
private final Map<String, Card> loadedCards = new HashMap<>();
private int storedHeight;
private Map<String, HoverButton> hoverButtons;
@ -893,7 +893,7 @@ public final class GamePanel extends javax.swing.JPanel {
if (windowDialog.isClosed()) {
graveyardWindows.remove(player.getName());
} else {
windowDialog.loadCards(player.getGraveyard(), bigCard, gameId, false);
windowDialog.loadCardsAndShow(player.getGraveyard(), bigCard, gameId, false);
}
}
@ -904,7 +904,7 @@ public final class GamePanel extends javax.swing.JPanel {
if (windowDialog.isClosed()) {
sideboardWindows.remove(player.getName());
} else {
windowDialog.loadCards(player.getSideboard(), bigCard, gameId, false);
windowDialog.loadCardsAndShow(player.getSideboard(), bigCard, gameId, false);
}
}
@ -959,7 +959,7 @@ public final class GamePanel extends javax.swing.JPanel {
MageFrame.getDesktop().add(exileWindow, JLayeredPane.PALETTE_LAYER);
exileWindow.show();
}
exileWindow.loadCards(exile, bigCard, gameId);
exileWindow.loadCardsAndShow(exile, bigCard, gameId);
}
// update open or remove closed card hints windows
@ -1334,7 +1334,7 @@ public final class GamePanel extends javax.swing.JPanel {
graveyardWindows.put(playerName, newGraveyard);
MageFrame.getDesktop().add(newGraveyard, JLayeredPane.PALETTE_LAYER);
// use graveyards to sync selection (don't use player data here)
newGraveyard.loadCards(graveyards.get(playerName), bigCard, gameId, false);
newGraveyard.loadCardsAndShow(graveyards.get(playerName), bigCard, gameId, false);
}
private void clearClosedCardHintsWindows() {
@ -1387,7 +1387,7 @@ public final class GamePanel extends javax.swing.JPanel {
sideboardWindows.put(playerView.getName(), windowDialog);
MageFrame.getDesktop().add(windowDialog, JLayeredPane.PALETTE_LAYER);
// use sideboards to sync selection (don't use player data here)
windowDialog.loadCards(sideboards.get(playerView.getName()), bigCard, gameId, false);
windowDialog.loadCardsAndShow(sideboards.get(playerView.getName()), bigCard, gameId, false);
}
public void openTopLibraryWindow(String playerName) {
@ -1448,10 +1448,10 @@ public final class GamePanel extends javax.swing.JPanel {
case REVEAL:
case REVEAL_TOP_LIBRARY:
case COMPANION:
cardInfoWindowDialog.loadCards((CardsView) cardsView, bigCard, gameId);
cardInfoWindowDialog.loadCardsAndShow((CardsView) cardsView, bigCard, gameId, false);
break;
case LOOKED_AT:
cardInfoWindowDialog.loadCards((SimpleCardsView) cardsView, bigCard, gameId);
cardInfoWindowDialog.loadCardsAndShow(CardsViewUtil.convertSimple((SimpleCardsView) cardsView), bigCard, gameId, false);
break;
default:
break;

View file

@ -66,7 +66,7 @@ public class HandPanel extends JPanel {
}
public void loadCards(CardsView cards, BigCard bigCard, UUID gameId) {
hand.loadCards(cards, bigCard, gameId, true);
hand.loadCards(cards, bigCard, gameId, false);
}
private JPanel jPanel;