package model;

import util.Position;

import java.util.*;


public class Fire implements Element {

    private Position position;


    private ModelElement modelElement = ModelElement.FIRE;


    public Fire(Position position){
        this.position = position;
    }


    public Position getPosition() {
        return position;
    }

    @Override
    public ModelElement getElement() {
        return modelElement;
    }

    public void setPosition(Position position) {
        this.position = position;
    }


    public List<Position> update(FirefighterBoard firefighterBoard) {
        List<Position> modifiedPositions = new ArrayList<>();
        Map<Position, List<Position>> neighbors = firefighterBoard.getNeighbors();

        // Étendre le feu seulement à chaque étape paire
        if (firefighterBoard.stepNumber() % 2 == 0) {
            List<Position> neighborPositions = neighbors.get(this.getPosition());
            for (Position position : neighborPositions) {
                if (!(firefighterBoard.getState(position).contains(modelElement))) {
                    // Ajouter un nouveau feu directement dans la liste des éléments
                    firefighterBoard.getElements().add(new Fire(position));
                }
                // Marquer la position comme modifiée
                modifiedPositions.add(position);
            }
        }
        return modifiedPositions;
    }

    public boolean contains(List<Position> positions) {
        return positions.contains(this.getPosition());

    }




}