From 0c16b87dd145f56c5f4cc1cfbee78453f15b03ef Mon Sep 17 00:00:00 2001 From: musilto9 Date: Fri, 13 Mar 2020 01:15:00 +0100 Subject: [PATCH] added loading of map background from file --- src/main/java/Cell.java | 2 +- src/main/java/EventMoveToCell.java | 3 ++- src/main/java/ImageCell.java | 29 ++++++++++++++++++----------- src/main/java/InteractionCell.java | 2 +- src/main/java/Map.java | 7 ++++--- src/main/java/WindowOfFreeMove.java | 10 ++++++++++ src/main/resources/m1-tileset.txt | 12 +++++++++++- 7 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/main/java/Cell.java b/src/main/java/Cell.java index 096e7d4..adea154 100644 --- a/src/main/java/Cell.java +++ b/src/main/java/Cell.java @@ -26,6 +26,6 @@ public class Cell { public void paint(Graphics2D g) { g.setColor(color); - g.fillOval(x*size, y*size, size, size); +// g.fillOval(x*size, y*size, size, size); } } diff --git a/src/main/java/EventMoveToCell.java b/src/main/java/EventMoveToCell.java index 5e2528f..752b1a3 100644 --- a/src/main/java/EventMoveToCell.java +++ b/src/main/java/EventMoveToCell.java @@ -47,7 +47,8 @@ public class EventMoveToCell extends Cell { @Override public void paint(Graphics2D g) { super.paint(g); - g.fillOval(getX() * WindowOfFreeMove.CELL_SIZE, getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE); + g.drawImage(window.getMap().getImageCell().getImagesOfTiles().get(277), getX() * WindowOfFreeMove.CELL_SIZE, + getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null); g.drawString(Integer.toString(getId()), getX()*WindowOfFreeMove.CELL_SIZE, getY()*WindowOfFreeMove.CELL_SIZE); } } diff --git a/src/main/java/ImageCell.java b/src/main/java/ImageCell.java index b8cb271..c5b652f 100644 --- a/src/main/java/ImageCell.java +++ b/src/main/java/ImageCell.java @@ -1,4 +1,5 @@ import javax.imageio.ImageIO; +import javax.print.DocFlavor; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; @@ -10,18 +11,28 @@ import java.util.Scanner; public class ImageCell { private static BufferedImage image; private static LinkedList imagesOfTiles; - + private Scanner scanner; + private int[] mapBackground; public void readMapFile(String name) { try { + mapBackground = new int[WindowOfFreeMove.CANVAS_WIDTH * WindowOfFreeMove.CANVAS_HEIGHT]; + int count = 0; File mapFile = new File("src/main/resources/" + name + ".txt"); - Scanner scanner = new Scanner(mapFile); + scanner = new Scanner(mapFile); while (scanner.hasNextLine()) { String data = scanner.nextLine(); if (data.contains("")) { String[] mapInfo = data.split(" "); ImageTileset(mapInfo); } + else { + String[] mapColumn = data.split(" "); + for (int i = 0; i < mapColumn.length; i++) { + mapBackground[count] = Integer.parseInt(mapColumn[i]); + count++; + } + } } } catch (FileNotFoundException e) { System.out.println("An error occurred."); @@ -29,10 +40,6 @@ public class ImageCell { } } - public void readMapFileDirect(String[] mapInfo) { - ImageTileset(mapInfo); - } - private void ImageTileset(String[] mapInfo) { try { image = ImageIO.read(getClass().getResource(mapInfo[1])); @@ -63,14 +70,14 @@ public class ImageCell { for (int i = 0; i < tiles; i++) { imagesOfTiles.add(image.getSubimage(rectangles[i].x, rectangles[i].y, rectangles[i].height, rectangles[i].width)); } - -// while (scanner.hasNextLine()) { -// String data = scanner.nextLine(); -// System.out.println(imagesOfTiles[Integer.parseInt(data)]); -// } } public LinkedList getImagesOfTiles() { return imagesOfTiles; } + + public void paintBackground(Graphics g, int x, int y, int count) { + g.drawImage(imagesOfTiles.get(mapBackground[count]), y * WindowOfFreeMove.CELL_SIZE, + x * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null); + } } diff --git a/src/main/java/InteractionCell.java b/src/main/java/InteractionCell.java index 29726ad..440b823 100644 --- a/src/main/java/InteractionCell.java +++ b/src/main/java/InteractionCell.java @@ -10,7 +10,7 @@ public class InteractionCell extends Cell { private ImageCell imageCell; InteractionCell(int x, int y, String message, Dialog dialog, ImageCell imageCell) { - super(x, y, WindowOfFreeMove.CELL_SIZE, Color.WHITE); + super(x, y, WindowOfFreeMove.CELL_SIZE, Color.ORANGE); this.message = message; this.dialog = dialog; this.imageCell = imageCell; diff --git a/src/main/java/Map.java b/src/main/java/Map.java index 90038c2..ad13b20 100644 --- a/src/main/java/Map.java +++ b/src/main/java/Map.java @@ -124,6 +124,10 @@ public class Map { mapArray[x][y] = TypeOfCell.SPAWNPOINT; } + public ImageCell getImageCell() { return imageCell; } + + public TypeOfCell[][] getMapArray() { return mapArray; } + public void createMap() { for (int i = 0; i < mapArray.length; i++) { for (int j = 0; j < mapArray.length; j++) { @@ -228,7 +232,4 @@ public class Map { return cell; return eventCells.getFirst(); } - - - public ImageCell getImageCell() { return imageCell; } } diff --git a/src/main/java/WindowOfFreeMove.java b/src/main/java/WindowOfFreeMove.java index 5367b7c..d34d277 100644 --- a/src/main/java/WindowOfFreeMove.java +++ b/src/main/java/WindowOfFreeMove.java @@ -156,6 +156,9 @@ public class WindowOfFreeMove extends JFrame { m4.addMoveToEvent(new EventMoveToCell(3, 3, 8, 1, m3, this)); m1.getImageCell().readMapFile("m1-tileset"); + m2.getImageCell().readMapFile("m1-tileset"); + m3.getImageCell().readMapFile("m1-tileset"); + m4.getImageCell().readMapFile("m1-tileset"); setMap(m1); map.createMap(); @@ -204,6 +207,13 @@ public class WindowOfFreeMove extends JFrame { Graphics2D g2D = (Graphics2D) g; g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + int count = 0; + for (int i = 0; i < CANVAS_WIDTH; i++) { + for (int j = 0; j < CANVAS_HEIGHT; j++) { + map.getImageCell().paintBackground(g2D, i, j, count); + count++; + } + } for (Cell cell : map.getMoveToCells()) { cell.paint(g2D); } diff --git a/src/main/resources/m1-tileset.txt b/src/main/resources/m1-tileset.txt index cb91cdd..77285fc 100644 --- a/src/main/resources/m1-tileset.txt +++ b/src/main/resources/m1-tileset.txt @@ -1,2 +1,12 @@ A2_Ground.png 512 384 32 - D_OutDoor.png 512 512 32 \ No newline at end of file + D_OutDoor.png 512 512 32 +0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 +0 0 82 94 0 0 82 94 0 0 +0 0 83 95 0 0 83 95 0 0 +0 0 0 0 0 0 0 0 0 0 +0 0 153 0 0 0 0 153 0 0 +0 0 0 153 153 153 153 0 0 0 +0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0