package fr.iut_fbleau.Avalam.ui; import javax.swing.*; import java.awt.*; import java.util.List; /** * La classe HighlightLayer est responsable de l'affichage des * cases de déplacement autorisées sous forme de cercles verts. * * Elle n'interagit pas directement avec les pièces, mais se contente * de dessiner en arrière-plan selon une liste de positions légales. * * @author * @version 1.0 */ public class HighlightLayer extends JPanel { private int xBase, yBase, spacing, size; /** Liste des positions jouables (cases en vert). */ private List legalMoves; /** * Constructeur. * * @param xBase position X de base du plateau * @param yBase position Y de base du plateau * @param spacing espacement entre cases * @param size taille des pions */ public HighlightLayer(int xBase, int yBase, int spacing, int size) { this.xBase = xBase; this.yBase = yBase; this.spacing = spacing; this.size = size; setOpaque(false); setBounds(0, 0, 800, 800); } /** * Définit la liste des cases légales à afficher. */ public void setLegalMoves(List moves) { this.legalMoves = moves; repaint(); } /** * Dessine les cercles verts autour des cases autorisées. */ @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (legalMoves == null) return; Graphics2D g2 = (Graphics2D) g; g2.setColor(new Color(0, 255, 0, 120)); for (Point p : legalMoves) { int r = p.x; int c = p.y; int x = xBase + c * spacing; int y = yBase + r * spacing; int highlight = size + 20; // Cercle plus grand que le pion g2.fillOval(x - 10, y - 10, highlight, highlight); } } }