package fr.iut_fbleau.Avalam.ui; import fr.iut_fbleau.Avalam.Tower; import javax.swing.*; import java.awt.*; /** * La classe PieceLayer gère l'affichage des pions * (sous forme de PieceButton) sur la grille. * * Elle s'occupe uniquement : * * * Aucune logique de jeu n'est réalisée ici. * * @author * @version 1.0 */ public class PieceLayer extends JPanel { /** * Constructeur. * Initialise un panneau transparent prêt à recevoir des pions. */ public PieceLayer() { setLayout(null); setOpaque(false); setBounds(0, 0, 800, 800); } /** * Affiche la grille de tours sous forme de boutons. * * @param grid grille 9×9 des tours * @param xBase offset X du plateau * @param yBase offset Y 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(); } }