package com.charpentierbalocchi.dorfjavatik.model;

public class Plateau {
    private int taille;
    private Case[][] cases; // Grille de cases
    private int score;

    public Plateau(int taille) {
        this.taille = taille;
        cases = new Case[taille][taille];
        for (int i = 0; i < taille; i++) {
            for (int j = 0; j < taille; j++) {
                cases[i][j] = new Case(); // Initialisation de chaque case du plateau
            }
        }
        score = 0;
    }

    public void reset() {
        for (int i = 0; i < taille; i++) {
            for (int j = 0; j < taille; j++) {
                cases[i][j] = new Case();
            }
        }
        score = 0;
    }

    public boolean placerTuile(Tuile tuile, int x, int y) {
        if (cases[x][y].estVide()) {
            cases[x][y].setTuile(tuile);
            score += calculerScore(x, y, tuile);
            return true;
        }
        return false;
    }

    public int calculerScore(int x, int y, Tuile tuile) {
        int score = 0;
        if (x > 0 && cases[x - 1][y].getTuile() != null && cases[x - 1][y].getTuile().getSud() == tuile.getNord()) {
            score++;
        }
        if (x < taille - 1 && cases[x + 1][y].getTuile() != null
                && cases[x + 1][y].getTuile().getNord() == tuile.getSud()) {
            score++;
        }
        if (y > 0 && cases[x][y - 1].getTuile() != null && cases[x][y - 1].getTuile().getEst() == tuile.getOuest()) {
            score++;
        }
        if (y < taille - 1 && cases[x][y + 1].getTuile() != null
                && cases[x][y + 1].getTuile().getOuest() == tuile.getEst()) {
            score++;
        }
        return score;
    }

    public int getScore() {
        return score;
    }

    public Case getCase(int x, int y) {
        return cases[x][y];
    }

    public int getTaille() {
        return taille;
    }
}
