feat: When creating an infoslot thumbs from a PCUAE USB is used if available

This commit is contained in:
lantzelot-swe 2022-01-17 22:59:49 +01:00
parent bee4c1d253
commit 2c223756f0
2 changed files with 46 additions and 3 deletions

View File

@ -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);
}

View File

@ -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