From 838c67e3e6f529c30f902102a30f6a04354ce264 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 18 Jul 2024 09:12:37 +0200 Subject: [PATCH] Update CustomMap --- src/de/steamwar/lobby/map/CustomMap.java | 28 ++++++++++++++---------- src/de/steamwar/lobby/map/Point.java | 20 ----------------- 2 files changed, 17 insertions(+), 31 deletions(-) delete mode 100644 src/de/steamwar/lobby/map/Point.java diff --git a/src/de/steamwar/lobby/map/CustomMap.java b/src/de/steamwar/lobby/map/CustomMap.java index 4e7d859..002ba04 100644 --- a/src/de/steamwar/lobby/map/CustomMap.java +++ b/src/de/steamwar/lobby/map/CustomMap.java @@ -123,7 +123,7 @@ public class CustomMap implements Listener { private void run() throws IOException { BufferedImage bufferedImage = ImageIO.read(mapFile); - Set[] patches = new Set[256]; + Set[] patches = new Set[256]; for (int patch = 0; patch < patches.length; patch++) { patches[patch] = new HashSet<>(); } @@ -136,21 +136,25 @@ public class CustomMap implements Listener { double blue = color.getBlue() / 255.0; double luminance = Math.sqrt(0.299 * red * red + 0.587 * green * green + 0.114 * blue * blue); luminance *= 255; - patches[(int) luminance].add(new Point(x, y)); + patches[(int) luminance].add(x << 16 | y); } } for (int patch = 0; patch < patches.length; patch++) { - Set points = patches[patch]; + Set points = patches[patch]; if (points.isEmpty()) continue; BufferedImage patchImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_ARGB); points.forEach(point -> { - patchImage.setRGB(point.getX(), point.getY(), bufferedImage.getRGB(point.getX(), point.getY())); + int x = point >>> 16; + int y = point & 0xFFFF; + patchImage.setRGB(x, y, bufferedImage.getRGB(x, y)); }); floodFill(patchImage); dither(patchImage); points.forEach(point -> { - bufferedImage.setRGB(point.getX(), point.getY(), patchImage.getRGB(point.getX(), point.getY())); + int x = point >>> 16; + int y = point & 0xFFFF; + bufferedImage.setRGB(x, y, patchImage.getRGB(x, y)); }); } @@ -191,32 +195,34 @@ public class CustomMap implements Listener { WritableRaster alpha = bufferedImage.getAlphaRaster(); int[] data = alpha.getPixels(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight(), new int[bufferedImage.getWidth() * bufferedImage.getHeight()]); for (int i = 0; i < 5; i++) { - Set changes = new HashSet<>(); + Set changes = new HashSet<>(); for (int y = 0; y < bufferedImage.getHeight(); y++) { for (int x = 0; x < bufferedImage.getWidth(); x++) { if (data[y * bufferedImage.getWidth() + x] == 0) continue; int color = bufferedImage.getRGB(x, y); if (x > 0 && data[y * bufferedImage.getWidth() + x - 1] == 0) { bufferedImage.setRGB(x - 1, y, color); - changes.add(new Point(x - 1, y)); + changes.add((x - 1) << 16 | y); } if (x < bufferedImage.getWidth() - 1 && data[y * bufferedImage.getWidth() + x + 1] == 0) { bufferedImage.setRGB(x + 1, y, color); - changes.add(new Point(x + 1, y)); + changes.add((x + 1) << 16 | y); } if (y > 0 && data[(y - 1) * bufferedImage.getWidth() + x] == 0) { bufferedImage.setRGB(x, y - 1, color); - changes.add(new Point(x, y - 1)); + changes.add(x << 16 | (y - 1)); } if (y < bufferedImage.getHeight() - 1 && data[(y + 1) * bufferedImage.getWidth() + x] == 0) { bufferedImage.setRGB(x, y + 1, color); - changes.add(new Point(x, y + 1)); + changes.add(x << 16 | (y + 1)); } } } if (changes.isEmpty()) return; changes.forEach(point -> { - data[point.getY() * bufferedImage.getWidth() + point.getX()] = 255; + int x = point >>> 16; + int y = point & 0xFFFF; + data[y * bufferedImage.getWidth() + x] = 255; }); } } diff --git a/src/de/steamwar/lobby/map/Point.java b/src/de/steamwar/lobby/map/Point.java deleted file mode 100644 index dd3a19b..0000000 --- a/src/de/steamwar/lobby/map/Point.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.steamwar.lobby.map; - -public class Point { - - private int x; - private int y; - - public Point(int x, int y) { - this.x = x; - this.y = y; - } - - public int getX() { - return x; - } - - public int getY() { - return y; - } -}