From 2c223756f0eeeb1fc4a02d5c3b34deb1dd06f4dd Mon Sep 17 00:00:00 2001 From: lantzelot-swe <75668734+lantzelot-swe@users.noreply.github.com> Date: Mon, 17 Jan 2022 22:59:49 +0100 Subject: [PATCH] feat: When creating an infoslot thumbs from a PCUAE USB is used if available --- .../java/se/lantz/model/MainViewModel.java | 4 +- src/main/java/se/lantz/util/FileManager.java | 45 ++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/se/lantz/model/MainViewModel.java b/src/main/java/se/lantz/model/MainViewModel.java index ba52dee..528e8a2 100644 --- a/src/main/java/se/lantz/model/MainViewModel.java +++ b/src/main/java/se/lantz/model/MainViewModel.java @@ -1017,11 +1017,11 @@ public class MainViewModel extends AbstractModel //Cover image infoModel.setCoverImage(FileManager.getInfoSlotCover(this.selectedGameView.getGameViewId())); //Screen images - BufferedImage screenImage1 = FileManager.getInfoSlotScreenImage(true); + BufferedImage screenImage1 = FileManager.getInfoSlotScreenImage(true, this.selectedGameView.getName()); writeGameViewTextOnScreen(screenImage1, Color.yellow); infoModel.setScreen1Image(screenImage1); - BufferedImage screenImage2 = FileManager.getInfoSlotScreenImage(false); + BufferedImage screenImage2 = FileManager.getInfoSlotScreenImage(false, this.selectedGameView.getName()); writeGameViewTextOnScreen(screenImage2, Color.red); infoModel.setScreen2Image(screenImage2); } diff --git a/src/main/java/se/lantz/util/FileManager.java b/src/main/java/se/lantz/util/FileManager.java index ebb6052..37b3a9e 100644 --- a/src/main/java/se/lantz/util/FileManager.java +++ b/src/main/java/se/lantz/util/FileManager.java @@ -177,7 +177,50 @@ public class FileManager return coverImage; } - public static BufferedImage getInfoSlotScreenImage(boolean first) + public static BufferedImage getInfoSlotScreenImage(boolean first, String gameviewName) + { + //Check for USB and check if an existing games folder is available, pick from thumbs... + BufferedImage screenImage = null; + + String usbPath = getPCUAEUSBPath(false); + if (!usbPath.isEmpty()) + { + //Read from USB thumbs + Path gamelistThumbsPath = Paths.get(usbPath, gameviewName.replace(" ", "_"), "thumbs"); + File thumbsDir = gamelistThumbsPath.toFile(); + if (thumbsDir.exists() && thumbsDir.listFiles().length > 0) + { + try + { + if (first || thumbsDir.listFiles().length == 1) + { + screenImage = ImageIO.read(gamelistThumbsPath.resolve("thumbs-1.png").toFile()); + } + else + { + screenImage = ImageIO.read(gamelistThumbsPath.resolve("thumbs-2.png").toFile()); + } + } + catch (IOException e) + { + ExceptionHandler.handleException(e, "Could not read info slot screen image from USB."); + screenImage = getDefaultInfoSlotImage(first); + } + } + else + { + screenImage = getDefaultInfoSlotImage(first); + } + } + else + { + //Use default screens + screenImage = getDefaultInfoSlotImage(first); + } + return screenImage; + } + + private static BufferedImage getDefaultInfoSlotImage(boolean first) { BufferedImage screenImage = null; try