Amélioration du mode auto focus
This commit is contained in:
@@ -69,7 +69,7 @@ public class Board extends JPanel{
|
||||
gameFrame.addKeyListener(new PauseGame(gameFrame, game));
|
||||
gameFrame.setFocusable(true);
|
||||
|
||||
this.remainingTilesIndicator = new RemainingTilesIndicator(Options.MAX_TILE_NUMBER);
|
||||
this.remainingTilesIndicator = new RemainingTilesIndicator(Options.MAX_TILE_NUMBER - 1);
|
||||
|
||||
// Remplacer l'adaptateur anonyme par notre classe CustomMouseMotionAdapter
|
||||
this.addMouseMotionListener(new CustomMouseMotionAdapter(this));
|
||||
@@ -288,12 +288,11 @@ public class Board extends JPanel{
|
||||
* @param position La position où ajouter la tuile
|
||||
*/
|
||||
public void placeTileAtPosition(Point position) {
|
||||
// Vérifie si la position est disponible et que la tuile n'est pas déjà placée à cet endroit
|
||||
if (availablePositions.contains(position) && !isTileAtPosition(position)) {
|
||||
if (tiles.size() < Options.MAX_TILE_NUMBER) {
|
||||
// Vérifiez si la nextTile existe, sinon on ignore
|
||||
if (tiles.size() < Options.MAX_TILE_NUMBER - 1) {
|
||||
// Placer une nouvelle tuile normalement
|
||||
if (nextTile != null) {
|
||||
remainingTilesIndicator.setRemainingTiles(Options.MAX_TILE_NUMBER - tiles.size());
|
||||
remainingTilesIndicator.setRemainingTiles(Options.MAX_TILE_NUMBER - 1 - tiles.size());
|
||||
|
||||
// Place la nextTile à la position choisie
|
||||
nextTile.setPosition(position.x, position.y);
|
||||
@@ -305,8 +304,20 @@ public class Board extends JPanel{
|
||||
// Initialiser une nouvelle nextTile pour le prochain tour
|
||||
initializeNextTile();
|
||||
}
|
||||
|
||||
} else {
|
||||
// Pour la dernière tuile
|
||||
if (nextTile != null) {
|
||||
// Place la dernière tuile et mettre à jour le score
|
||||
nextTile.setPosition(position.x, position.y);
|
||||
addTile(nextTile);
|
||||
calculateAvailablePositions(nextTile);
|
||||
repaint();
|
||||
|
||||
// Mise à jour de l'indicateur de tuiles restantes
|
||||
remainingTilesIndicator.setRemainingTiles(0);
|
||||
}
|
||||
|
||||
// Fin de la partie
|
||||
try {
|
||||
this.database = new Database();
|
||||
} catch (Exception e) {
|
||||
@@ -321,6 +332,7 @@ public class Board extends JPanel{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void autoReFocus(Tile newlyPlacedTile) {
|
||||
if (Options.AUTO_FOCUS) {
|
||||
// Récupérer les coordonnées de la nouvelle tuile
|
||||
@@ -330,8 +342,9 @@ public class Board extends JPanel{
|
||||
// Calculer les décalages nécessaires pour centrer la tuile
|
||||
// Nous utilisons la largeur et la hauteur du panneau de jeu (getWidth et getHeight)
|
||||
// Divisé par 2 pour centrer la nouvelle tuile dans la fenêtre.
|
||||
int targetOffsetX = (int) ((getWidth() - newlyPlacedTile.getRadius() * 2) / 2 - newlyPlacedTileX);
|
||||
int targetOffsetY = (int) ((getHeight() - newlyPlacedTile.getRadius() * 2) / 2 - newlyPlacedTileY);
|
||||
int targetOffsetX = (int) ((getWidth() - newlyPlacedTile.getRadius() * 2 * zoomFactor) / 2 - newlyPlacedTileX * zoomFactor);
|
||||
int targetOffsetY = (int) ((getHeight() - newlyPlacedTile.getRadius() * 2 * zoomFactor) / 2 - newlyPlacedTileY * zoomFactor);
|
||||
|
||||
|
||||
TilePanningTransition panningTransition = new TilePanningTransition(this, targetOffsetX, targetOffsetY, 15);
|
||||
panningTransition.start();
|
||||
|
Reference in New Issue
Block a user