package fr.iutfbleau.projetAgile.Puissance4.Controller;

import fr.iutfbleau.projetAgile.Puissance4.Event.*;
import fr.iutfbleau.projetAgile.Puissance4.View.Puissance4Panel;

public class ModelEventListener implements GridChangedListener  {

    private Puissance4Panel panel;

    /**
     * Constructeur
     * @param p le panneau du puissance 4
     * @see fr.iutfbleau.projetAgile.Puissance4.View.Puissance4Panel
     */
    public ModelEventListener(Puissance4Panel p) {
        this.panel = p;
    }

    /**
     * Modifie la vue du pion à l'emplacement modifié dans la grille
     */
    @Override
    public void gridChanged(GridEvent e) {
        this.panel.addPlayerPiece(e.getColumn(), e.getRow(), e.getPlayer());
    }

    /**
     * Modifie la vue lorsque le status de la partie change
     */
    @Override
    public void statusChanged(StatusEvent e) {
        this.panel.changeLabel(e.getPlayerTurn());
        this.panel.changeHoverColor(e.getPlayerTurn());
        this.panel.setGameStatus(e.getStatus(), e.getPlayerTurn(), e.getPlayerOneScore(), e.getPlayerTwoScore(), e.getPlayerThreeScore());
    }

    /**
     * Modifie la vue lorsque un joueur gagne (seulement si le nombre de joueur est supérieur à 2)
     */
    @Override 
    public void playerWin(PlayerEvent e){
        this.panel.playerWin(e.getJ());
    }
}
