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.Color;
|
||||||
import java.awt.Graphics2D;
|
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.
|
* 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 offsetX = 0; // Décalage horizontal du plateau
|
||||||
private int offsetY = 0; // Décalage vertical du plateau
|
private int offsetY = 0; // Décalage vertical du plateau
|
||||||
private Tile nextTile;
|
private Tile nextTile;
|
||||||
|
private Point mousePosition = null;
|
||||||
|
|
||||||
// Constructeur avec seed
|
// Constructeur avec seed
|
||||||
public Board(JFrame gameFrame, long seed) {
|
public Board(JFrame gameFrame, long seed) {
|
||||||
@@ -63,9 +68,38 @@ public class Board extends JPanel{
|
|||||||
|
|
||||||
this.addMouseListener(new GameMouseClickListener(this));
|
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() {
|
private void initializeNextTile() {
|
||||||
int offsetX = 50; // Décalage pour la position en haut à gauche
|
int offsetX = 50; // Décalage pour la position en haut à gauche
|
||||||
int offsetY = 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() {
|
public Tile getNextTile() { return nextTile; }
|
||||||
return nextTile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleSpaceKeyPress() {
|
public void handleSpaceKeyPress() {
|
||||||
// Calculer les dimensions totales du plateau (largeur et hauteur des tuiles)
|
// Calculer les dimensions totales du plateau (largeur et hauteur des tuiles)
|
||||||
@@ -179,17 +211,11 @@ public class Board extends JPanel{
|
|||||||
centralTile.setPosition(centerX, centerY);
|
centralTile.setPosition(centerX, centerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTile(Tile tile) {
|
public void addTile(Tile tile) { tiles.add(tile);}
|
||||||
tiles.add(tile);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Random getRandom() {
|
public Random getRandom() { return random; }
|
||||||
return random;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Game getGame() {
|
public Game getGame() { return game; }
|
||||||
return game;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calcule les positions disponibles autour de la tuile donnée.
|
* Calcule les positions disponibles autour de la tuile donnée.
|
||||||
@@ -285,29 +311,17 @@ public class Board extends JPanel{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getZoomFactor() {
|
public double getZoomFactor() { return zoomFactor;}
|
||||||
return zoomFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZoomFactor(double zoomFactor) {
|
public void setZoomFactor(double zoomFactor) { this.zoomFactor = zoomFactor; }
|
||||||
this.zoomFactor = zoomFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOffsetX() {
|
public int getOffsetX() { return offsetX; }
|
||||||
return offsetX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOffsetX(int offsetX) {
|
public void setOffsetX(int offsetX) { this.offsetX = offsetX; }
|
||||||
this.offsetX = offsetX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOffsetY() {
|
public int getOffsetY() { return offsetY; }
|
||||||
return offsetY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOffsetY(int offsetY) {
|
public void setOffsetY(int offsetY) { this.offsetY = offsetY; }
|
||||||
this.offsetY = offsetY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void zoomIn() {
|
public void zoomIn() {
|
||||||
zoomFactor *= 1.1; // Augmenter le facteur de zoom
|
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);
|
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) {
|
if (nextTile != null) {
|
||||||
// Calculer la position correcte de la nextTile (en tenant compte du zoom et des décalages)
|
// 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
|
int nextTileX = 0; // Position x dans l'espace global
|
||||||
|
Reference in New Issue
Block a user