diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index bfaea491e08..77e0556e306 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -633,8 +633,6 @@ public class Game { onePlayerHasTimeShifted = false; } - System.out.println(validRarities.size()); - CardRarity anteRarity = validRarities.get(new Random().nextInt(validRarities.size())); System.out.println("Rarity chosen for ante: " + anteRarity.name()); diff --git a/forge-gui-desktop/src/main/java/forge/gui/BoxedProductCardListViewer.java b/forge-gui-desktop/src/main/java/forge/gui/BoxedProductCardListViewer.java index b12e05abc35..41a60064180 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/BoxedProductCardListViewer.java +++ b/forge-gui-desktop/src/main/java/forge/gui/BoxedProductCardListViewer.java @@ -20,6 +20,8 @@ package forge.gui; import forge.game.card.Card; import forge.item.PaperCard; +import forge.model.FModel; +import forge.properties.ForgePreferences.FPref; import forge.toolbox.FButton; import forge.toolbox.FLabel; import forge.toolbox.FScrollPane; @@ -102,7 +104,13 @@ public class BoxedProductCardListViewer extends FDialog { this.picture.setOpaque(false); this.setTitle(title); - this.setSize(720, 374); + + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.setSize(1200, 825); + } else { + this.setSize(720, 374); + } + this.addWindowFocusListener(new CardListFocuser()); FButton btnOK = new FButton("Next Pack"); @@ -123,11 +131,20 @@ public class BoxedProductCardListViewer extends FDialog { }); this.add(new FLabel.Builder().text(message).build(), "cell 0 0, spanx 3, gapbottom 4"); - this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, growy, pushy, ax c"); - this.add(this.picture, "cell 1 1, w 225, growy, pushy, ax c"); - this.add(this.detail, "cell 2 1, w 225, growy, pushy, ax c"); - this.add(btnOK, "cell 1 2, w 150, h 26, ax c, gaptop 6"); - this.add(btnCancel, "cell 2 2, w 205, h 26, ax c, gaptop 6"); + + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, h 450, ax c"); + this.add(this.picture, "cell 1 1, w 480, growy, pushy, ax c"); + this.add(this.detail, "cell 2 1, w 320, h 500, ax c"); + this.add(btnOK, "cell 1 2, w 150, h 40, ax c, gaptop 6"); + this.add(btnCancel, "cell 2 2, w 205, h 40, ax c, gaptop 6"); + } else { + this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, growy, pushy, ax c"); + this.add(this.picture, "cell 1 1, w 225, growy, pushy, ax c"); + this.add(this.detail, "cell 2 1, w 225, growy, pushy, ax c"); + this.add(btnOK, "cell 1 2, w 150, h 26, ax c, gaptop 6"); + this.add(btnCancel, "cell 2 2, w 205, h 26, ax c, gaptop 6"); + } // selection is here this.jList.getSelectionModel().addListSelectionListener(new SelListener()); diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java index 18073b4cb1b..339d8b00f6c 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java +++ b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java @@ -20,6 +20,8 @@ package forge.gui; import forge.game.card.Card; import forge.item.PaperCard; +import forge.model.FModel; +import forge.properties.ForgePreferences.FPref; import forge.toolbox.FButton; import forge.toolbox.FLabel; import forge.toolbox.FScrollPane; @@ -100,7 +102,13 @@ public class CardListViewer extends FDialog { this.picture.setOpaque(false); this.setTitle(title); - this.setSize(720, 374); + + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.setSize(1200, 825); + } else { + this.setSize(720, 374); + } + this.addWindowFocusListener(new CardListFocuser()); FButton btnOK = new FButton("OK"); @@ -112,10 +120,18 @@ public class CardListViewer extends FDialog { }); this.add(new FLabel.Builder().text(message).build(), "cell 0 0, spanx 3, gapbottom 4"); - this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, growy, pushy, ax c"); - this.add(this.picture, "cell 1 1, w 225, growy, pushy, ax c"); - this.add(this.detail, "cell 2 1, w 225, growy, pushy, ax c"); - this.add(btnOK, "cell 1 2, w 150, h 26, ax c, gaptop 6"); + + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, h 450, ax c"); + this.add(this.picture, "cell 1 1, w 480, growy, pushy, ax c"); + this.add(this.detail, "cell 2 1, w 320, h 500, ax c"); + this.add(btnOK, "cell 1 2, w 150, h 40, ax c, gaptop 6"); + } else { + this.add(new FScrollPane(this.jList, true), "cell 0 1, w 225, growy, pushy, ax c"); + this.add(this.picture, "cell 1 1, w 225, growy, pushy, ax c"); + this.add(this.detail, "cell 2 1, w 225, growy, pushy, ax c"); + this.add(btnOK, "cell 1 2, w 150, h 26, ax c, gaptop 6"); + } // selection is here this.jList.getSelectionModel().addListSelectionListener(new SelListener()); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index d335354f66c..9cb1835fdff 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -71,6 +71,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbAnteMatchRarity(), FPref.UI_ANTE_MATCH_RARITY)); lstControls.add(Pair.of(view.getCbManaBurn(), FPref.UI_MANABURN)); lstControls.add(Pair.of(view.getCbScaleLarger(), FPref.UI_SCALE_LARGER)); + lstControls.add(Pair.of(view.getCbLargeCardViewers(), FPref.UI_LARGE_CARD_VIEWERS)); lstControls.add(Pair.of(view.getCbRandomArtInPools(), FPref.UI_RANDOM_ART_IN_POOLS)); lstControls.add(Pair.of(view.getCbEnforceDeckLegality(), FPref.ENFORCE_DECK_LEGALITY)); lstControls.add(Pair.of(view.getCbCloneImgSource(), FPref.UI_CLONE_MODE_SOURCE)); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java index 1c7da0efbe4..416f143cc19 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java @@ -68,6 +68,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbEnforceDeckLegality = new OptionsCheckBox("Deck Conformance"); private final JCheckBox cbCloneImgSource = new OptionsCheckBox("Clones Use Original Card Art"); private final JCheckBox cbScaleLarger = new OptionsCheckBox("Scale Image Larger"); + private final JCheckBox cbLargeCardViewers = new OptionsCheckBox("Use Large Card Viewers"); private final JCheckBox cbDisplayFoil = new OptionsCheckBox("Display Foil Overlay"); private final JCheckBox cbRandomFoil = new OptionsCheckBox("Random Foil"); private final JCheckBox cbRandomArtInPools = new OptionsCheckBox("Randomize Card Art in Generated Card Pools"); @@ -192,6 +193,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbScaleLarger, regularConstraints); pnlPrefs.add(new NoteLabel("Allows card pictures to be expanded larger than their original size."), regularConstraints); + pnlPrefs.add(cbLargeCardViewers, regularConstraints); + pnlPrefs.add(new NoteLabel("Makes all card viewers much larger for use with high resolution images. Will not fit on smaller screens."), regularConstraints); + pnlPrefs.add(cbRandomArtInPools, regularConstraints); pnlPrefs.add(new NoteLabel("Generates cards with random art in generated limited mode card pools."), regularConstraints); @@ -455,6 +459,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbScaleLarger; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbLargeCardViewers() { + return cbLargeCardViewers; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbRandomArtInPools() { return cbRandomArtInPools; diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java index 3e256d238c6..07d56028544 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java @@ -76,6 +76,7 @@ public class QuestWinLose extends ControlWinLose { private static final String CONSTRAINTS_TITLE = "w 95%!, gap 0 0 20px 10px"; private static final String CONSTRAINTS_TEXT = "w 95%!,, h 180px!, gap 0 0 0 20px"; private static final String CONSTRAINTS_CARDS = "w 95%!, h 330px!, gap 0 0 0 20px"; + private static final String CONSTRAINTS_CARDS_LARGE = "w 95%!, h 600px!, gap 0 0 0 20px"; private final transient QuestController qData; private final transient QuestEvent qEvent; @@ -207,12 +208,20 @@ public class QuestWinLose extends ControlWinLose { if (cardsWon != null && !cardsWon.isEmpty()) { this.getView().getPnlCustom().add(new TitleLabel("Spoils! These cards will be available in your card pool after this ante match:"), QuestWinLose.CONSTRAINTS_TITLE); - this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsWon), QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsWon), QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsWon), QuestWinLose.CONSTRAINTS_CARDS); + } } if (cardsLost != null && !cardsLost.isEmpty()) { this.getView().getPnlCustom().add(new TitleLabel("Looted! You lost the following cards in an ante match:"), QuestWinLose.CONSTRAINTS_TITLE); - this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsLost), QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsLost), QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.getView().getPnlCustom().add(new QuestWinLoseCardViewer(cardsLost), QuestWinLose.CONSTRAINTS_CARDS); + } } } @@ -303,7 +312,8 @@ public class QuestWinLose extends ControlWinLose { .getPref(QPref.REWARDS_WINS_MULTIPLIER)) * qData.getAchievements().getWin())); credBase += creditsForPreviousWins; - sb.append("Bonus for previous wins: ").append(creditsForPreviousWins).append(" credits.
"); + sb.append("Bonus for previous wins: ").append(creditsForPreviousWins).append( + creditsForPreviousWins != 1 ? " credits.
" : " credit.
"); // Gameplay bonuses (for each game win) boolean hasNeverLost = true; @@ -470,7 +480,11 @@ public class QuestWinLose extends ControlWinLose { final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(cardsWon); this.view.getPnlCustom().add(this.lblTemp1, QuestWinLose.CONSTRAINTS_TITLE); - this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } } /** @@ -488,7 +502,11 @@ public class QuestWinLose extends ControlWinLose { final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(cardsWon); this.view.getPnlCustom().add(this.lblTemp1, QuestWinLose.CONSTRAINTS_TITLE); - this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } } /** @@ -566,7 +584,11 @@ public class QuestWinLose extends ControlWinLose { final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(cardsWon); this.view.getPnlCustom().add(this.lblTemp1, QuestWinLose.CONSTRAINTS_TITLE); - this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } } } @@ -638,7 +660,11 @@ public class QuestWinLose extends ControlWinLose { qData.getCards().addAllCards(boosterCards); final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(boosterCards); this.view.getPnlCustom().add(new TitleLabel("Extra " + ii.getName() + "!"), QuestWinLose.CONSTRAINTS_TITLE); - this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } } } else if (ii instanceof IQuestRewardCard) { @@ -655,7 +681,11 @@ public class QuestWinLose extends ControlWinLose { this.lblTemp1 = new TitleLabel(message); this.view.getPnlCustom().add(this.lblTemp1, QuestWinLose.CONSTRAINTS_TITLE); } - this.getView().getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.getView().getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.getView().getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } qData.getCards().addAllCards(cardsWon); } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLoseCardViewer.java b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLoseCardViewer.java index ed270e51e84..36f8ec984ca 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLoseCardViewer.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLoseCardViewer.java @@ -21,6 +21,8 @@ import forge.game.card.Card; import forge.gui.CardDetailPanel; import forge.gui.CardPicturePanel; import forge.item.PaperCard; +import forge.model.FModel; +import forge.properties.ForgePreferences.FPref; import forge.toolbox.FList; import forge.toolbox.FPanel; import forge.toolbox.FScrollPane; @@ -71,9 +73,16 @@ public class QuestWinLoseCardViewer extends FPanel { picture.setOpaque(false); this.setLayout(new MigLayout("insets 0, gap 0")); - this.add(scroller, "w 32%!, h 98%!, gap 1% 1% 1% 1%"); - this.add(this.picture, "w 32%!, h 98%!, gap 0 0 1% 1%"); - this.add(this.detail, "w 32%!, h 98%!, gap 1% 1% 1% 1%"); + + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.add(scroller, "w 23%!, h 98%!, gap 1% 1% 1% 1%"); + this.add(this.picture, "w 48%!, h 98%!, gap 0 0 1% 1%"); + this.add(this.detail, "w 23%!, h 98%!, gap 1% 1% 1% 1%"); + } else { + this.add(scroller, "w 32%!, h 98%!, gap 1% 1% 1% 1%"); + this.add(this.picture, "w 32%!, h 98%!, gap 0 0 1% 1%"); + this.add(this.detail, "w 32%!, h 98%!, gap 1% 1% 1% 1%"); + } // selection is here this.jList.getSelectionModel().addListSelectionListener(new SelListener()); diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 5525ebbc75d..7f74eb50e81 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -49,6 +49,7 @@ public class ForgePreferences extends PreferencesStore { UI_OPEN_PACKS_INDIV ("false"), UI_UPLOAD_DRAFT ("false"), UI_SCALE_LARGER ("true"), + UI_LARGE_CARD_VIEWERS ("false"), UI_RANDOM_ART_IN_POOLS ("true"), UI_COMPACT_PROMPT ("false"), UI_CARD_SIZE ("small"),