package engine.helper; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Transparency; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.File; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; public class Assets { public static Image[][] mario; public static Image[][] smallMario; public static Image[][] fireMario; public static Image[][] enemies; public static Image[][] items; public static Image[][] level; public static Image[][] particles; public static Image[][] font; public static Image[][] map; public static void init(GraphicsConfiguration gc) { try { mario = cutImage(gc, "mariosheet.png", 32, 32); smallMario = cutImage(gc, "smallmariosheet.png", 16, 16); fireMario = cutImage(gc, "firemariosheet.png", 32, 32); enemies = cutImage(gc, "enemysheet.png", 16, 32); items = cutImage(gc, "itemsheet.png", 16, 16); level = cutImage(gc, "mapsheet.png", 16, 16); particles = cutImage(gc, "particlesheet.png", 16, 16); font = cutImage(gc, "font.gif", 8, 8); } catch (Exception e) { e.printStackTrace(); } } private static Image getImage(GraphicsConfiguration gc, String imageName) throws IOException { //FIXME: web/local //File file = new File(System.getProperty("user.dir") + "/img/" + imageName); // Local test File file = new File("/app/img/" + imageName); // For web BufferedImage source = ImageIO.read(file); Image image = gc.createCompatibleImage(source.getWidth(), source.getHeight(), Transparency.BITMASK); Graphics2D g = (Graphics2D) image.getGraphics(); g.setComposite(AlphaComposite.Src); g.drawImage(source, 0, 0, null); g.dispose(); return image; } private static Image[][] cutImage(GraphicsConfiguration gc, String imageName, int xSize, int ySize) throws IOException { Image source = getImage(gc, imageName); Image[][] images = new Image[source.getWidth(null) / xSize][source.getHeight(null) / ySize]; for (int x = 0; x < source.getWidth(null) / xSize; x++) { for (int y = 0; y < source.getHeight(null) / ySize; y++) { Image image = gc.createCompatibleImage(xSize, ySize, Transparency.BITMASK); Graphics2D g = (Graphics2D) image.getGraphics(); g.setComposite(AlphaComposite.Src); g.drawImage(source, -x * xSize, -y * ySize, null); g.dispose(); images[x][y] = image; } } return images; } }