package model;

import util.Position;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class FireFactory implements ElementFactory<Fire>,PositionGenerator{
    private final Random random;
    private int count;

    public FireFactory(Random random, int count) {
        this.random = random; // Injecte un générateur aléatoire pour une flexibilité.
        this.count=count;
    }

    /**
     * Crée une liste de feux avec des positions et intensités aléatoires.
     *
     * @param rowCount   Nombre de lignes du plateau.
     * @param columnCount Nombre de colonnes du plateau.

     * @return Une liste d'objets `Fire`.
     */
    public List<Fire> createElements(int rowCount, int columnCount) {
        List<Fire> fires = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            Position randomPosition = generateRandomPosition(rowCount, columnCount);
            boolean add = fires.add(new Fire(randomPosition));
        }
        System.out.println(fires.size());
        return fires;
    }

    /**
     * Génère une position aléatoire sur le plateau.
     *
     * @param rowCount   Nombre de lignes.
     * @param columnCount Nombre de colonnes.
     * @return Une position aléatoire.
     */
    @Override
    public Position generateRandomPosition(int rowCount, int columnCount) {
        int row = random.nextInt(rowCount);
        int column = random.nextInt(columnCount);
        return new Position(row, column);
    }

    public int getCount() {
        return count;
    }
}