|
|
@@ -4,17 +4,20 @@ import ui.GamePanel;
|
|
|
|
|
|
import javax.imageio.ImageIO;
|
|
|
import java.awt.*;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
+import java.nio.Buffer;
|
|
|
+import java.util.function.Consumer;
|
|
|
|
|
|
public class TileManager {
|
|
|
|
|
|
GamePanel gamePanel;
|
|
|
- Tile[] tile;
|
|
|
- int mapTileNum[] [];
|
|
|
-
|
|
|
+ public Tile[] tile;
|
|
|
+ public int[][] mapTileNum;
|
|
|
+ public int mapTileOverflow = 1;
|
|
|
public TileManager(GamePanel gp){
|
|
|
this.gamePanel = gp;
|
|
|
tile = new Tile[10];
|
|
|
@@ -67,10 +70,11 @@ public class TileManager {
|
|
|
double screenY = worldY - gamePanel.camera.worldY + gamePanel.camera.screenY;
|
|
|
|
|
|
|
|
|
- if(worldX + gamePanel.tileSize > gamePanel.camera.worldX - gamePanel.camera.screenX &&
|
|
|
- worldX - gamePanel.tileSize < gamePanel.camera.worldX + gamePanel.camera.screenX &&
|
|
|
- worldY + gamePanel.tileSize > gamePanel.camera.worldY - gamePanel.camera.screenY &&
|
|
|
- worldY - gamePanel.tileSize < gamePanel.camera.worldY + gamePanel.camera.screenY ) {
|
|
|
+ if(worldX + gamePanel.tileSize*mapTileOverflow > gamePanel.camera.worldX - gamePanel.camera.screenX &&
|
|
|
+ worldX - gamePanel.tileSize*mapTileOverflow < gamePanel.camera.worldX + gamePanel.camera.screenX &&
|
|
|
+ worldY + gamePanel.tileSize*mapTileOverflow > gamePanel.camera.worldY - gamePanel.camera.screenY &&
|
|
|
+ worldY - gamePanel.tileSize*mapTileOverflow < gamePanel.camera.worldY + gamePanel.camera.screenY ) {
|
|
|
+
|
|
|
|
|
|
g2.drawImage(tile[tileNum].image, (int) screenX, (int) screenY, gamePanel.tileSize, gamePanel.tileSize, null);
|
|
|
}
|
|
|
@@ -90,14 +94,27 @@ public class TileManager {
|
|
|
setupTile(1, "/tiles/wall.png");
|
|
|
setupTile(2, "/tiles/water.png");
|
|
|
setupTile(3, "/tiles/earth.png");
|
|
|
- setupTile(4, "/tiles/tree.png");
|
|
|
+
|
|
|
+ setupTile(4, "/tiles/tree.png", true, (tile) -> System.out.println("Clicked! x:"+ tile.worldX + ", y:" + tile.worldY));
|
|
|
+
|
|
|
setupTile(5, "/tiles/sand.png");
|
|
|
+
|
|
|
}catch (IOException e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
private void setupTile(int index, String path) throws IOException {
|
|
|
- tile[index] = new Tile();
|
|
|
- tile[index].image = ImageIO.read(getClass().getResourceAsStream(path));
|
|
|
+ tile[index] = new BackgroundTile();
|
|
|
+ tile[index].setImage(path);
|
|
|
+ }
|
|
|
+ private void setupTile(int index, String path, boolean interactive, Consumer<Tile> consumer) throws IOException {
|
|
|
+ if(!interactive){
|
|
|
+ tile[index] = new BackgroundTile();
|
|
|
+ }else{
|
|
|
+ InteractiveTile t = new InteractiveTile();
|
|
|
+ t.addOnClick(consumer);
|
|
|
+ tile[index] = t;
|
|
|
+ }
|
|
|
+ tile[index].setImage(path);
|
|
|
}
|
|
|
}
|