diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index e53d23cc062..787c3597ee5 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -144,15 +144,21 @@ public class GuiDesktop implements IGuiBase { } @Override - public ISkinImage createLayeredImage(final FSkinProp background, final String overlayFilename, final float opacity) { + public ISkinImage createLayeredImage(final PaperCard paperCard, final FSkinProp background, final String overlayFilename, final float opacity) { final BufferedImage image = new BufferedImage(background.getWidth(), background.getHeight(), BufferedImage.TYPE_INT_ARGB); final Graphics2D g = image.createGraphics(); final FSkin.SkinImage backgroundImage = FSkin.getImage(background); FSkin.drawImage(g, backgroundImage, 0, 0, background.getWidth(), background.getHeight()); + final int cardImageWidth = 90; + final int cardImageHeight = 128; if (FileUtil.doesFileExist(overlayFilename)) { final ImageIcon overlay = new ImageIcon(overlayFilename); g.drawImage(overlay.getImage(), (background.getWidth() - overlay.getIconWidth()) / 2, (background.getHeight() - overlay.getIconHeight()) / 2, overlay.getIconWidth(), overlay.getIconHeight(), null); + } else if (paperCard != null) { + BufferedImage cardImage = ImageCache.scaleImage(paperCard.getCardImageKey(), cardImageWidth, cardImageHeight, false, null); + if (cardImage != null) + g.drawImage(cardImage, (background.getWidth() - cardImageWidth) / 2, (background.getHeight() - cardImageHeight) / 4, cardImageWidth, cardImageHeight, null); } return new FSkin.UnskinnedIcon(image, opacity); } diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index e1056a21896..b1989827143 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -123,11 +123,13 @@ public class GuiMobile implements IGuiBase { } @Override - public ISkinImage createLayeredImage(final FSkinProp background, final String overlayFilename, final float opacity) { + public ISkinImage createLayeredImage(final PaperCard paperCard, final FSkinProp background, final String overlayFilename, final float opacity) { return new FBufferedImage(background.getWidth(), background.getHeight(), opacity) { @Override protected void draw(final Graphics g, final float w, final float h) { g.drawImage(FSkin.getImages().get(background), 0, 0, background.getWidth(), background.getHeight()); + final float cardImageWidth = 90f; + final float cardImageHeight = 128f; if (FileUtil.doesFileExist(overlayFilename)) { try { @@ -135,6 +137,10 @@ public class GuiMobile implements IGuiBase { g.drawImage(overlay, (background.getWidth() - overlay.getWidth()) / 2, (background.getHeight() - overlay.getHeight()) / 2, overlay.getWidth(), overlay.getHeight()); } catch (final Exception e) { } + } else if (paperCard != null) { + Texture cardImage = ImageCache.getImage(paperCard.getCardImageKey(), false); + if (cardImage != null) + g.drawCardRoundRect(cardImage, null, (background.getWidth() - cardImageWidth) / 2, (background.getHeight() - cardImageHeight) / 3.8f, cardImageWidth, cardImageHeight, false, false); } Gdx.graphics.requestRendering(); //ensure image appears right away diff --git a/forge-gui-mobile/src/forge/screens/limited/LoadSealedScreen.java b/forge-gui-mobile/src/forge/screens/limited/LoadSealedScreen.java index e4deac79da4..27a4f1f176e 100644 --- a/forge-gui-mobile/src/forge/screens/limited/LoadSealedScreen.java +++ b/forge-gui-mobile/src/forge/screens/limited/LoadSealedScreen.java @@ -117,6 +117,9 @@ public class LoadSealedScreen extends LaunchScreen { } final DeckGroup opponentDecks = FModel.getDecks().getSealed().get(humanDeck.getName()); + if (opponentDecks == null || opponentDecks.isEmpty()) { + throw new IllegalStateException("Draft: Opponent decks is null!"); + } final Deck aiDeck = opponentDecks.getAiDecks().get(aiIndex - 1); if (aiDeck == null) { throw new IllegalStateException("Draft: Computer deck is null!"); diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkersScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkersScreen.java index c59067ac3b2..43ace226016 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkersScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPlaneswalkersScreen.java @@ -65,7 +65,7 @@ public class ConquestPlaneswalkersScreen extends FScreen { private void updatePreview() { PaperCard planeswalker = lstPlaneswalkers.getSelectedItem(); if (planeswalker != null) { - tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName())); + tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName(), planeswalker)); } else { tokenDisplay.setIcon(null); diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/NewConquestScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/NewConquestScreen.java index 5cfbaa7fb21..bf28180e58e 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/NewConquestScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/NewConquestScreen.java @@ -192,7 +192,7 @@ public class NewConquestScreen extends MultiStepWizardScreen options, int defaultOption); diff --git a/forge-gui/src/main/java/forge/localinstance/achievements/Achievement.java b/forge-gui/src/main/java/forge/localinstance/achievements/Achievement.java index 17cfd36e131..3a4d10a65e8 100644 --- a/forge-gui/src/main/java/forge/localinstance/achievements/Achievement.java +++ b/forge-gui/src/main/java/forge/localinstance/achievements/Achievement.java @@ -4,6 +4,7 @@ import forge.game.Game; import forge.game.player.Player; import forge.gui.GuiBase; import forge.item.IPaperCard; +import forge.item.PaperCard; import forge.localinstance.properties.ForgeConstants; import forge.localinstance.skin.FSkinProp; import forge.localinstance.skin.ISkinImage; @@ -154,7 +155,7 @@ public abstract class Achievement { background = FSkinProp.IMG_COMMON_TROPHY; } } - image = GuiBase.getInterface().createLayeredImage(background, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + key + ".png", opacity); + image = GuiBase.getInterface().createLayeredImage((PaperCard) getPaperCard(), background, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + key + ".png", opacity); } public int update(final Player player) { diff --git a/forge-gui/src/main/java/forge/localinstance/achievements/PlaneswalkerAchievements.java b/forge-gui/src/main/java/forge/localinstance/achievements/PlaneswalkerAchievements.java index dec37106514..8fbe9412e47 100644 --- a/forge-gui/src/main/java/forge/localinstance/achievements/PlaneswalkerAchievements.java +++ b/forge-gui/src/main/java/forge/localinstance/achievements/PlaneswalkerAchievements.java @@ -4,6 +4,7 @@ import forge.game.Game; import forge.game.player.Player; import forge.gui.GuiBase; import forge.item.IPaperCard; +import forge.item.PaperCard; import forge.localinstance.properties.ForgeConstants; import forge.localinstance.skin.FSkinProp; import forge.localinstance.skin.ISkinImage; @@ -14,8 +15,8 @@ import forge.util.Localizer; public class PlaneswalkerAchievements extends AchievementCollection { public static final PlaneswalkerAchievements instance = new PlaneswalkerAchievements(); - public static ISkinImage getTrophyImage(String planeswalkerName) { - return GuiBase.getInterface().createLayeredImage(FSkinProp.IMG_SPECIAL_TROPHY, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + planeswalkerName + ".png", 1); + public static ISkinImage getTrophyImage(String planeswalkerName, PaperCard paperCard) { + return GuiBase.getInterface().createLayeredImage(paperCard, FSkinProp.IMG_SPECIAL_TROPHY, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + planeswalkerName + ".png", 1); } private PlaneswalkerAchievements() {