diff --git a/.classpath b/.classpath
index 99d9707..8623669 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
+
-
diff --git a/src/dev/kske/chess/ui/TextureUtil.java b/src/dev/kske/chess/ui/TextureUtil.java
index 7a37f39..5597032 100644
--- a/src/dev/kske/chess/ui/TextureUtil.java
+++ b/src/dev/kske/chess/ui/TextureUtil.java
@@ -2,8 +2,8 @@ package dev.kske.chess.ui;
import java.awt.Image;
import java.awt.image.BufferedImage;
-import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -19,11 +19,13 @@ import dev.kske.chess.board.Piece;
*/
public class TextureUtil {
- private static Map textures;
+ private static Map textures, scaledTextures;
static {
textures = new HashMap<>();
+ scaledTextures = new HashMap<>();
loadPieceTextures();
+ scaledTextures.putAll(textures);
}
private TextureUtil() {}
@@ -36,26 +38,28 @@ public class TextureUtil {
*/
public static Image getPieceTexture(Piece piece) {
String key = piece.getType().toString().toLowerCase() + "_" + piece.getColor().toString().toLowerCase();
- return textures.get(key);
+ return scaledTextures.get(key);
}
/**
* Scales all piece textures to fit the current tile size
*/
public static void scalePieceTextures(int scale) {
- textures.replaceAll((key, img) -> img.getScaledInstance(scale, scale, Image.SCALE_SMOOTH));
+ scaledTextures.clear();
+ textures
+ .forEach((key, img) -> scaledTextures.put(key, img.getScaledInstance(scale, scale, Image.SCALE_SMOOTH)));
}
/**
- * Loads an image from a file.
+ * Loads an image from a file in the resource folder.
*
- * @param file The image file
+ * @param fileName The name of the image resource
* @return The loaded image
*/
- private static Image loadImage(File file) {
+ private static Image loadImage(String fileName) {
BufferedImage in = null;
try {
- in = ImageIO.read(file);
+ in = ImageIO.read(TextureUtil.class.getResourceAsStream(fileName));
} catch (IOException e) {
e.printStackTrace();
}
@@ -67,10 +71,20 @@ public class TextureUtil {
* The filenames without extensions are used as keys in the map textures.
*/
private static void loadPieceTextures() {
- File dir = new File("res/pieces");
- File[] files = dir.listFiles((File parentDir, String name) -> name.toLowerCase().endsWith(".png"));
- for (File file : files)
- textures.put(file.getName().replaceFirst("[.][^.]+$", ""), TextureUtil.loadImage(file));
+ Arrays
+ .asList("king_white",
+ "king_black",
+ "queen_white",
+ "queen_black",
+ "rook_white",
+ "rook_black",
+ "knight_white",
+ "knight_black",
+ "bishop_white",
+ "bishop_black",
+ "pawn_white",
+ "pawn_black")
+ .forEach(name -> textures.put(name, loadImage("/pieces/" + name + ".png")));
}
}