Merge pull request #2682 from kevlahnota/newmaster2

update Achievement Trophies
This commit is contained in:
Anthony Calosa
2023-03-15 03:45:12 +08:00
committed by GitHub
9 changed files with 26 additions and 9 deletions

View File

@@ -144,15 +144,21 @@ public class GuiDesktop implements IGuiBase {
} }
@Override @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 BufferedImage image = new BufferedImage(background.getWidth(), background.getHeight(), BufferedImage.TYPE_INT_ARGB);
final Graphics2D g = image.createGraphics(); final Graphics2D g = image.createGraphics();
final FSkin.SkinImage backgroundImage = FSkin.getImage(background); final FSkin.SkinImage backgroundImage = FSkin.getImage(background);
FSkin.drawImage(g, backgroundImage, 0, 0, background.getWidth(), background.getHeight()); FSkin.drawImage(g, backgroundImage, 0, 0, background.getWidth(), background.getHeight());
final int cardImageWidth = 90;
final int cardImageHeight = 128;
if (FileUtil.doesFileExist(overlayFilename)) { if (FileUtil.doesFileExist(overlayFilename)) {
final ImageIcon overlay = new ImageIcon(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); 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); return new FSkin.UnskinnedIcon(image, opacity);
} }

View File

@@ -123,11 +123,13 @@ public class GuiMobile implements IGuiBase {
} }
@Override @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) { return new FBufferedImage(background.getWidth(), background.getHeight(), opacity) {
@Override @Override
protected void draw(final Graphics g, final float w, final float h) { protected void draw(final Graphics g, final float w, final float h) {
g.drawImage(FSkin.getImages().get(background), 0, 0, background.getWidth(), background.getHeight()); g.drawImage(FSkin.getImages().get(background), 0, 0, background.getWidth(), background.getHeight());
final float cardImageWidth = 90f;
final float cardImageHeight = 128f;
if (FileUtil.doesFileExist(overlayFilename)) { if (FileUtil.doesFileExist(overlayFilename)) {
try { 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()); g.drawImage(overlay, (background.getWidth() - overlay.getWidth()) / 2, (background.getHeight() - overlay.getHeight()) / 2, overlay.getWidth(), overlay.getHeight());
} catch (final Exception e) { } 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 Gdx.graphics.requestRendering(); //ensure image appears right away

View File

@@ -117,6 +117,9 @@ public class LoadSealedScreen extends LaunchScreen {
} }
final DeckGroup opponentDecks = FModel.getDecks().getSealed().get(humanDeck.getName()); 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); final Deck aiDeck = opponentDecks.getAiDecks().get(aiIndex - 1);
if (aiDeck == null) { if (aiDeck == null) {
throw new IllegalStateException("Draft: Computer deck is null!"); throw new IllegalStateException("Draft: Computer deck is null!");

View File

@@ -65,7 +65,7 @@ public class ConquestPlaneswalkersScreen extends FScreen {
private void updatePreview() { private void updatePreview() {
PaperCard planeswalker = lstPlaneswalkers.getSelectedItem(); PaperCard planeswalker = lstPlaneswalkers.getSelectedItem();
if (planeswalker != null) { if (planeswalker != null) {
tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName())); tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName(), planeswalker));
} }
else { else {
tokenDisplay.setIcon(null); tokenDisplay.setIcon(null);

View File

@@ -192,7 +192,7 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
private void updatePreview() { private void updatePreview() {
PaperCard planeswalker = lstPlaneswalkers.getSelectedItem(); PaperCard planeswalker = lstPlaneswalkers.getSelectedItem();
if (planeswalker != null) { if (planeswalker != null) {
tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName())); tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName(), planeswalker));
} }
else { else {
tokenDisplay.setIcon(null); tokenDisplay.setIcon(null);

View File

@@ -154,7 +154,7 @@ public final class ConquestData {
} }
public void setPlaneswalker(PaperCard planeswalker0) { public void setPlaneswalker(PaperCard planeswalker0) {
planeswalker = planeswalker0; planeswalker = planeswalker0;
planeswalkerToken = PlaneswalkerAchievements.getTrophyImage(planeswalker.getName()); planeswalkerToken = PlaneswalkerAchievements.getTrophyImage(planeswalker.getName(), planeswalker);
} }
public ISkinImage getPlaneswalkerToken() { public ISkinImage getPlaneswalkerToken() {

View File

@@ -32,7 +32,7 @@ public interface IGuiBase {
ISkinImage getUnskinnedIcon(String path); ISkinImage getUnskinnedIcon(String path);
ISkinImage getCardArt(PaperCard card); ISkinImage getCardArt(PaperCard card);
ISkinImage getCardArt(PaperCard card, boolean backFace); ISkinImage getCardArt(PaperCard card, boolean backFace);
ISkinImage createLayeredImage(FSkinProp background, String overlayFilename, float opacity); ISkinImage createLayeredImage(PaperCard card, FSkinProp background, String overlayFilename, float opacity);
void showBugReportDialog(String title, String text, boolean showExitAppBtn); void showBugReportDialog(String title, String text, boolean showExitAppBtn);
void showImageDialog(ISkinImage image, String message, String title); void showImageDialog(ISkinImage image, String message, String title);
int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption); int showOptionDialog(String message, String title, FSkinProp icon, List<String> options, int defaultOption);

View File

@@ -4,6 +4,7 @@ import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiBase; import forge.gui.GuiBase;
import forge.item.IPaperCard; import forge.item.IPaperCard;
import forge.item.PaperCard;
import forge.localinstance.properties.ForgeConstants; import forge.localinstance.properties.ForgeConstants;
import forge.localinstance.skin.FSkinProp; import forge.localinstance.skin.FSkinProp;
import forge.localinstance.skin.ISkinImage; import forge.localinstance.skin.ISkinImage;
@@ -154,7 +155,7 @@ public abstract class Achievement {
background = FSkinProp.IMG_COMMON_TROPHY; 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) { public int update(final Player player) {

View File

@@ -4,6 +4,7 @@ import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiBase; import forge.gui.GuiBase;
import forge.item.IPaperCard; import forge.item.IPaperCard;
import forge.item.PaperCard;
import forge.localinstance.properties.ForgeConstants; import forge.localinstance.properties.ForgeConstants;
import forge.localinstance.skin.FSkinProp; import forge.localinstance.skin.FSkinProp;
import forge.localinstance.skin.ISkinImage; import forge.localinstance.skin.ISkinImage;
@@ -14,8 +15,8 @@ import forge.util.Localizer;
public class PlaneswalkerAchievements extends AchievementCollection { public class PlaneswalkerAchievements extends AchievementCollection {
public static final PlaneswalkerAchievements instance = new PlaneswalkerAchievements(); public static final PlaneswalkerAchievements instance = new PlaneswalkerAchievements();
public static ISkinImage getTrophyImage(String planeswalkerName) { public static ISkinImage getTrophyImage(String planeswalkerName, PaperCard paperCard) {
return GuiBase.getInterface().createLayeredImage(FSkinProp.IMG_SPECIAL_TROPHY, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + planeswalkerName + ".png", 1); return GuiBase.getInterface().createLayeredImage(paperCard, FSkinProp.IMG_SPECIAL_TROPHY, ForgeConstants.CACHE_ACHIEVEMENTS_DIR + "/" + planeswalkerName + ".png", 1);
} }
private PlaneswalkerAchievements() { private PlaneswalkerAchievements() {