package model;

import util.Position;

import java.util.*;

public class Fires extends BoardMethods implements ModelElement {

    private Set<Position> firePositions;

    private int step;


    public Fires() {
    }

    public void add(Position newPositions){
        firePositions.add(newPositions);
    }

    public Set<Position> getFirePositions() {
        return firePositions;
    }

    public List<Position> updateFires(Montains montains, Roads roads) {
        List<Position> result = new ArrayList<>();
        if (step % 2 == 0) {
            List<Position> newFirePositions = new ArrayList<>();
            for (Position fire : firePositions) {
                List<Position> neighbors= neighbors(fire);
                for (Position position : neighbors){
                    if(!montains.getMontainsPositions().contains(position) || !roads.getRoadsPositions().contains(position))
                        newFirePositions.add(position);
                }
            }
            firePositions.addAll(newFirePositions);
            result.addAll(newFirePositions);
        }
        return result;

    }

    public void incrementStep(){
        this.step ++;
    }

    public void initializeElements(int initialFireCount, int rowCount, int columnCount) {
        //this.step=step;
        this.columnCount = columnCount;
        this.rowCount = rowCount;
        firePositions = new HashSet<>();
        for (int index = 0; index < initialFireCount; index++)
            firePositions.add(randomPosition());
    }




}