|
@@ -4,7 +4,6 @@ import controller.GameController;
|
|
|
import model.Tile;
|
|
import model.Tile;
|
|
|
import model.tiles.BackgroundTile;
|
|
import model.tiles.BackgroundTile;
|
|
|
import view.GamePanel;
|
|
import view.GamePanel;
|
|
|
-import view.tile.interactive.Hut;
|
|
|
|
|
import view.tile.interactive.InteractiveTile;
|
|
import view.tile.interactive.InteractiveTile;
|
|
|
|
|
|
|
|
import java.awt.*;
|
|
import java.awt.*;
|
|
@@ -12,6 +11,7 @@ import java.io.BufferedReader;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
import java.io.InputStreamReader;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
|
|
|
public class TileManager {
|
|
public class TileManager {
|
|
|
|
|
|
|
@@ -21,7 +21,7 @@ public class TileManager {
|
|
|
public int[][] mapTileNum;
|
|
public int[][] mapTileNum;
|
|
|
public Tile[][] mapTiles;
|
|
public Tile[][] mapTiles;
|
|
|
public int mapTileOverflow = 1;
|
|
public int mapTileOverflow = 1;
|
|
|
-
|
|
|
|
|
|
|
+ public ArrayList<InteractiveTile> interactiveTiles = new ArrayList<>();
|
|
|
public TileManager(GamePanel gp){
|
|
public TileManager(GamePanel gp){
|
|
|
this.gamePanel = gp;
|
|
this.gamePanel = gp;
|
|
|
tile = new Tile[10];
|
|
tile = new Tile[10];
|
|
@@ -30,7 +30,9 @@ public class TileManager {
|
|
|
loadMap("/maps/world01.txt");
|
|
loadMap("/maps/world01.txt");
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ public void addInteractiveTile(InteractiveTile tile) {
|
|
|
|
|
+ interactiveTiles.add(tile);
|
|
|
|
|
+ }
|
|
|
public void loadMap(String filePath){
|
|
public void loadMap(String filePath){
|
|
|
try{
|
|
try{
|
|
|
InputStream is = getClass().getResourceAsStream(filePath);
|
|
InputStream is = getClass().getResourceAsStream(filePath);
|
|
@@ -81,8 +83,10 @@ public class TileManager {
|
|
|
|
|
|
|
|
|
|
|
|
|
g2.drawImage(tile[tileNum].image, (int) screenX, (int) screenY, gamePanel.tileSize, gamePanel.tileSize, null);
|
|
g2.drawImage(tile[tileNum].image, (int) screenX, (int) screenY, gamePanel.tileSize, gamePanel.tileSize, null);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
worldCol++;
|
|
worldCol++;
|
|
|
|
|
|
|
|
if(worldCol == gamePanel.maxWorldCol){
|
|
if(worldCol == gamePanel.maxWorldCol){
|
|
@@ -90,8 +94,21 @@ public class TileManager {
|
|
|
worldRow++;
|
|
worldRow++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ for (InteractiveTile tile : interactiveTiles) {
|
|
|
|
|
+ tile.updateCoordinates();
|
|
|
|
|
+ tile.draw(g2, gamePanel.camera);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ public int worldColToScreenX(int worldCol) {
|
|
|
|
|
+ double worldX = worldCol * gamePanel.tileSize; // Reactively use tileSize
|
|
|
|
|
+ return (int) (worldX - gamePanel.camera.worldX + gamePanel.camera.screenX);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public int worldRowToScreenY(int worldRow) {
|
|
|
|
|
+ double worldY = worldRow * gamePanel.tileSize; // Reactively use tileSize
|
|
|
|
|
+ return (int) (worldY - gamePanel.camera.worldY + gamePanel.camera.screenY);
|
|
|
|
|
+ }
|
|
|
public void getTileImage(){
|
|
public void getTileImage(){
|
|
|
try{
|
|
try{
|
|
|
setupTile(0, "grass");
|
|
setupTile(0, "grass");
|