94 lines
3.2 KiB
Java
94 lines
3.2 KiB
Java
package de.miaurizius.jgame2d.tile;
|
|
|
|
import de.miaurizius.jgame2d.core.GamePanel;
|
|
import de.miaurizius.jgame2d.core.enums.Map;
|
|
|
|
import java.awt.*;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.IOException;
|
|
|
|
public class MiniMap extends TileManager {
|
|
|
|
GamePanel panel;
|
|
BufferedImage worldMap[];
|
|
public boolean miniMapOn;
|
|
|
|
public MiniMap(GamePanel panel) throws IOException {
|
|
super(panel);
|
|
this.panel = panel;
|
|
createWorldMap();
|
|
}
|
|
|
|
public void createWorldMap() {
|
|
worldMap = new BufferedImage[Map.values().length];
|
|
int worldMapWidth = panel.maxWorldCol * panel.tileSize;
|
|
int worldMapHeight = panel.maxWorldRow * panel.tileSize;
|
|
|
|
for (int i = 0; i < Map.values().length; i++) {
|
|
worldMap[i] = new BufferedImage(worldMapWidth, worldMapHeight, BufferedImage.TYPE_INT_ARGB);
|
|
Graphics2D g2 = worldMap[i].createGraphics();
|
|
|
|
int col = 0;
|
|
int row = 0;
|
|
|
|
while(col < panel.maxWorldCol && row < panel.maxWorldRow) {
|
|
int tileNum = mapTileNum[i][col][row];
|
|
int x = col * panel.tileSize;
|
|
int y = row * panel.tileSize;
|
|
g2.drawImage(panel.tileM.tile[tileNum].image, x, y, null);
|
|
col++;
|
|
if(col != panel.maxWorldCol) continue;
|
|
col = 0;
|
|
row++;
|
|
}
|
|
g2.dispose();
|
|
}
|
|
}
|
|
|
|
public void drawFullMapScreen(Graphics2D g2) {
|
|
// BACKGROUND
|
|
g2.setColor(Color.black);
|
|
g2.fillRect(0, 0, panel.screenWidth, panel.screenHeight);
|
|
|
|
// DRAW MAP
|
|
int width = 500;
|
|
int height = 500;
|
|
int x = panel.screenWidth / 2 - width / 2;
|
|
int y = panel.screenHeight / 2 - height / 2;
|
|
g2.drawImage(worldMap[panel.currentMap.getIndex()], x, y, width, height, null);
|
|
|
|
// DRAW PLAYER
|
|
double scale = (double)(panel.tileSize * panel.maxWorldCol)/width;
|
|
int playerX = (int)(x + panel.player.worldX/scale);
|
|
int playerY = (int)(y + panel.player.worldY/scale);
|
|
int playerSize = (int)(panel.tileSize/scale);
|
|
g2.drawImage(panel.player.down1, playerX, playerY, playerSize, playerSize, null);
|
|
|
|
// HINT
|
|
g2.setFont(panel.ui.font.deriveFont(32F));
|
|
g2.setColor(Color.white);
|
|
g2.drawString("Press M to close", 750, 550);
|
|
}
|
|
|
|
public void drawMiniMap(Graphics2D g2) {
|
|
if(!miniMapOn) return;
|
|
|
|
// DRAW MAP
|
|
int width = 300;
|
|
int height = 300;
|
|
int x = panel.screenWidth - width - 50;
|
|
int y = 50;
|
|
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f));
|
|
g2.drawImage(worldMap[panel.currentMap.getIndex()], x, y, width, height, null);
|
|
|
|
// DRAW PLAYER
|
|
double scale = (double)(panel.tileSize * panel.maxWorldCol)/width;
|
|
int playerX = (int)(x + panel.player.worldX/scale);
|
|
int playerY = (int)(y + panel.player.worldY/scale);
|
|
int playerSize = (int)(panel.tileSize/3);
|
|
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f));
|
|
g2.drawImage(panel.player.down1, playerX-6, playerY-6, playerSize, playerSize, null);
|
|
}
|
|
|
|
}
|