Prévisualisation d'une tuile avec la souris
This commit is contained in:
@@ -18,6 +18,11 @@ import java.awt.Point;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics2D;
|
||||
|
||||
// TEMPORAIRE :
|
||||
import java.awt.event.MouseMotionAdapter; // Import pour MouseMotionAdapter
|
||||
import java.awt.event.MouseEvent; // Import pour MouseEvent
|
||||
import java.awt.AlphaComposite;
|
||||
|
||||
|
||||
/**
|
||||
* Représente le plateau de jeu.
|
||||
@@ -33,7 +38,7 @@ public class Board extends JPanel{
|
||||
private int offsetX = 0; // Décalage horizontal du plateau
|
||||
private int offsetY = 0; // Décalage vertical du plateau
|
||||
private Tile nextTile;
|
||||
|
||||
private Point mousePosition = null;
|
||||
|
||||
// Constructeur avec seed
|
||||
public Board(JFrame gameFrame, long seed) {
|
||||
@@ -63,9 +68,38 @@ public class Board extends JPanel{
|
||||
|
||||
this.addMouseListener(new GameMouseClickListener(this));
|
||||
|
||||
this.addMouseMotionListener(new MouseMotionAdapter() {
|
||||
@Override
|
||||
public void mouseMoved(java.awt.event.MouseEvent e) {
|
||||
handleMouseMove(e);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void handleMouseMove(java.awt.event.MouseEvent e) {
|
||||
// Récupérer les coordonnées du curseur
|
||||
Point cursorPoint = e.getPoint();
|
||||
|
||||
// Ajuster la position de la souris en fonction du zoom et des offsets
|
||||
int adjustedX = (int)((cursorPoint.x - offsetX) / zoomFactor);
|
||||
int adjustedY = (int)((cursorPoint.y - offsetY) / zoomFactor);
|
||||
|
||||
// Vérifier si la souris est proche d'une des positions disponibles
|
||||
for (Point position : availablePositions) {
|
||||
if (new Point(adjustedX, adjustedY).distance(position) < 20) {
|
||||
mousePosition = position;
|
||||
repaint(); // Redessiner le plateau avec la tuile transparente
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Si la souris n'est pas proche d'une position valide, ne rien faire
|
||||
mousePosition = null;
|
||||
repaint(); // Redessiner sans la tuile transparente
|
||||
}
|
||||
|
||||
|
||||
private void initializeNextTile() {
|
||||
int offsetX = 50; // Décalage pour la position en haut à gauche
|
||||
int offsetY = 50; // Décalage pour la position en haut à gauche
|
||||
@@ -73,9 +107,7 @@ public class Board extends JPanel{
|
||||
|
||||
}
|
||||
|
||||
public Tile getNextTile() {
|
||||
return nextTile;
|
||||
}
|
||||
public Tile getNextTile() { return nextTile; }
|
||||
|
||||
public void handleSpaceKeyPress() {
|
||||
// Calculer les dimensions totales du plateau (largeur et hauteur des tuiles)
|
||||
@@ -179,17 +211,11 @@ public class Board extends JPanel{
|
||||
centralTile.setPosition(centerX, centerY);
|
||||
}
|
||||
|
||||
public void addTile(Tile tile) {
|
||||
tiles.add(tile);
|
||||
}
|
||||
public void addTile(Tile tile) { tiles.add(tile);}
|
||||
|
||||
public Random getRandom() {
|
||||
return random;
|
||||
}
|
||||
public Random getRandom() { return random; }
|
||||
|
||||
public Game getGame() {
|
||||
return game;
|
||||
}
|
||||
public Game getGame() { return game; }
|
||||
|
||||
/**
|
||||
* Calcule les positions disponibles autour de la tuile donnée.
|
||||
@@ -285,29 +311,17 @@ public class Board extends JPanel{
|
||||
}
|
||||
}
|
||||
|
||||
public double getZoomFactor() {
|
||||
return zoomFactor;
|
||||
}
|
||||
public double getZoomFactor() { return zoomFactor;}
|
||||
|
||||
public void setZoomFactor(double zoomFactor) {
|
||||
this.zoomFactor = zoomFactor;
|
||||
}
|
||||
public void setZoomFactor(double zoomFactor) { this.zoomFactor = zoomFactor; }
|
||||
|
||||
public int getOffsetX() {
|
||||
return offsetX;
|
||||
}
|
||||
public int getOffsetX() { return offsetX; }
|
||||
|
||||
public void setOffsetX(int offsetX) {
|
||||
this.offsetX = offsetX;
|
||||
}
|
||||
public void setOffsetX(int offsetX) { this.offsetX = offsetX; }
|
||||
|
||||
public int getOffsetY() {
|
||||
return offsetY;
|
||||
}
|
||||
public int getOffsetY() { return offsetY; }
|
||||
|
||||
public void setOffsetY(int offsetY) {
|
||||
this.offsetY = offsetY;
|
||||
}
|
||||
public void setOffsetY(int offsetY) { this.offsetY = offsetY; }
|
||||
|
||||
public void zoomIn() {
|
||||
zoomFactor *= 1.1; // Augmenter le facteur de zoom
|
||||
@@ -354,6 +368,17 @@ public class Board extends JPanel{
|
||||
tile.drawTileAt(g,tileX-50,tileY-50,1f);
|
||||
}
|
||||
|
||||
// Vérifier si la position de la souris est valide et ne pas dessiner si elle est occupée
|
||||
if (mousePosition != null && nextTile != null && !isTileAtPosition(mousePosition)) {
|
||||
int nextTileX = mousePosition.x;
|
||||
int nextTileY = mousePosition.y;
|
||||
|
||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); // Rendre la tuile transparente
|
||||
nextTile.drawTileAt(g, nextTileX - 50, nextTileY - 50, 1f);
|
||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f)); // Rétablir l'opacité
|
||||
}
|
||||
|
||||
|
||||
if (nextTile != null) {
|
||||
// Calculer la position correcte de la nextTile (en tenant compte du zoom et des décalages)
|
||||
int nextTileX = 0; // Position x dans l'espace global
|
||||
|
Reference in New Issue
Block a user