mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 11:02:00 -08:00
GUI, deck: improved grid padding for better cards selection by mouse
This commit is contained in:
parent
8b4c722ae2
commit
a42a4f7239
2 changed files with 23 additions and 19 deletions
|
|
@ -114,12 +114,12 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
int cardWidth = getCardWidth();
|
int cardWidth = getCardWidth();
|
||||||
int cardHeight = getCardHeight();
|
int cardHeight = getCardHeight();
|
||||||
int cardTopHeight = CardRenderer.getCardTopHeight(cardWidth);
|
int cardTopHeight = CardRenderer.getCardTopHeight(cardWidth);
|
||||||
int dx = x % (cardWidth + GRID_PADDING);
|
int dx = x % (cardWidth + getGridPadding());
|
||||||
int col = x / (cardWidth + GRID_PADDING);
|
int col = x / (cardWidth + getGridPadding());
|
||||||
int gridWidth = cardGrid.isEmpty() ? 0 : cardGrid.get(0).size();
|
int gridWidth = cardGrid.isEmpty() ? 0 : cardGrid.get(0).size();
|
||||||
|
|
||||||
int countLabelHeight = getCountLabelHeight();
|
int countLabelHeight = getCountLabelHeight();
|
||||||
if (dx < GRID_PADDING && col < gridWidth) {
|
if (dx < getGridPadding() && col < gridWidth) {
|
||||||
// Which row to add to?
|
// Which row to add to?
|
||||||
int curY = countLabelHeight;
|
int curY = countLabelHeight;
|
||||||
int rowIndex = 0;
|
int rowIndex = 0;
|
||||||
|
|
@ -142,7 +142,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
// Insert between two columns
|
// Insert between two columns
|
||||||
insertArrow.setIcon(INSERT_COL_ICON);
|
insertArrow.setIcon(INSERT_COL_ICON);
|
||||||
insertArrow.setSize(64, 64);
|
insertArrow.setSize(64, 64);
|
||||||
insertArrow.setLocation((cardWidth + GRID_PADDING) * col + GRID_PADDING / 2 - 32, curY);
|
insertArrow.setLocation((cardWidth + getGridPadding()) * col + getGridPadding() / 2 - 32, curY);
|
||||||
} else {
|
} else {
|
||||||
// Clamp to a new col one after the current last one
|
// Clamp to a new col one after the current last one
|
||||||
col = Math.min(col, gridWidth);
|
col = Math.min(col, gridWidth);
|
||||||
|
|
@ -184,7 +184,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
// Position arrow
|
// Position arrow
|
||||||
insertArrow.setIcon(INSERT_ROW_ICON);
|
insertArrow.setIcon(INSERT_ROW_ICON);
|
||||||
insertArrow.setSize(64, 32);
|
insertArrow.setSize(64, 32);
|
||||||
insertArrow.setLocation((cardWidth + GRID_PADDING) * col + GRID_PADDING + cardWidth / 2 - 32, curY + stackInsertIndex * cardTopHeight - 32);
|
insertArrow.setLocation((cardWidth + getGridPadding()) * col + getGridPadding() + cardWidth / 2 - 32, curY + stackInsertIndex * cardTopHeight - 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -225,12 +225,12 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
int cardWidth = getCardWidth();
|
int cardWidth = getCardWidth();
|
||||||
int cardHeight = getCardHeight();
|
int cardHeight = getCardHeight();
|
||||||
int cardTopHeight = CardRenderer.getCardTopHeight(cardWidth);
|
int cardTopHeight = CardRenderer.getCardTopHeight(cardWidth);
|
||||||
int dx = x % (cardWidth + GRID_PADDING);
|
int dx = x % (cardWidth + getGridPadding());
|
||||||
int col = x / (cardWidth + GRID_PADDING);
|
int col = x / (cardWidth + getGridPadding());
|
||||||
int gridWidth = cardGrid.isEmpty() ? 0 : cardGrid.get(0).size();
|
int gridWidth = cardGrid.isEmpty() ? 0 : cardGrid.get(0).size();
|
||||||
|
|
||||||
int countLabelHeight = getCountLabelHeight();
|
int countLabelHeight = getCountLabelHeight();
|
||||||
if (dx < GRID_PADDING && col < gridWidth) {
|
if (dx < getGridPadding() && col < gridWidth) {
|
||||||
// Which row to add to?
|
// Which row to add to?
|
||||||
int curY = countLabelHeight;
|
int curY = countLabelHeight;
|
||||||
int rowIndex = 0;
|
int rowIndex = 0;
|
||||||
|
|
@ -575,7 +575,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
private static final int DEFAULT_COUNT_LABEL_HEIGHT = 40; // can contain 1 or 2 lines
|
private static final int DEFAULT_COUNT_LABEL_HEIGHT = 40; // can contain 1 or 2 lines
|
||||||
public static final int GRID_PADDING = 10;
|
public static final int GRID_PADDING = 20;
|
||||||
|
|
||||||
private static final ImageIcon INSERT_ROW_ICON = new ImageIcon(DragCardGrid.class.getClassLoader().getResource("editor_insert_row.png"));
|
private static final ImageIcon INSERT_ROW_ICON = new ImageIcon(DragCardGrid.class.getClassLoader().getResource("editor_insert_row.png"));
|
||||||
private static final ImageIcon INSERT_COL_ICON = new ImageIcon(DragCardGrid.class.getClassLoader().getResource("editor_insert_col.png"));
|
private static final ImageIcon INSERT_COL_ICON = new ImageIcon(DragCardGrid.class.getClassLoader().getResource("editor_insert_col.png"));
|
||||||
|
|
@ -1253,10 +1253,10 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
selectionPanel.setSize(x2 - x1, y2 - y1);
|
selectionPanel.setSize(x2 - x1, y2 - y1);
|
||||||
|
|
||||||
// First and last cols
|
// First and last cols
|
||||||
int col1 = x1 / (cardWidth + GRID_PADDING);
|
int col1 = x1 / (cardWidth + getGridPadding());
|
||||||
int col2 = x2 / (cardWidth + GRID_PADDING);
|
int col2 = x2 / (cardWidth + getGridPadding());
|
||||||
int offsetIntoCol2 = x2 % (cardWidth + GRID_PADDING);
|
int offsetIntoCol2 = x2 % (cardWidth + getGridPadding());
|
||||||
if (offsetIntoCol2 < GRID_PADDING) {
|
if (offsetIntoCol2 < getGridPadding()) {
|
||||||
--col2;
|
--col2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2350,7 +2350,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
} else {
|
} else {
|
||||||
String description = cardSort.getComparator().getCategoryName(stack.get(0));
|
String description = cardSort.getComparator().getCategoryName(stack.get(0));
|
||||||
DragCardGrid.updateCountLabel(countLabel, stack.size(), description);
|
DragCardGrid.updateCountLabel(countLabel, stack.size(), description);
|
||||||
countLabel.setLocation(GRID_PADDING + (cardWidth + GRID_PADDING) * colIndex, currentY - countLabelHeight);
|
countLabel.setLocation(getGridPadding() + (cardWidth + getGridPadding()) * colIndex, currentY - countLabelHeight);
|
||||||
countLabel.setSize(cardWidth, countLabelHeight);
|
countLabel.setSize(cardWidth, countLabelHeight);
|
||||||
countLabel.setVisible(true);
|
countLabel.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
@ -2362,7 +2362,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
for (int i = 0; i < stack.size(); ++i) {
|
for (int i = 0; i < stack.size(); ++i) {
|
||||||
CardView card = stack.get(i);
|
CardView card = stack.get(i);
|
||||||
MageCard view = cardViews.get(card.getId());
|
MageCard view = cardViews.get(card.getId());
|
||||||
int x = GRID_PADDING + (cardWidth + GRID_PADDING) * colIndex;
|
int x = getGridPadding() + (cardWidth + getGridPadding()) * colIndex;
|
||||||
int y = currentY + i * cardTopHeight;
|
int y = currentY + i * cardTopHeight;
|
||||||
view.setCardBounds(x, y, cardWidth, cardHeight);
|
view.setCardBounds(x, y, cardWidth, cardHeight);
|
||||||
cardContent.setLayer(view, layerIndex++);
|
cardContent.setLayer(view, layerIndex++);
|
||||||
|
|
@ -2370,14 +2370,18 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the max stack size for this row and the max width
|
// Update the max stack size for this row and the max width
|
||||||
maxWidth = Math.max(maxWidth, GRID_PADDING + (GRID_PADDING + cardWidth) * gridRow.size());
|
maxWidth = Math.max(maxWidth, getGridPadding() + (getGridPadding() + cardWidth) * gridRow.size());
|
||||||
maxStackSize.set(rowIndex, rowMaxStackSize);
|
maxStackSize.set(rowIndex, rowMaxStackSize);
|
||||||
currentY += (cardTopHeight * (rowMaxStackSize - 1) + cardHeight) + countLabelHeight;
|
currentY += (cardTopHeight * (rowMaxStackSize - 1) + cardHeight) + countLabelHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize card container
|
// Resize card container
|
||||||
cardContent.setPreferredSize(new Dimension(maxWidth, currentY - countLabelHeight + GRID_PADDING));
|
cardContent.setPreferredSize(new Dimension(maxWidth, currentY - countLabelHeight + getGridPadding()));
|
||||||
//cardContent.setSize(maxWidth, currentY - COUNT_LABEL_HEIGHT + GRID_PADDING);
|
//cardContent.setSize(maxWidth, currentY - COUNT_LABEL_HEIGHT + getGridPadding());
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getGridPadding() {
|
||||||
|
return Math.max(GRID_PADDING, Math.round(cardSizeMod * GRID_PADDING * GUISizeHelper.dialogGuiScale));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getCountLabelHeight() {
|
public static int getCountLabelHeight() {
|
||||||
|
|
|
||||||
|
|
@ -455,7 +455,7 @@ public class DeckGeneratorPool {
|
||||||
|
|
||||||
// Check we have exactly the right amount of cards for a deck.
|
// Check we have exactly the right amount of cards for a deck.
|
||||||
if (deckCards.size() != nonLandSize) {
|
if (deckCards.size() != nonLandSize) {
|
||||||
throw new IllegalStateException("Not enough cards found to generate deck.");
|
logger.info("Can't generate full deck for selected settings - try again or choose more sets and less colors");
|
||||||
}
|
}
|
||||||
// Return the fixed amount
|
// Return the fixed amount
|
||||||
return deckCards;
|
return deckCards;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue