package fr.iut_fbleau.Avalam;
import javax.swing.*;
import java.awt.*;
/**
* La classe PieceLayer
*
* Gère l'affichage des tours du plateau Avalam sous forme de boutons.
* Elle :
* - affiche les pièces,
* - positionne les boutons sur la grille,
* - associe une action de clic à chaque pièce.
*
* Aucune logique de jeu n'est implémentée ici.
*/
public class PieceLayer extends JPanel {
//Constructeur
/**
* Construit la couche graphique des pièces.
*/
public PieceLayer() {
setLayout(null);
setOpaque(false);
setBounds(0, 0, 800, 800);
}
//Méthodes
/**
* Affiche la grille de tours sous forme de boutons interactifs.
*
* @param grid grille 9×9 des tours
* @param xBase décalage horizontal du plateau
* @param yBase décalage vertical du plateau
* @param spacing espacement entre cases
* @param size taille d'un pion
* @param clickCallback fonction appelée lors d’un clic sur un pion
*/
public void displayGrid(Tower[][] grid, int xBase, int yBase,
int spacing, int size,
java.util.function.BiConsumer clickCallback) {
removeAll();
for (int r = 0; r < 9; r++) {
for (int c = 0; c < 9; c++) {
Tower t = grid[r][c];
if (t != null) {
PieceButton pb = new PieceButton(
t.getColor().getSwingColor(),
t.getHeight(),
r, c
);
pb.setBounds(xBase + c * spacing, yBase + r * spacing, size, size);
int fr = r, fc = c;
pb.addActionListener(e -> clickCallback.accept(fr, fc));
add(pb);
}
}
}
revalidate();
repaint();
}
}