package model;

import util.Position;
import util.TargetStrategy;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class FireFighter extends Extinguisher {


    private final TargetStrategy targetStrategy = new TargetStrategy();


    public FireFighter(Position position){
        super(position);
        element = ModelElement.FIREFIGHTER;
    }


    public List<Position> update(Board<List<ModelElement>> firefighterBoard){
        List<Position> modifiedPositions = new ArrayList<>();

        Position currentPosition = this.getPosition();
        Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), firefighterBoard.getNeighbor().getNeighbors());

        this.setPosition(newPosition);
        modifiedPositions.add(currentPosition);
        modifiedPositions.add(newPosition);

        extinguish(firefighterBoard,newPosition);

        for (Position neighbor : firefighterBoard.getNeighbor().getNeighbors().get(newPosition)) {
            extinguish(firefighterBoard,neighbor);
            modifiedPositions.add(neighbor);
        }

        return modifiedPositions;
    }

}